Portál AbcLinuxu, 16. dubna 2024 10:32


Dotaz: efektivní hledání duplikátních souborů

25.7.2014 23:08 lertimir | skóre: 64 | blog: Par_slov
efektivní hledání duplikátních souborů
Přečteno: 1154×
Odpovědět | Admin
Máme nějaký nástroj na efektivní hledání duplikátních souborů. Zatím jsem narazil jen na konstrukce typu
find -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 33 | cut -c 35-
případně programy fdupes a fslint. Což není, co bych si představoval. Hledám program, který by na jméno souboru odpověděl jestli je sám nebo má duplikáty podobně efektivním způsobem jako je hledání locate. Představoval bych si to podobně jako locate ve dvou částech. první pravidelný univerzální běh spočte hash a vytvoří DB s primárním klíčem hash a value bude seznam souborů, které tento hash mají. Pak by se dalo rozumně rychle dotazovat jednak na duplikát k souboru a také na to jaké máme soubory s duplicitou 2, 3 atd.

Řešení dotazu:


Nástroje: Začni sledovat (3) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.7.2014 23:29 jadd | skóre: 34 | blog: Greenhorn
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
gthumb?
25.7.2014 23:58 pipi
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
+1
26.7.2014 00:48 jadd | skóre: 34 | blog: Greenhorn
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
To patří tvůrcům, děkujem;) ovšem jestli je to řešení i pro tazatele, má vyšší prioritu.
26.7.2014 01:11 jadd | skóre: 34 | blog: Greenhorn
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Ještě pro ilustraci, http://www.e-ott.info/2012/08/11/jak-najit-duplicitni-obrazky-a-odstranit-je-pomoci-gthumb-a-geeqie/gthumb-duplicity-vysledky

Používá se obsah ale jestli byte-to-byte nebo hash spolehlivější než md5, to nevím. Mě to vždy našlo spolehlivě, přes počáteční nedůvěru.
26.7.2014 11:20 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
No ne tak zcela. spíše hledám něco, co by spočetlo jen hashe a nemuselo vytvořit nějakých cca 2 000 000 thumbnailů. Navíc moje prostředí je KDE, tedy částečně bych to mohl vyřešit tím že vše zařadím do sbírek. ale to kde hledám duplicity nejsou to moje obrázky, ale třeba sbírka komixů a tím zahlcením digikamové databáze by se zpomalila práce s databází ve všech případech. Navíc další potenciální duplicity jsou v pdf a ppt souborech, což nevyřeší manager obrázků.
26.7.2014 11:26 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
ZFS :-)
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Petr Tomášek avatar 31.7.2014 17:44 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
A jak pomůže ZFS debordelizovat souborový systém? To je hezké, že to ZFS uloží jenom jednou, ale virtuálně ten bordel pro uživatele zůstane...
multicult.fm | monokultura je zlo | welcome refugees!
Pavel 'TIGER' Růžička avatar 26.7.2014 11:38 Pavel 'TIGER' Růžička | skóre: 53
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nebudu vypisovat již jednou napsané.
27.7.2014 00:56 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Z toho odzaku jsem vycházel, než jsem se ptal. Už jsem spustil fdupes, pak mi došlo, že tak jako updatedb se to prostě dělat nedá. Protože při hledání duplicit musí se přečíst celý obsah disků, nejen adresářová struktura, což jsou u mne terabyty. Zatím fdupes běží 10 hodin a ještě není ve 1/4.
27.7.2014 00:57 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
tedy odkazu. :-)
27.7.2014 01:11 jadd | skóre: 34 | blog: Greenhorn
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
víš o tom že má volbu DIRECTORY atd.?
27.7.2014 02:01 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Jo volba fdupes -r dir1 dir2 .... Probírám jen to co je namountováno v /mnt a /windows ani /home neprojíždím, protože to mám na SSD a tam ty duplikáty jsou pro rychlou práci.
vandrovnik avatar 28.7.2014 10:15 vandrovnik | skóre: 21
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Když je to hledání dobře napsané, tak nemusí. Načte adresáře, srovná podle velikostí. Obsah souborů ho zajímá, jen když mají soubory shodnou velikost. A i pak lze číst po blocích a porovnávat, protože odlišnosti zpravidla budou i na začátku (nebude příliš běžné, aby u 100 GB souboru byl první rozdíl až někde v půlce apod.).
28.7.2014 18:10 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Samozřejmě vše musí přečíst jen u těch skutečně duplikátních. Obávám se že jich mám hodně. po dvou dnech je výpočet v polovině.
28.7.2014 21:38 axel
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Ze musi v pripade presne shody precist vsechno je asi zrejme. Takze pokud mas "terabyty" a je tam hodne shodnych, nemelo by te prekvapit, ze to bezi dlouho.
29.7.2014 21:08 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
To nepřekvapilo tak moc. Už běh doběhl a ukazuje se, že duplikátů mám mnohem více než jsem si myslel. Výsledný formát má tvar
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG

