XZ

Was ist eine XZ-Datei?

Der stärkste der gängigen Unix-Kompressoren. Standard für Quelltext- und Paketdownloads.

Was XZ ist

XZ ist ein Stromformat, das von vorn nach hinten geschrieben und gelesen wird. Eingesetzt wird es für die Archivierung.

Die Endung lautet .xz, der volle Name XZ Archive. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.

Woher XZ kommt

Es geht auf 2009 zurück.

Das Alter ist aus einem praktischen Grund interessant: je älter ein Format, desto mehr Programme hatten Zeit, es zu lernen.

Die Spezifikation ist öffentlich

Sie ist vollständig veröffentlicht, das Format lässt sich also aus dem Dokument umsetzen statt durch Nachsehen. Deshalb taucht es in so vielen Programmen auf, und deshalb gehen Dateien von vor zwanzig Jahren heute noch auf. Veröffentlicht heißt allerdings nicht lizenzfrei: Wo ein Format einen Codec einpackt, ist die Patentfrage eine eigene, die der Standard nicht mitbeantwortet.

Es wird nichts weggeworfen

XZ speichert seinen Inhalt exakt. Erneutes Speichern ändert nichts, es lässt sich also beliebig oft öffnen, bearbeiten und wieder ablegen, ohne dass sich Schaden ansammelt — genau das macht es zu einem Arbeitsformat und nicht zu einem Ausgabeformat.

Es hält genau eine Datei

XZ komprimiert einen einzelnen Strom und kennt weder Dateinamen noch Ordner. Deshalb steht es so oft neben TAR, das die fehlende Struktur beisteuert.

Woher sein Kompressionsverhältnis kommt

Es arbeitet mit 8 MB am Stück: So groß ist der Abschnitt, innerhalb dessen eine Wiederholung liegen muss, damit sie überhaupt wegkomprimiert werden kann.

Diese eine Zahl erklärt den größten Teil des Unterschieds zwischen einem Archivformat und dem nächsten. Ein größerer Abschnitt findet mehr Wiederholung und braucht dafür mehr Zeit und mehr Speicher — das ist der ganze Handel.

Was es zu seinem eigenen Schutz tut

XZ bringt eine Prüfsumme, mit der eine beschädigte Datei auffällt statt stillschweigend falsch gelesen zu werden mit.

Reparieren tut eine Prüfsumme nichts. Sie sagt dir, dass die Datei kaputt ist — das ist der Unterschied zwischen jetzt davon erfahren und es von dem erfahren, dem du sie geschickt hast.

Was XZ öffnet

xz, 7-Zip und Keka lesen es, und die meisten Programme derselben Art ebenfalls.

Wenn eine Datei nicht aufgeht, liegt es selten am Format — häufiger daran, dass das Programm älter ist als das Format. Die Umwandlung in etwas Älteres ist der verlässliche Weg daran vorbei, und dafür gibt es den Rest dieser Website.

Im Browser öffnen

Kein Browser liest es.

Das ist der häufigste Grund, es umzuwandeln: nicht dass das Format schlecht wäre, sondern dass die Stelle, an der die Datei erscheinen soll, es nicht lesen kann.

Es ist ein Ausgabeformat

XZ ist zum Weitergeben gedacht, nicht zum Arbeiten. Eines zu bearbeiten ist möglich und selten angenehm; der vernünftige Weg führt über die Quelle und einen neuen Export.

Was damit schiefgeht

Die wiederkehrenden Klagen: es hält einen Strom und kann keinen Ordner beschreiben.

Nichts davon ist ein Grund, das Format zu meiden. Es sind die Dinge, die man kennen sollte, bevor eines davon einen überrascht — das ist eine andere und eine nützlichere Behauptung.

Ein Datenstrom, keine Dateinamen, kein Archiv

Das ist der ganze Unterschied zu 7z und erklärt alles Weitere. Eine XZ-Datei enthält genau einen komprimierten Datenstrom. Kein Verzeichnis, keine Namensliste, keine Vorstellung von mehreren Dateien. Wer report.txt komprimiert, bekommt report.txt.xz — mehr steckt nicht darin.

Deshalb ist .tar.xz die übliche Form. Tar bündelt den Verzeichnisbaum zu einem Strom, und xz komprimiert diesen Strom — dieselbe Arbeitsteilung wie bei .tar.gz. Eine .7z-Datei braucht kein tar, weil 7z selbst schon ein Archivformat ist, eine .xz-Datei braucht eines, weil sie es nicht ist.

Dieselbe Kompression wie 7z, in anderer Verpackung

Beide nutzen LZMA2, auf denselben Daten liefern sie deshalb sehr ähnliche Größen. xz schlägt gzip bei Text, Quellcode und Protokolldateien häufig um dreißig Prozent oder mehr — eine Spanne, die aus einem 100-MB-Download 65 MB macht.

Erkauft wird das mit Zeit und Speicher. Komprimieren auf den höheren Stufen dauert ein Vielfaches von gzip und kann mehrere hundert Megabyte Arbeitsspeicher beanspruchen. Entpacken bleibt dagegen schnell und günstig, genau die richtige Verteilung für etwas, das einmal komprimiert und viele Male heruntergeladen wird.

Warum sich Linux-Distributionen darauf einigten

Der Linux-Kernel wird als .tar.xz ausgeliefert. Ebenso die meisten Paketarchive großer Distributionen und ein großer Teil der Quellcode-Veröffentlichungen. Die Rechnung ist einfach: Eine Datei, die millionenfach heruntergeladen wird, rechtfertigt fast jeden Kompressionsaufwand, denn die Kosten fallen einmal an und die Ersparnis vervielfacht sich mit jedem Download.

