Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
XZ
Der stärkste der gängigen Unix-Kompressoren. Standard für Quelltext- und Paketdownloads.
XZ
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.
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.
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.
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.
XZ komprimiert einen einzelnen Strom und kennt weder Dateinamen noch Ordner. Deshalb steht es so oft neben TAR, das die fehlende Struktur beisteuert.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Endung | .xz |
|---|---|
| Medientyp | application/x-xz |
| Erstmals veröffentlicht | 2009 |