xz Kompression

Beim Archivieren von großen Dateien mit Messdaten bin ich auf ein Tool gestoßen, das bei der Kompression von Daten erstaunliche Dinge leistet.

Neulich stand ich vor der Aufgabe eine Vielzahl von Dateien mit Messwerten zu archivieren. Konkret ging es um die Daten der Verkehrsmessungen auf den Straßen in Schleswig-Holstein. Die werden alle drei Minuten aktualisiert, liegen aber in einem sehr “geschwätzigen” GeoJSON-Format vor. Pro Monat kommt man so auf etwa 2,5 GB Daten.

Wenn man diese Daten speicherplatz-schonend ablegen möchte, wird man sie komprimieren. Spontan fallen mir dabei ZIP-Archive und mit gzip komprimierte tar-Dateien ein. Also habe ich die Dateien damit komprimiert. Beide Verfahren funktionierten etwa gleich gut und lieferten 614 MB große Dateien. Das ist schon ganz ordentlich, da man 75% des Speicherplatzes spart.

Aber es gibt auch noch andere Kompressionsverfahren. Vor Jahren war bzip2 ein großer Hype. Tatsächlich bekommt man damit nochmal bessere Ergebnisse: 287 MB. Weniger als die Hälfte der gzip-Kompression. Das ist schon eine Einsparung von 89%.

Dann bin ich auf die xz Utils gestoßen. Unter Debian und Ubuntu heißt das Paket xz-utils. Also habe ich meine tar-Datei mit xz komprimiert:

$ ls -lh 2022-04.tar
-rw-r--r-- 1 opendata odp 2,5G Okt 15 10:10 2022-04.tar
$ xz 2022-04.tar

Nach 5 Minuten dann das verblüffende Ergebnis:

$ ls -lh 2022-04.tar.xz
-rw-r--r-- 1 opendata odp 5,5M Jun 15 10:15 2022-04.tar.xz

Aus 2,5 GB sind 5,5 MB geworden. Das ist eine Kompression auf 0,21% der Originalgröße! Zunächst konnte ich das gar nicht glauben und habe die Datei auf einem anderen Rechner wieder extrahiert und die md5-Hashes verglichen. Und tatsächlich, die Daten sind wirklich alle unverändert da.

Praktisch ist, dass man über die Option -J die xz-Kompression auch direkt mit tar verwenden kann.

Die in diesem Fall zu archivierenden Daten sind vermutlich wirklich etwas speziell, so dass man normalerweise nicht auf diese phänomenalen Kompressionsraten kommt. Aber einen Versuch sollte xz beim platzsparenden Archivieren von Daten auf jeden Fall sein.


Das Titelbild habe ich übrigens mit DALL-E erzeugt. Es zeigt, was sich die KI unter “compression algorithm, digital art” vorstellt.