Beste Kompressionsmethode?

53

Ich möchte einen 16-GB-Ordner komprimieren, aber welche Methode ist die beste? tar.gz? tar.bz2 rar? 7z? Wäre das Archiv kleiner, wenn ich es zuerst in einer Methode komprimiert, dann in einen neuen Ordner kopiert und dann in einer anderen Methode erneut komprimiert hätte? Ich muss es passend für eine DVD machen (Ausgabe vielleicht 8,5 GB, weiß nicht mehr), aber mit "4370 MB" wird die komprimierte Datei zu einem 2,5-GB-Teil.

BTW, was ist die Standard-Komprimierungsmethode unter Ubuntu?

Amanda
quelle

Antworten:

70

Die Standardeinstellung ist gz. Die besten Ergebnisse bekomme ich allerdings mit 7z.

Hier sind die Ergebnisse für einen 1,4-Gbit-Virtualbox-Container:

Bildbeschreibung hier eingeben

Beste Komprimierung - Größe in MB:

7z 493
rar 523
bz2 592
lch 607
gz 614
Z 614
Reißverschluss 614
.arj 615
lzo 737
Zoo 890

Quelle

Bildbeschreibung hier eingeben

Installieren

 sudo apt-get install p7zip-full
Rinzwind
quelle
Danke, ich habe 7z bereits installiert und rar über das Software Center. Ich werde es mit 7z versuchen.
Amanda
1
Woher kommen diese Ergebnisse? Bei jedem Algorithmus hängen das Kompressionsverhältnis und die Geschwindigkeit stark davon ab, was Sie komprimieren möchten. Versuchen Sie, einige Daten zu komprimieren, die von stammen /dev/urandom: Sie erhalten bei jedem Versuch unterschiedliche Ergebnisse. Oder versuchen Sie /dev/zero: bzip2 ist der Gewinner (für das Verhältnis).
Andrea Corbellini
1
@ AndreaCorbellini der Link ist in der Antwort, also klicken Sie darauf !? und wie gesagt: es basiert auf einem 1.4 virtualbox container. Ich stimme zu, dass die Komprimierung stark von den Dateien abhängt, aber nach einigen Jahren Erfahrung scheint 7z besser für die Dateien zu sein, die ich tendenziell habe (hauptsächlich Software- und Binärdatendateien)
Rinzwind
1
@Rinzwind: Es tut mir leid, ich habe nicht die siehe Quelle - Link.
Andrea Corbellini
1
@ Andrea Corbellini es ist ok;) Hoffen wir, Amanda meldet die Ergebnisse zurück: +
Rinzwind
14

Diese Frage ist sehr alt, aber vielleicht findet jemand diese Lösung nützlich:

Verwenden Sie rzipnach tar. Es komprimiert zunächst 900 MB große Datenblöcke mit einer Dictionary-Methode und übergibt dann die bereinigten Daten an bzip2. Es ist viel schneller als die anderen starken Komprimierungswerkzeuge ( bzip2, lzma) und einige Dateien werden sogar besser komprimiert als bzip2oder lzma.

Ja, gzist das Standardkomprimierungsprogramm unter Linux. Es ist schnell und liefert trotz seines Alters immer noch sehr gute Ergebnisse beim Komprimieren von Textdateien wie Quellcode. Ein weiteres Standardwerkzeug ist bzip2, obwohl es viel langsamer ist.

Zusatz: lrzip ist neuer und erweitert das Prinzip von rzip. Es werden sogar unbegrenzte Blockgrößen und eine Auswahl von Komprimierungsmethoden (LZMA, Bzip2, Gzip, LZO, ZPAQ oder keine) unterstützt. LZMA ist der Standard. Für Backups oder wenn Sie viele Daten mit anderen Linux / BSD-Benutzern teilen, kann dies sehr praktisch sein.

user258532
quelle
Ich denke du meintest 900 kB Blöcke? 900 MB wären ein bisschen groß ...
Byte Commander
1
Es ist eigentlich 900 MB. Siehe en.wikipedia.org/wiki/Rzip
user258532
2

Ich entscheide mich für eine LZMA. Es hat den geringsten Byte-Overhead und ein starkes Komprimierungsverhältnis. Vergleich zwischen ZIP und LZMA: Ich habe zwei Dateien seq.txtmit PHP-Code generiert

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

Das enthält sich wiederholende Blöcke mit 0..9 Ziffern ~ 1 MB Daten und rnd.txtmit PHP-Code

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

Das enthält zufällige Blöcke mit 0..9 Ziffern ~ 1 MB Daten.

Komprimierungsergebnisse:

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

Kompressionsrate:

  • ZIP -> "seq.txt" -> 99,772%
  • ZIP -> "rnd.txt" -> 53.094%
  • LZMA -> "seq.txt" -> 99,976%
  • LZMA -> "rnd.txt" -> 55,914%

Somit hat LZMA sequentielle Daten um 0,2% effektiver komprimiert als ZIP
und Zufallsdaten um 2,8% effektiver als ZIP.

Mit Sicherheit gewinnt LZMA!

Agnius Vasiliauskas
quelle