Modi per deduplicare i file


10

Voglio semplicemente eseguire il backup e l'archiviazione dei file su più macchine. Sfortunatamente, i file hanno alcuni file di grandi dimensioni che sono lo stesso file ma memorizzati in modo diverso su macchine diverse. Ad esempio, alcune centinaia di foto possono essere copiate da un computer all'altro come backup ad hoc. Ora che voglio creare un repository comune di file, non voglio più copie della stessa foto.

Se copio tutti questi file in una singola directory, esiste uno strumento che può passare attraverso e riconoscere i file duplicati e darmi un elenco o addirittura eliminare uno dei duplicati?


Risposte:


3

Crea un md5sum di ogni file, i duplicati md5sums suggeriscono (ma non garantiscono) i file duplicati.


1
fanno fortemente "suggerire", comunque :) ..e se i file hanno le stesse dimensioni, la probabilità che il suggerimento sia corretto è eccezionalmente alta
warren

2

È possibile utilizzare dupemerge per trasformare i file identici in hardlink. Ci vorrà molto tempo su un set di file di grandi dimensioni però. Gli hash SHA (o MD5) dei file funzioneranno quasi sicuramente più velocemente, ma dovrai fare più lavoro per trovare i duplicati. La probabilità di una collisione accidentale è così bassa che in realtà è possibile ignorarla. (In effetti, molti prodotti di deduplicazione lo fanno già.)

La tua scommessa migliore per gestire foto e musica è quella di ottenere strumenti su misura per trovare duplicati di quegli elementi in particolare. Soprattutto perché potresti non avere file identici a livello binario dopo che sono entrati in gioco elementi come tag o ritagli o differenze di codifica. Avrai bisogno di strumenti in grado di trovare le foto che "sembrano" uguali e la musica che "suona" lo stesso anche se sono state apportate piccole modifiche ai file.


1
hardlinkè molto veloce (ci sono voluti 200 secondi per i file 1.2M, 320GB)
Marcel Waldvogel,

1

Bene, se hai la possibilità, puoi impostare un filesystem deduplicante e mettere i tuoi backup su quello. Questo non solo deduplica interi file, ma anche pezzi di file simili. Ad esempio, se si dispone dello stesso JPEG in più punti, ma con tag EXIF ​​diversi su ciascuna versione, un file system deduplicato memorizzerebbe i dati immagine solo una volta.

I file system di deduplicazione includono lessfs, ZFS e SDFS.


1
Non posso parlare di deduplicazione su SDFS o lessfs, ma Dedupe su ZFS non funziona in questo modo. Controlla a livello di blocco, quindi i file identici saranno probabilmente contrassegnati per la deduplicazione, ma probabilmente i file con un'intestazione diversa non lo faranno. Inoltre, i file più piccoli della dimensione del tuo record ZFS (il valore predefinito è 128 KB) possono essere raggruppati in un singolo blocco insieme, quindi potrebbero non beneficiare della dedupe.
not

Il filesystem deduplicato (zfs o btrfs) consente di risparmiare spazio solo sull'host di backup. Non salva la quantità di dati trasferiti. È consigliabile calcolare alcuni hash per i file e inviarli all'host di backup. quando dice "I have it", viene eseguito il backup per quel file. Questo è implementato su software di backup (denaro) molto costoso. Non ne ho mai sentito parlare su open source. Ma forse è implementato ora, chissà :)
Znik

@Znik rsync --link-destè tuo amico se vuoi risparmiare anche in lettura / trasferimento. Una semplice introduzione è qui: netfuture.ch/2013/08/…
Marcel Waldvogel,

funziona testando gli inode assegnati a un file. ma quando la deduplicazione è nascosta, ad esempio nel filesystem squashfs, allora rsync non può verificarlo e trasferirà gli stessi dati molte volte.
Znik,

0

Quando stavo facendo questo genere di cose, ho imparato che è molto più coinvolgente / efficiente in termini di tempo passare in rassegna i file nel tempo libero, nel corso di un paio di settimane. Puoi distinguere le cose meglio del tuo computer.

Se non sei d'accordo, allora suggerisco EasyDuplicateFinder . Come ho detto sopra, però, ci vorrà molto tempo, diciamo, circa un giorno per 5 GB di file.

E in un'altra nota, Crashplan fa quello che stavi facendo prima, ma in modo molto più organizzato, senza problemi di versione.


0

Un'altra possibilità, presumendo che le macchine di cui stai eseguendo il backup lo supporteranno, è quella di utilizzare qualcosa del genere rsync.

Se si rsyncpassa da A a B, quindi da C a B, quindi da D a B, ecc., I duplicati esatti (ovvero, per nome file) verranno eliminati (e sincronizzati tra le macchine di cui si sta eseguendo il backup).

Se non li vuoi sincronizzare tutti tra loro, tuttavia, questo non è il modo migliore di procedere.


0

Per i file di immagine, utilizzare findimagedupes . È anche confezionato in debian .


findimagedupes è per foto o grafica, forse convertito da un formato all'altro. foto (a casa) è solo un esempio in questione. Potrebbe essere qualsiasi altro file di grandi dimensioni.
Znik,

0

I collegamenti fisici eseguono la deduplicazione solo se l'intero file è identico. Se le intestazioni (EXIF, ID3, ...) o i metadati (proprietario) differiscono, non verranno collegati.

Quando hai la possibilità di utilizzare un file system con supporto per la deduplicazione a blocchi (ZFS, btrfs, ...), utilizzalo invece. Sono molto affezionato al supporto del dedup offline (aka batch ) di btrfs, che supporta la deduplicazione a livello di estensione e non consuma costantemente enormi quantità di memoria (come il dedup online ZFS).

La deduplicazione ha anche il vantaggio che i file possono essere modificati dall'utente senza che l'altra copia se ne accorga (che potrebbe non essere applicabile nel tuo caso, ma in altri).

Vedi https://btrfs.wiki.kernel.org/index.php/Deduplication per una discussione eccellente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.