Soll ich die Komprimierung xz oder lzma verwenden?

29

Ich habe mich gefragt, seit ich in Ubuntu 10.10 die Möglichkeit habe, sowohl xz- als auch lzma-Archive zu erstellen. Soll ich zu xz wechseln?

http://en.wikipedia.org/wiki/Xz

http://en.wikipedia.org/wiki/Lzma

NightwishFan
quelle
Beachten Sie, dass es auch einen neueren lz- Archivtyp gibt , der seit dieser Diskussion eingeführt wurde. Stackoverflow.com/a/49456056/32453 Verwechseln Sie ihn also nicht mit dem lzmahier genannten :)
Rogerdpack

Antworten:

12

Dieser Benchmark bietet einige gute Informationen zu diesem Problem. Es scheint, dass LZMA ein etwas besseres Kompressionsverhältnis und eine etwas bessere Leistung als XZ aufweist, aber XZ wird im Allgemeinen aus praktischen Gründen bevorzugt (ich bin mir nicht sicher, was dies ist).

XZ ist eine Implementierung des lzma2-Algorithmus und kann 'nicht komprimierbare' Daten besser komprimieren:

lzma2 ist die Komprimierungsmethode des 7-Zip LZMA2-Kompressors. LZMA2 ist eine modifizierte Version von LZMA, die ein besseres Komprimierungsverhältnis für nicht komprimierbare Daten bietet (zufällige Daten vergrößern sich um 0,005% im Vergleich zu 1,35% beim ursprünglichen LZMA) und optional mehrere Teile großer Dateien parallel komprimieren kann, wobei die Komprimierungsgeschwindigkeit jedoch erheblich zunimmt mit einer möglichen Reduzierung des Kompressionsverhältnisses (siehe LZMANumBlockThreads). Wie LZMA kann es viel Speicher verbrauchen. siehe obige Tabelle. Wenn keine Komprimierungsstufe angegeben ist, beträgt die Standardeinstellung max.

( http://www.jrsoftware.org/ishelp/index.php?topic=setup_compression )

Sie sollten entweder OK sein.

dv3500ea
quelle
Haben Sie sich aus Neugier für einen entschieden?
dv3500ea
1
Eigentlich scheint es nach ein paar Tests so, als ob xz der richtige Weg sein wird. Es spart auch einiges an Komprimierung (manchmal 10 MB) bei Binärdateien über lzma.
NightwishFan
8
Das war keine angemessene Antwort in Bezug auf "OK mit entweder". Sogar zu dem Zeitpunkt, als er diese Frage stellte, war bekannt, dass .lzma-Dateien in naher Zukunft vollständig durch .xz ersetzt wurden. Der Autor von LZMA-Utils hat öffentlich erklärt, dass sie veraltet sind und ab 5.00 xz-utils verwenden. Die letzte Veröffentlichung von LZMA-Utils war der 30.07.2008, selbst als sie noch Jahre alt war. In Bezug auf die Komprimierung sind die Verbesserungen möglicherweise kein entscheidender Faktor. (ironischerweise für den Fall) Aber "politische" Gründe hätten ein wichtiger Grund sein müssen, XZ-Utils zu verwenden und keine neuen .lzma-Archive zu erstellen.
JM Becker
1
@ TechZilla Haben Sie darüber nachgedacht, Ihre Meinung als alternative Antwort zu veröffentlichen?
ændrük
1
Die praktischen Gründe für LZMA2 sind Multithreading-Unterstützung. Single-Threading-Leistung und Komprimierungsrate sind etwas geringer, aber bei einem System mit mehreren verwendeten Kernen wird erwartet, dass LZMA2 beim Dekodieren viel schneller ist.
Jonathan Baldwin
42

Ich bin nicht einverstanden mit @ dv3500eas Schlussfolgerung "OK mit beiden", da es unangemessen war. Sogar zum Zeitpunkt der Veröffentlichung war bekannt, dass .lzmaDateien vollständig durch ersetzt wurden .xz. Der Autor beider Utils hat öffentlich erklärt , Benutzer sollten auf XZ-Utils ≥ 5.00 umsteigen. Die letzte Veröffentlichung von LZMA-Utils war 2008-07-30 und wurde eingestellt.

LZMA Utils sind ältere Datenkomprimierungssoftware mit hoher Komprimierungsrate. LZMA Utils werden nicht mehr weiterentwickelt, obwohl kritische Fehler behoben werden können, solange keine großen Änderungen am Code erforderlich sind.

Benutzer von LZMA Utils sollten zu XZ Utils wechseln. XZ Utils unterstützen das .lzmavon LZMA Utils verwendete Legacy- Format und können auch die Befehlszeilentools von LZMA Utils emulieren. Dies sollte den Übergang von LZMA Utils zu XZ Utils relativ einfach machen.

Der bestimmende Faktor ist möglicherweise nicht die Komprimierung, obwohl dies ironischerweise für dieses Beispiel der Fall war. "praktische Gründe" sind ein selbstverständlicher und wichtiger Grund, XZ-Utils zu verwenden. Darüber hinaus .xzkönnen Sie im Format Komprimierungsalgorithmen und Filter angeben, sodass .xzDateien entweder LZMA oder LZMA2 verwenden können. Vermeiden Sie das Erstellen neuer .lzmaDateien. Sie werden als Legacy-Format betrachtet.

Selbst wenn es darum geht, LZMA-Utils in der Nähe zu halten: Nicht. XZ-Utils unterstützt ältere .lzmaDateien. Es gibt auch Wrapper für Skripte, die noch LZMA-Utils verwenden. Wenn all diese Gründe immer noch unzureichend waren, löschte Ubuntu alte lzma-utils aus seinem Repository.

JM Becker
quelle
1
"Der Autor beider Utils hat öffentlich gesagt, Benutzer sollten auf XZ-Utils ≥ 5.00 umsteigen." Zitat benötigt. :-)
Faheem Mitha
@FaheemMitha: Da es sich um einen Beitrag handelt und nicht um eine Referenz oder Originalforschung, wäre das Zitat nur die Projektseite. Ich nahm an, da es vom LZMA-Utils-Autor stammte und er BEIDE Utility-Sets mit der Absicht schrieb, XZ-Utils als Ersatz für ältere LZMA-Utils zu verwenden, was selbstverständlich war. ... Aber für alle, die mehr Details erfahren möchten, tukaani.org/lzma .
JM Becker
3

Auf keinen Fall sollten Sie lzma verwenden, wie andere sagen.

Antonio Diaz Diaz, Autor des lzip-Formats, sagt, dass das Xz-Format für die Langzeitarchivierung nicht geeignet ist . Wenn Sie Ihre wichtigen Dateien sichern möchten, sollten Sie andere Dateiformate in Betracht ziehen, z. B. bzip2, das ein Korruptionswiederherstellungstool enthält.

Kritiker
quelle
xz wird von manchen als unsicher angesehen. Dies gilt jedoch nicht für LZMA.
10.
0

xz wird bevorzugt, da es die höchste Kompressionsrate aufweist. Es wird jedoch langsamer komprimiert, macht dies aber durch die Komprimierung wieder wett.

Entfernte Grafiken
quelle