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
GZ
Komprimiert eine einzelne Datei. Mit TAR zusammen ergibt sich das übliche Unix-Archiv.
GZ
GZ ist ein Stromformat, das von vorn nach hinten geschrieben und gelesen wird. Eingesetzt wird es für das Web und die Archivierung.
Die Endung lautet .gz, der volle Name Gzip Archive. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.
Es geht auf 1992 zurück. Die Spezifikation ist RFC 1952.
Einem Format, das so lange lesbar geblieben ist, kann man etwas anvertrauen, das man in zehn Jahren wiederhaben will.
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.
GZ 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.
GZ komprimiert einen einzelnen Strom und kennt weder Dateinamen noch Ordner. Deshalb steht es so oft neben TAR, das die fehlende Struktur beisteuert.
GZ kann einen Aufbau, mit dem es losspielen kann, bevor es vollständig angekommen ist halten.
Wichtig wird das vor allem beim Umwandeln: Was das Ziel nicht halten kann, fällt weg, meist ohne Warnung.
Es arbeitet mit 32 KB 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.
GZ 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.
gzip, 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.
GZ 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.
Gzip komprimiert einen einzelnen Strom. Es kennt kein Verzeichnis, keine Namensliste, kein Konzept mehrerer Dateien. Wird notizen.txt komprimiert, entsteht notizen.txt.gz — mehr steckt nicht darin, und beim Entpacken kommt genau eine Datei zurück.
Deshalb ist .tar.gz die übliche Form und deshalb hat die Endung zwei Teile. Tar bündelt einen ganzen Verzeichnisbaum in einen Strom, gzip komprimiert diesen Strom, und die Kette liest sich von rechts nach links. Wer eine bloße .gz entpackt und einen Ordner erwartet, bekommt die eine Datei, die komprimiert wurde — mehr hat das Format nie enthalten.
Es ist eine HTTP-Antwort. Fast jeder Webserver komprimiert HTML, CSS, JavaScript und JSON mit Gzip, bevor er sie sendet, der Browser entpackt es unbemerkt, und keine Seite schreibt jemals eine .gz auf die Platte. Das passiert milliardenfach am Tag und ist unsichtbar.
Deshalb ist Gzip überall präsent, und deshalb zählt seine Geschwindigkeit mehr als sein Verhältnis. Ein Server, der eine Antwort komprimiert, hat Millisekunden, keine Sekunden — ein Komprimierer, der zehn Prozent stärker packt für den zehnfachen Aufwand, wäre bei dieser Größenordnung der falsche Tausch, und genau diesen Tausch macht xz und gzip lehnt ihn ab.
Gzip nutzt DEFLATE — LZ77-Musterabgleich gegen ein 32-KB-Fenster, gefolgt von Huffman-Kodierung. Derselbe Algorithmus komprimiert jede Datei in einer ZIP und jedes PNG-Bild, weshalb diese drei Formate so ähnliche Kompressionseigenschaften teilen.
Das 32-KB-Fenster ist die Grenze, die alles bestimmt. Wiederholungen, die weiter auseinanderliegen, findet der Algorithmus nicht, weshalb Gzip bei großen Dateien mit weitreichender Struktur gegen xz und 7z deutlich verliert — und weshalb es so wenig kostet, es laufen zu lassen, denn der Suchraum ist absichtlich klein.
Jean-loup Gailly und Mark Adler veröffentlichten Gzip 1992 als Ersatz für das Unix-Programm compress, das LZW nutzte — den Algorithmus, auf den Unisys Patente hielt und durchzusetzen begann, derselbe Streit, der PNG als Ersatz für GIF hervorbrachte.
DEFLATE wurde bewusst unbelastet entworfen und als RFC 1951 veröffentlicht, damit jeder es implementieren konnte. Diese Entscheidung ist der Grund, warum es in ZIP, PNG, HTTP und zahllosen Protokollen landete: Es war der ausreichend gute Komprimierer, für den niemand um Erlaubnis fragen musste.
Gzip bietet die Stufen 1 bis 9. Stufe 1 ist schnell und großzügig, 9 sucht am gründlichsten, und 6 ist die Voreinstellung. Der Unterschied zwischen 6 und 9 beträgt meist wenige Prozent Größe für einen deutlichen Zeitaufwand — fast überall ein schlechter Tausch.
Die Entpackgeschwindigkeit bleibt unabhängig von der verwendeten Stufe praktisch konstant und ist hoch — mehrere hundert Megabyte pro Sekunde auf gewöhnlicher Hardware. Diese Asymmetrie ist das prägende Merkmal des Formats: billig zu lesen, günstig genug zu schreiben, an keiner der beiden Stellen bemerkenswert.
Der Header kann den ursprünglichen Dateinamen, ein Änderungsdatum und einen Kommentar tragen, und am Ende steht eine CRC32-Prüfsumme der unkomprimierten Daten. Die Prüfsumme sorgt dafür, dass Beschädigung beim Entpacken erkannt wird, statt still ein falsches Ergebnis zu liefern.
Der gespeicherte Name erklärt, warum das Entpacken manchmal eine anders benannte Datei ergibt als die .gz selbst hieß. Auch ein kleines Datenschutzdetail steckt darin: Eine .gz kann den ursprünglichen Pfad oder Namen tragen, selbst nachdem die Datei zum Versenden umbenannt wurde.
Zwei Gzip-Dateien mit nichts Aufwendigerem als einem Dateikopiervorgang zusammenzufügen ergibt eine gültige Gzip-Datei, die beide der Reihe nach enthält. Entpackprogramme kommen damit klar, ohne dass man es ihnen sagen muss.
Deshalb setzen Log-Rotation, Streaming-Pipelines und Datensammelsysteme darauf: Ein Prozess kann komprimierte Blöcke anhängen, sobald sie eintreffen, ohne je etwas Vorheriges neu zu schreiben oder erneut zu lesen. Weder ZIP noch 7z können das, und darin liegt ein großer Teil der Erklärung, warum Gzip sich in der Infrastruktur hält.
xz komprimiert Text um ungefähr dreißig Prozent kleiner und braucht dafür viel länger, was für ein oft heruntergeladenes Release passt. zstd erreicht Gzips Geschwindigkeit bei einem Verhältnis nahe an xz und verdrängt Gzip deshalb in Paketformaten und Backup-Systemen. Brotli schlägt Gzip im Web, und jeder Browser unterstützt es.
Gzips verbliebener Vorteil ist, dass es überall vorhanden ist, ohne installiert, konfiguriert oder erklärt werden zu müssen. Das ist nicht nichts — für ein neu entstehendes System statt eines bestehenden ist zstd inzwischen aber meist die bessere Standardwahl.
Wenn die Datei an einen Menschen geht statt an eine Maschine. ZIP öffnet sich unter Windows und macOS ohne weitere Software, und eine .tar.gz an technisch weniger versierte Kolleginnen und Kollegen zu schicken heißt still, ihnen ein Problem zu übergeben.
Nicht umwandeln, wenn es zurück auf ein Unix-System geht. Das Umpacken in ZIP verwirft die Berechtigungen, Besitzverhältnisse und symbolischen Links, die tar getragen hat, und das entpackte Ergebnis funktioniert dann womöglich nicht mehr. Für ein Server-Backup oder ein Quellcode-Release ist .tar.gz kein Hindernis, das man umgehen sollte — es ist der Grund, warum das Archiv überhaupt funktioniert.
| Endung | .gz, .tgz |
|---|---|
| Medientyp | application/gzip |
| Erstmals veröffentlicht | 1992 |
| Spezifikation | RFC 1952 |