Il miglior metodo di compressione?


53

Voglio comprimere una cartella da 16 GB, ma qual è il metodo migliore? tar.gz? tar.bz2 rar? 7z? L'archivio sarebbe più piccolo se prima comprimessi in un metodo, quindi copiassi l'archivio compresso in una nuova cartella, quindi ricomprimessi in qualche altro metodo? Devo adattarlo a un DVD (output forse 8.5 GB, non ricordo) ma l'inserimento di "4370 MB" rende il file compresso parte di 2,5 GB.

A proposito, qual è il metodo di compressione predefinito su Ubuntu?

Risposte:


70

L'impostazione predefinita è gz. I migliori risultati con cui ottengo 7zperò.

Ecco i risultati per un contenitore virtualbox da 1,4 Gb:

inserisci qui la descrizione dell'immagine

Migliore compressione - dimensione in MB:

7z 493
rar 523
bz2 592
lzh 607
GT 614
Z 614
zip 614
.arj 615
lzo 737
zoo 890

fonte

inserisci qui la descrizione dell'immagine

Installare

 sudo apt-get install p7zip-full

Grazie, ho già installato 7z e rar tramite Software Center. Proverò con 7z.
Amanda,

1
Da dove provengono questi risultati? Per ogni algoritmo, il rapporto di compressione e la velocità dipendono molto da ciò che stai cercando di comprimere. Prova a comprimere alcuni dati provenienti da /dev/urandom: otterrai risultati diversi in ogni tentativo. Oppure prova /dev/zero: bzip2 è il vincitore (per il rapporto).
Andrea Corbellini,

1
@AndreaCorbellini il link è nella risposta, quindi fai clic su di esso !? e come ho detto: è basato su un contenitore 1.4 virtualbox. Sono d'accordo che la compressione dipende molto da quali file sono, ma da alcuni anni di esperienza 7z sembra essere migliore per i file che tendo di avere (principalmente software e file di dati binari)
Rinzwind

1
@Rinzwind: mi dispiace davvero, non ho visto il link Fonte .
Andrea Corbellini,

1
@AndreaCorbellini è ok;) speriamo che Amanda riporti i risultati: +
Rinzwind

14

Questa domanda è molto antica, ma forse qualcuno trova utile questa soluzione:

Usa rzip, dopo tar. Comprime dapprima blocchi di dati di grandi dimensioni da 900 MB utilizzando un metodo dizionario, quindi passa i dati ripuliti a bzip2. È molto più veloce degli altri potenti strumenti di compressione ( bzip2, lzma) e alcuni file comprime anche meglio di bzip2o lzma.

Sì, gzè lo strumento di compressione predefinito su Linux. È veloce e nonostante la sua età dà ancora ottimi risultati nella compressione di file di testo come il codice sorgente. Un altro strumento standard è bzip2, sebbene sia molto più lento.

Aggiunta: lrzip è più recente ed estende il principio di rzip. Supporta persino dimensioni di blocco illimitate e una scelta di metodi di compressione (LZMA, Bzip2, Gzip, LZO, ZPAQ o nessuno). LZMA è lo standard. Per il backup o se condividi molti dati con altri utenti Linux / BSD, può essere davvero utile.


Penso che intendevi blocchi da 900 kB? 900 MB sarebbero un po 'grandi ...
Byte Commander

1
In realtà sono 900 MB. Vedi en.wikipedia.org/wiki/Rzip
user258532

2

Opto per a LZMA. Ha un overhead di byte minimo e un forte rapporto di compressione. Confronto tra ZIP e LZMA: ho generato due file seq.txtcon codice PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[$i%10].($i%10==9 ? "\n":""); file_put_contents('seq.txt', $str);

che contiene blocchi ripetitivi di 0..9 cifre ~ 1Mb di dati e rnd.txtcon codice PHP

$s = '0123456789'; $str = ''; for ($i=0; $i < 1000000; $i++) $str .= $s[rand(0,9)].($i%10==9 ? "\n":""); file_put_contents('rnd.txt', $str);

che contiene blocchi casuali di 0..9 cifre ~ 1 Mb di dati.

Risultati di compressione:

  • seq.txt, rnd.txt - 1100000 byte
  • seq.txt.zip - 2502 byte
  • rnd.txt.zip - 515957 byte
  • seq.txt.lzma - 257 byte
  • rnd.txt.lzma - 484939 byte

Rapporto di compressione:

  • ZIP -> "seq.txt" -> 99.772%
  • ZIP -> "rnd.txt" -> 53.094%
  • LZMA -> "seq.txt" -> 99.976%
  • LZMA -> "rnd.txt" -> 55.914%

Quindi LZMA ha compresso i dati sequenziali dello 0,2% in modo più efficace rispetto a ZIP
e i dati casuali il 2,8% in modo più efficace rispetto a ZIP.

Sicuramente LZMA vince!

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.