Genau deshalb begegnet man xz vor allem beim Bezug von Software, seltener, wenn jemand einem eine Datei schickt. Es ist ein Verteilungsformat, kein Weitergabeformat, und der Unterschied zeigt sich in der jeweiligen Werkzeugausstattung.

Die Hintertür von 2024, klar dargestellt

Im März 2024 wurde in der Software xz-utils eine Hintertür entdeckt — in den Versionen 5.6.0 und 5.6.1, geführt als CVE-2024-3094. Sie war absichtlich von einem Mitwirkenden eingebaut worden, der rund zwei Jahre lang gezielt Vertrauen im Projekt aufgebaut hatte, und zielte auf den SSH-Dienst auf Systemen, in die eine gegen xz gelinkte Bibliothek geladen wurde.

Entdeckt wurde sie von Andres Freund, einem deutschstämmigen PostgreSQL-Entwickler, der bei Microsoft arbeitet — ihm fielen SSH-Anmeldungen auf, die etwa eine halbe Sekunde länger dauerten als erwartet, und er ging der Auffälligkeit nach statt sie abzutun. Die betroffenen Versionen steckten in Testzweigen und hatten stabile Distributionen kaum erreicht, die tatsächliche Betroffenheit blieb also gering.

Was das für die eigenen XZ-Dateien bedeutet — und was nicht

Am Dateiformat selbst wurde nichts verändert. Die Hintertür steckte in einem bestimmten Softwarerelease, nicht in der Struktur von XZ-Dateien, und eine .xz-Datei, die vor, während oder nach diesem Zeitraum entstand, ist ein ganz gewöhnlicher komprimierter Strom. Eine einfache XZ-Datei kann diesen Angriff auf keine Weise transportieren.

Die bleibende Bedeutung liegt in der Frage, wie quelloffene Software gepflegt wird, nicht in der Kompression selbst. Es ist das folgenreichste Ereignis in der Geschichte dieses Formats und lohnt, korrekt zu kennen statt als vages Gerücht, xz sei unsicher.

Prüfsummen, wo andere Formate darauf verzichten

xz speichert eine Prüfsumme — CRC32, CRC64 oder SHA-256 — und kontrolliert sie beim Entpacken. Hat sich ein Byte auf dem Transportweg oder durch eine fehlerhafte Festplatte verändert, bricht das Entpacken mit einer klaren Fehlermeldung ab, statt still ein falsches Ergebnis zu liefern.

Das ist ein echter Vorteil gegenüber reinem gzip, dessen Prüfung schwächer ausfällt, und ein Grund, warum Distributionen dem Format für die Softwareauslieferung vertrauen. Erkannt wird der Schaden damit, behoben nicht — das Einzige, was RARs Wiederherstellungsdatensatz kann und hier nichts bietet.

Wo zstd hineinpasst, und warum manche Projekte wechselten

Zstandard, 2016 von Facebook veröffentlicht, komprimiert fast so gut wie xz bei einer Geschwindigkeit nahe an gzip. Für alles, wo die Kompressionszeit zählt — Paketbau, nächtliche Backups, fortlaufend geschriebene Daten —, ist diese Kombination schwer zu schlagen, und mehrere Distributionen haben ihr Paketformat darauf umgestellt.

Bei der reinen Kompressionsrate auf den höchsten Stufen liegt xz weiterhin vorn, was es für Quellcode-Veröffentlichungen und Kernel-Archive im Rennen hält, wo eine Datei einmal gebaut wird. Beide konkurrieren eigentlich nicht um dieselbe Aufgabe.

Eine XZ-Datei öffnen, und was tatsächlich herauskommt

Jedes Linux-System beherrscht xz von der Kommandozeile aus. macOS liefert von Haus aus kein xz-Binary — Homebrew oder MacPorts schafft Abhilfe —, aber sein auf libarchive gestütztes tar entpackt eine .tar.xz-Datei ohne Zutun, was die meisten Fälle abdeckt. Unter Windows braucht es seit jeher ein Zusatzwerkzeug wie 7-Zip, das xz klaglos liest. Eine .tar.xz-Datei zu entpacken sind zwei Schritte, die die meisten Werkzeuge als einen darstellen: erst die Kompression auflösen, dann das Tar-Archiv auspacken.

Nach dem Entpacken einer bloßen .xz-Datei erwartet keinen Ordner. Es kommt genau eine Datei zurück — das, was komprimiert wurde —, weil das Format nie mehr enthielt. Wer einen Verzeichnisbaum erwartete, wollte eigentlich das Tar-Archiv im Inneren.

Wie unser Konverter mit XZ umgeht

Die Umwandlung läuft serverseitig, mit dem Kommandozeilenwerkzeug 7zz — zusammen mit den übrigen fünf Archivformaten zip, 7z, tar, gz und bz2 gehört xz zu den 36 Archivumwandlungen dieser Seite, die über api.quinvert.com laufen. Der Container hat keinen Internetzugang, die Datei liegt unter neuem Namen in einem eigenen temporären Verzeichnis, und dieses wird nach der Umwandlung gelöscht — auch bei einem Fehlschlag. Die Grenze liegt bei 25 MB.

Zwischen den sechs Archivformaten kommen die Dateien byteidentisch an. Was nicht übersteht, ist alles, was das Behältnis über sie wusste statt in ihnen selbst zu stecken — ein Passwort etwa, und bei manchen Formaten die ursprünglichen Zugriffsrechte und Zeitstempel.

Die Eckdaten auf einen Blick

Kennungen und Herkunft des Formats XZ.
Endung.xz
Medientypapplication/x-xz
Erstmals veröffentlicht2009