DD, potřeboval bych na linux ubuntu v adresáři home vyhledat duplicitní soubory, lze k tomu využít nějaký balíček nebo jen příkaz? Dík
ODPOVĚĎ
Ahoj,
k hledání duplicitních souborů na GNU/Linux přes bash použij fdupes - je standardně v repositářích.
Takto vyhledáš duplicitní soubory v adresáři /home včetně podadresářů :fdupes -r /home
Takto vyhledáš duplicitní soubory mezi dvěma adresáři /home/user a /mnt/backup včetně podadresářů :fdupes -r /home/user /mnt/backup
S parametrem d rovnou můžeš duplicitní soubory mazat a parametrem S zobrazíš velikost:fdupes -rdS /home
Výsledek pak je, že se ti to takto zeptá, který soubor zachovat (např. níže bylo nalezeno 199 duplicit):
Set 1 of 199, preserve files [1 - 2, all] (1848059712 bytes each).
(1=zachovat první, 2=zachovat druhý, all=zachovat oba)
To samé s tím, že se tě nebude fdupes ptát zda chceš soubor smazat:fdupes -rdN /home
Další možností je nástoj diff, takto porovnáš dva soubory a smažeš duplikát:diff soubor1 soubor2 && rm soubor2
Pokud preferuješ grafické rozhraní, tak použij fslint.
Další alternativy jsou:
rdfind (CLI)
fslint (GUI)
dupeGuru (GUI)
ODPOVĚĎ
Potřeboval jsem pak ještě nějaké ultra rychlé hledání (možných) duplicitních souborů tak, aby se nedělal sum (hash, md5 atd), což strašně trvá. Pro tento účel jsem chtěl hledat jen duplicitní soubory se stejnou velikostí, což je hned. Našel jsem k tomuto tento příkaz a funguje bezvadně = vrátí jen soubory, které mají stejnou velikost:
find /cesta/adresar -type f -printf "%10s\t%p\n" | sort --numeric | uniq --repeated --check-chars=10
Případně duplicity dle shodného názvu:find /cesta/adresar -mindepth 1 -printf '%h %f\n' | sort -t ' ' -k 2,2 | uniq -f 1 --all-repeated=separate | tr ' ' '/'
Komentáře (0)
Přidat komentář