Quale formato di archivio / compressione?


8

Zip, Rar, 7z, Gzip, BZip2, Tar ecc. Ho sentito che 7z è il sapore del mese, perché? È meglio per tutte le situazioni o ci sono scelte migliori per situazioni specifiche.

O forse l'archiviatore di file effettivo, ad esempio WinZip, WinRar, 7Zip ecc. (Al contrario del formato) ha un effetto maggiore?

Nella tua risposta potresti descrivere quale tipo di compromesso di velocità / compressione utilizza il tuo formato menzionato.

Fornisci collegamenti a tutti i test empirici che supportano la tua risposta.

Sfondo: ho bisogno di eseguire il backup di un indice di ricerca personalizzato che crea circa 3000 file relativamente piccoli (meno di 10 MB), ognuno contenente molti dati ripetitivi.

(Come al solito Wikipedia ha un articolo pertinente, ma la sezione sul confronto delle prestazioni è breve.)

Grazie

Risposte:


14

Compress, Gzip, Bzip, Bzip2 non sono per l'archiviazione di più file. Comprimono solo un singolo file. Per l'archiviazione vengono generalmente utilizzati con TAR. Il problema con TAR è che non ha una tabella di indice . È utile solo se hai intenzione di ripristinare il tutto . Se ti aspetti di dover ripristinare solo un numero limitato di file selezionati, dimentica TAR. Per ottenere l'ultimo file tar.gzo tar.bz2archivio, devi decomprimerlo ed elaborarlo tutto . Nel caso di zip, rar o 7-zip, andrà alla tabella dell'indice, salterà alla posizione pertinente dell'archivio ed elaborerà solo i file pertinenti.

Ok, TAR è fuori, quindi ti lascia con ZIP, RAR e 7-ZIP. Di questi tre, ZIP è il più proliferato, quasi tutto lo supporta, molte applicazioni hanno il supporto integrato. Ed è veloce. D'altra parte, 7-ZIP è anche portatile, la libreria è LGPL e ha tassi di compressione molto migliori rispetto agli altri due, il cui costo è un consumo maggiore di CPU. RAR è un vero perdente lì, né una grande compressione, né realmente portatile, né veloce.

EDIT: sembra che l'opzione migliore sarebbe 7-ZIP, ma con il metodo di compressione bzip2. In questo modo non avrai gli svantaggi di TAR, ma potrai comunque sfruttare il supporto multi-core di bzip2. Vedi questo articolo


Informazioni eccellenti, grazie. Avevo visto TAR mentre giocavo con Linux ma non l'avevo mai visto da vicino.
Ash,

Dovrei dissentire su rar. La compressione è buona (rispetto a gzip atleast) e la velocità sembra buona nei miei casi d'uso. Una cosa che mi piace di rar è che può gestire contenuti in streaming o singoli file e ti permette di includere automaticamente un timestamp nel nome del file ...
Dscoduc

10

Lettura consigliata:

Compressione dei file nell'era multi-core (Jeff Atwood aka CodingHorror, febbraio 2009)

Ho giocato ancora un po 'con la compressione dei file, poiché ogni giorno generiamo alcuni file di backup molto grandi su Stack Overflow.

Stiamo utilizzando l'ultima versione a 64 bit di 7zip (4.64) sul nostro server di database. Non sono un grande fan di più del dual core sul desktop, ma è un gioco da ragazzi per i server. Più core della CPU sono più belli! Questo server ha due CPU quad-core, per un totale di 8 core, ed ero un po 'scoraggiato nello scoprire che né RAR né 7zip sembravano fare molto uso di più di 2.

Tuttavia, anche se utilizza solo 2 core per comprimere, l'algoritmo 7zip è incredibilmente efficace e si è evoluto negli ultimi anni per essere rispettabilmente veloce. Prima raccomandavo RAR su Zip, ma data la maggiore efficienza di 7zip e il fatto che sia gratuito e RAR no, ora è la scelta logica.

E per quanto riguarda gli algoritmi:

Perché bzip2 è in grado di funzionare molto più velocemente di 7zip? [...] Bzip2 utilizza più di 2 core CPU per parallelizzare il suo lavoro.


Grazie per il link Sappiamo sicuramente che l'opinione di Jeff si basa sull'esperienza della vita reale!
Ash,

4

Non si tratta solo di efficienza e velocità. Sicuramente sono importanti e puoi guardare i benchmark per quelli e scegliere saggiamente tra le opzioni (anche se consiglierei un semplice benchmarking tuo con i tuoi dati sul tuo server). Ma l'archiviazione porta inevitabilmente ad accedere nuovamente ai tuoi dati (altrimenti perché non cancellarli?). O forse anni dopo, non sarai affatto tu ad accedere ai dati, ma a qualcuno di terze parti. Scegli qualcosa che ci sarà quando devi accedere ai dati e qualcosa che le persone riconoscono. Personalmente uso 7zip, ma quando archivio file di altri potrebbe aver bisogno di usare zip. Lo sanno, molti strumenti possono gestirlo. Potrebbe non essere altrettanto veloce o abbastanza piccolo, ma aiuta con il fattore umano.


