Linux - jak vyhledat duplicitní soubory

Linux - jak vyhledat duplicitní soubory

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 ' ' '/'
Jak se ti článek líbil?

Komentáře (0)

Přidat komentář