/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG

/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1846-St090085.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1846-St090085.JPG

/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/standa/PC090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky-zdroj/S3/PC090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_1_/1209-1845-St090084.JPG
/windows/zaloha_2/z_externiho/__Movie____/_STANDA_Argentina/Argentina-fotky/Argentina-fotky_2_/1209-1845-St090084.JPG

/windows/zaloha_2/Filmy/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi
/windows/zaloha_2/Filmy/video/Radek/nezpracovano/CFC-0012/DCIM/165CANON/MVI_6541.AVI
/mnt/crypted1/Foto/zpracovano/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi
/mnt/afx/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi
/mnt/basic/public/obrazky/obrazky/Photo_original/2006/norsko/avi/norsko-20111207_4403_1.avi
/windows/zaloha_2/foto_zazalohovat/backup_/cfc-0012/dcim/165canon/mvi_6541.avi

Tedy sada řádků s plnými názvy souborů, a každou skupinu stejných souborů odděluje jeden prázdný řádek. Soubor duplikátů je obrovský, takže ruční práce není možná. A pokouším se načíst, jak bych mohl dát dohromady script s následující funkcionalitou:
  1. Specifikuji adresář např /mnt/afx/obrazky/Photo_original a extenzi např. avi
  2. Skript se bude věnovat jen těm blokům duplikátů, v nichž najde soubor s specifikovanou počáteční cestou a extenzí.
  3. V příslušném bloku vezme všechny ostatní řádky přidá na jejich začátek "rm " a vloží je do souboru delete_duplicates.
  4. Pokud by se podařilo, aby současně vytvořil soubor duplicates_new, který by obsahoval původní soubor duplikátů s vyřazením těch bloků, které byly zpracovávány, dostal bych iterativní krok, který mi vytvoří přikaz, který převede situaci s nalezenými duplikáty ve stavu duplicates do stavu duplicates_new
  5. To, že někdy bych potřeboval, aby zbyly třeba dvě lokace umístění souborů už vyřeší grep -v /mnt/jiny/adresar na souboru delete_duplicates
Ale to první nevím, myslím si, že by to mohlo snad jít s awk nebo sed, ale neznám je. Nebylo by nějaké nakopnutí?
30.7.2014 14:06 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
To vyzerá na výstup z fdupes, a ten má aj parametre --delete a --noempty. Ale s ním by som narával opatrne, napríklad multivolume archívy RAR zvyknú mať rovnaký MD5 checksum.
30.7.2014 14:53 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Ano je to z fdupes, parametr --delete je k něčemu jen na jednoduché porovnání. v komplexnějším příkladu je třeba přesně specifikovat, které umístění nechat a které smazat a to v --delete není. (To, že multivolume archive má stejnou MD5 a přitom je různý velmi zpochybňuji. Sice na MD5 je možné vyrobit kolizi, ale dá to hodně práce.)
30.7.2014 19:26 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Ten argument delete som nepoužíval, radšej som to riešil ručne. Ale mal by biť popísaný.

A s tým multivolume rar? Nejednalo sa o kolíziu ale o archív ktorý sa dal rozbaliť v prípade ak sa jedna z napríklad desiatich diskiet poškodila. V zarovnaní bloku sa dali doplniť hluché miesta údajmi. Kedysi, dávno pradávno som to používal. A ešte pred časom sa mi dostal do rúk podobný archív, len bol sekaný na cca 100M.
30.7.2014 20:39 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
ten duplikátní soubor ze zpracování prostoru asi 10Tb má pře 1 500 000 řádků. ruční práce je vyloučena. Vzhledem k tomu že na dotaz nikdo nezareagoval tak to nějak vymyslím.

A k hashi. Pokud mají dva soubory stejný hash jsou stejné. Platí to samozřejmě až té míry, že pokud je v hash funkci chyba, tak je možné cíleně vyvolat záměrnou kolizi. A tuhle vadu MD5 sice má, ale to se pro náhodně zmodifikovaný archiv neprojeví. Pouze v možnosti cíleného kolizního útoku ala Wang nebo Klima.
31.7.2014 01:02 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Tak jsem splácal skript v perlu, který dělá přesně to, co jsem potřeboval.
31.7.2014 09:55 necojakolinux | skóre: 10
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
tak šup sem s ním ne ?
Petr Tomášek avatar 31.7.2014 18:53 Petr Tomášek | skóre: 39 | blog: Vejšplechty
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
To by mě taky zajímalo.
multicult.fm | monokultura je zlo | welcome refugees!
6.8.2014 23:16 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Napíšu jak se vrátím z dovolené. systém je teď vypnutý.
27.8.2014 16:54 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: efektivní hledání duplikátních souborů
Řešení jsem blogoval tady

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.