Buon punto. Questo indice di ricerca estrarrà i dati direttamente da determinati file compressi. Ecco perché sono interessato se ci sono formati che offrono prestazioni di compressione / decompressione configurabili. Quindi sto guardando più all'aspetto della compressione che all'archiviazione per l'aspetto futuro.
Ash,

3

lzma sembra funzionare molto bene sia nel rapporto di compressione che nella velocità.

Nei seguenti benchmark http://tukaani.org/lzma/benchmarks l'impostazione più veloce per lzma ha dato tempi di compressione considerevolmente più veloci dell'opzione bzip2 più veloce, pur offrendo una compressione migliore dell'opzione bzip2 più lenta:

    ratio bzip2 lzmash
    più veloce 35,8% 31,7%       
    più lento 34,0% 25,4%

    time bzip2 lzmash  
    più veloce 1m 26s 0m 58s  
    il più lento 2m 37s 12m 20s

    * Compressione dell'installazione completa di OpenOffice.org 1.1.4 per Linux (203 MB) 

Funziona particolarmente bene con i dati binari, ma penso di aver letto alcuni parametri di riferimento di testo semplice in cui bzip2 ha superato.

Vale la pena leggere la pagina man di lzma:

   lzma  provides  notably  better compression ratio than bzip2 especially
   with files having other than plain text content. The other advantage of
   lzma  is fast decompression which is many times quicker than bzip2. The
   major disadvantage is that achieving  the  highest  compression  ratios
   requires  extensive  amount of system resources, both CPU time and RAM.
   Also software to handle LZMA  compressed  files  is  not  installed  by
   default on most distributions.

Neanch'io fino alla settimana scorsa, quando qualcuno mi ha consigliato su una delle mie domande di errore del server. Sembra impressionante, vale la pena indagare sulle prestazioni con un testo semplice, se lo userai per quello.
Guy C,

LZMA è il nome dell'algoritmo utilizzato in 7-zip.
Vartec,

2

Dai un'occhiata a questa voce di Wikipedia . Verso il fondo, "Confronto di efficienza". Ti darà percentuale di compressione e tempo impiegato, approssimativamente. Tutti questi numeri varieranno (in base alla velocità) in base alla velocità della macchina utilizzata, alla quantità di memoria, ecc.

Più benchmark di compressione:


Grazie, ma l'ho letto e ho pensato che fosse un po 'breve (vedi il mio punto nella domanda). Conosci test più dettagliati in scenari più diversi?
Ash,

Aggiunti un paio di collegamenti che spero possano fornire ulteriori informazioni.

2

Confrontando zip, 7z, rar con due casi

Dipende da cosa stai comprimendo esattamente, ma in generale 7z fa un uso migliore di più processori e il formato di compressione 7z stesso produce una compressione maggiore rispetto a zip e talvolta superiore a rar (sebbene rar e 7z siano quasi equivalenti, ma rar non lo è 'libero ...)

I miei test di alcuni mesi fa hanno dato questi risultati:

Compressione di un singolo file di database di accesso da 10 MB:

Database.mdb 17,240,064 (original)
Database.zip  1,634,794 (Regular zip, 11:1)
Database.rar    262,212 (RAR compression, 66:1)
Database.7z     195,678 (7-zip compression, 88:1)

Comprimendo una cartella contenente oltre novemila file di vario tipo (903.488 KB) e ottenuto quanto segue (questa è una combinazione di codice sorgente e tutti gli strumenti che lo circondano per lo sviluppo del software):

Type   Time  Size (KB)  Compression
ZIP    7:28   247,529   3.7:1
RAR    8:15   222,232   4.1:1
7z    10:49   181,633   5.0:1

Per motivi di tempo, questo era su un Core2 Duo, 2 GHz, 1 GB di RAM e un disco rigido economico.

Quindi 7z ha dato un sostanziale miglioramento nel rapporto di compressione nei due casi che ho testato sopra e oltre zip, e persino migliorato su rar, ma 7z era sicuramente più lento. Non significativamente, ma abbastanza per essere notato.

-Adamo


Bei test. Quella compressione MDB è enorme. Ricevo solo 4 a 1 sui file di parole di indice binario da 100k su cui ho provato. Immagino che mostri quanto sia importante testare usando file / dati simili a quelli che il tuo sistema utilizzerà.
Ash,

Sì, i file MDB sono tutti lanugine e nessuna sostanza. Un file binario otterrà meno (perché usa tutti gli 8 bit, mentre i file di testo usano poco più di 6 bit) e le probabilità sono buone non ci sono molti duplicati in esso. Sempre importante testare però. Potresti avere più fortuna giocando con le impostazioni di compressione - a volte puoi ottimizzarlo per l'uso e migliorare rispetto alle impostazioni standard fornite.
Adam Davis,

0

Ho appena installato dar (ma non ho ancora avuto la possibilità di giocarci). È simile a tar con compressione gzip o bzip2, con la possibilità aggiuntiva di dividere l'archivio in più parti e calcolare la parità in modo che se una o più parti sono danneggiate, può essere ricostruita dai file di parità.

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.