Esiste un programma di compressione o archiviazione per Windows che esegue anche la deduplicazione? [chiuso]


12

Sto cercando un programma di archiviazione in grado di eseguire la deduplicazione (dedupe) sui file che vengono archiviati. Dopo aver decompresso l'archivio, il software ripristinava tutti i file rimossi durante il processo di compressione.

Finora ho trovato:

Qualcuno a conoscenza di altri?

Questa sarebbe probabilmente una fantastica aggiunta a 7-zip.

Risposte:


12

Quasi tutti gli archivi moderni fanno esattamente questo, l'unica differenza è che si riferiscono a questo come a un archivio "solido", poiché in tutti i file vengono concatenati in un singolo flusso prima di essere inviati all'algoritmo di compressione. Ciò è diverso dalla compressione zip standard che comprime ogni file uno per uno e aggiunge ogni file compresso all'archivio.

7-zip per sua stessa natura raggiunge efficacemente la deduplicazione. 7-Zip, ad esempio, cercherà i file, li ordinerà in base a tipi e nomi di file simili e quindi due file dello stesso tipo e dati verranno posizionati fianco a fianco nel flusso andando agli algoritmi del compressore. Il compressore vedrà quindi molti dati che ha visto di recente e quei due file vedranno un grande aumento dell'efficienza di compressione rispetto alla compressione dei file uno per uno.

Linux ha visto un comportamento simile per molto tempo attraverso la prevalenza del loro formato ".tgz" (o ".tar.gz" per usare la sua forma completa) poiché tar sta semplicemente fondendo tutti i file in un singolo flusso (anche se senza ordinamento e raggruppamento di file) e quindi compressione con gzip. Ciò che manca è l'ordinamento che sta facendo 7-zip, che può ridurre leggermente l'efficienza ma è ancora molto meglio del semplice blob insieme di molti file compressi individualmente come fa zip.


impara qualcosa di nuovo ogni giorno. Non mi ero reso conto che zip comprimesse ogni file separatamente ma dopo aver eseguito un paio di test sul mio computer mi sono reso conto che in effetti hai ragione. molto interessante, grazie!
CenterOrbit,

7ip fa un buon lavoro di deduplicazione, ma è anche progettato per comprimere i dati non duplicati in modo efficiente e utilizza molta CPU e memoria per raggiungere questo obiettivo, il che lo rende un modo molto inefficiente per deduplicare i dati. Se comprimi due file identici da 100 MB, ci vorrà un sacco di problemi per provare a comprimere il primo file in modo efficiente e solo allora (se la dimensione del dizionario è abbastanza grande) comprime il secondo file come duplicato del primo.
mwfearnley,

.tar.gzGzip non comprime solo blocchi relativamente piccoli (come 900 KB) alla volta completamente indipendenti l'uno dall'altro e quindi non ha la capacità di deduplicare due file grandi ma identici (ad esempio, un paio di immagini da 4 MB)?
binki,

Ad esempio, 7z è riuscito a eseguire la deduplicazione tra file di grandi dimensioni ma gzip non lo era: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki

4

Non ha senso utilizzare la deduplicazione con un processo di compressione. La maggior parte degli algoritmi di compressione creano quello che viene chiamato un "dizionario" che cercherà i bit di dati più comuni o riutilizzati. da lì farà semplicemente riferimento alla voce del dizionario invece di riscrivere l'intera "parola". In questo modo la maggior parte dei processi di compressione ha già eliminato i dati ridondanti o duplicati da tutti i file.

Ad esempio, se prendi un file da 1 MB e lo copi 100 volte con un nome diverso ogni volta (per un totale di 100 MB di spazio su disco), quindi lo comprimi in un file 7zip o zip, avrai un file zip totale da 1 MB. Questo perché tutti i tuoi dati sono stati inseriti in una voce del dizionario e referenziati 100 volte, occupando pochissimo spazio.

Questa è una spiegazione molto semplice di ciò che accade, ma il punto è ancora ben trasmesso.


1
Poiché le dimensioni del dizionario sono molto limitate per la maggior parte degli archivi di compressione, ciò non è valido nell'uso quotidiano. Prova questo con file da 50 MB e la dimensione compressa raddoppierà con due file di input identici.
Chaos_99,

1
I file zip, a differenza dei file 7zip, non supportano la deduplicazione tra i file. I file zip comprimono e memorizzano ogni file separatamente, quindi i file duplicati verranno semplicemente archiviati più volte nell'archivio.
mwfearnley,

1
Mentre 7zip supporta la deduplicazione tra i file, è progettato per trovare e comprimere corrispondenze molto più brevi. I suoi algoritmi sono molto più lenti e richiedono più memoria rispetto a ciò che è potenzialmente possibile per qualcosa progettato per trovare la duplicazione dei dati su larga scala.
mwfearnley,

4

7-Zip, zip, gzip e tutti gli altri archivi non rilevano aree identiche distanti tra loro, come pochi megabyte o superiori, all'interno dello stesso file o posizionate in posizioni diverse all'interno di file diversi.

Quindi no, i normali archivisti non si esibiscono così come exdupe e altri, in alcuni casi. Puoi vederlo se comprimi alcune macchine virtuali o altre cose.


1
Questo è corretto. Non appena il volume di dati univoci supera le dimensioni del dizionario dei compressori, la compressione diminuisce. exdupe offre prestazioni superiori per grandi volumi di dati.
usr
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.