Das ZIP-Dateiformat ist ein weit verbreitetes Komprimierungs- und Archivierungsformat, das es ermöglicht, mehrere Dateien in einer einzigen komprimierten Datei zusammenzufassen. Es wurde ursprünglich 1989 von Phil Katz entwickelt und ist seitdem zu einem allgegenwärtigen Standard für die Dateikomprimierung und -verteilung geworden. Das ZIP-Format verwendet eine Kombination aus verlustfreien Komprimierungsalgorithmen, um die Größe der enthaltenen Dateien zu reduzieren, während sie dennoch bei Bedarf einzeln extrahiert werden können.
Ein ZIP-Archiv besteht aus einer Folge von Dateieinträgen, die jeweils eine komprimierte Datei darstellen, gefolgt von einem zentralen Verzeichnis am Ende des Archivs. Jeder Dateieintrag enthält Metadaten über die Datei, wie z. B. Name, Größe und Zeitstempel, sowie die komprimierten Dateidaten selbst. Das zentrale Verzeichnis enthält eine Liste aller Dateieinträge im Archiv sowie zusätzliche Metadaten.
Das ZIP-Format unterstützt mehrere Komprimierungsmethoden, die am häufigsten verwendete ist jedoch DEFLATE, die auf dem LZ77-Algorithmus und der Huffman-Kodierung basiert. DEFLATE findet wiederholte Datenfolgen und ersetzt sie durch Verweise auf frühere Vorkommen, kombiniert mit der Huffman-Kodierung, um die komprimierten Daten effizient darzustellen. Dies ermöglicht eine erhebliche Größenreduzierung, insbesondere bei textbasierten Dateien.
Um ein ZIP-Archiv zu erstellen, werden die Dateien zunächst einzeln mit der gewählten Komprimierungsmethode komprimiert. Jede komprimierte Datei wird dann dem Archiv als Dateieintrag hinzugefügt, der einen lokalen Dateikopf gefolgt von den komprimierten Daten enthält. Der lokale Dateikopf enthält Metadaten wie Dateiname, Komprimierungsmethode, CRC-32-Prüfsumme, komprimierte und unkomprimierte Größen sowie Zeitstempel.
Nachdem alle Dateieinträge hinzugefügt wurden, wird das zentrale Verzeichnis am Ende des Archivs geschrieben. Das zentrale Verzeichnis beginnt mit einer Signatur und enthält einen Dateikopf für jeden Dateieintrag, der ähnliche Metadaten wie die lokalen Dateiköpfe enthält. Darüber hinaus enthält das zentrale Verzeichnis Informationen über das Archiv als Ganzes, wie z. B. die Anzahl der Dateien und die Größe des zentralen Verzeichnisses.
Schließlich wird das ZIP-Archiv mit einem End-of-Central-Directory-Eintrag abgeschlossen, der eine Signatur, die Nummer der Festplatte, auf der das zentrale Verzeichnis beginnt, die Anzahl der zentralen Verzeichniseinträge, die Größe des zentralen Verzeichnisses, den Offset des Beginns des zentralen Verzeichnisses relativ zum Beginn des Archivs und ein Kommentarfeld enthält.
Eine der Hauptfunktionen des ZIP-Formats ist seine Fähigkeit, verschiedene Komprimierungsmethoden zu unterstützen. Neben DEFLATE unterstützt es auch die STORE-Methode (keine Komprimierung), BZIP2, LZMA, PPMd und andere. Diese Flexibilität ermöglicht einen Ausgleich zwischen Komprimierungsverhältnis und Verarbeitungszeit, abhängig von den spezifischen Anforderungen des Anwendungsfalls.
Ein weiterer wichtiger Aspekt des ZIP-Formats ist seine Unterstützung für Datei- und Verzeichnisverschlüsselung. Das traditionelle ZIP-Verschlüsselungsschema verwendete eine einfache passwortbasierte Verschlüsselungsmethode, die jedoch in modernen ZIP-Tools weitgehend durch die sicherere AES-Verschlüsselung ersetzt wurde. Wenn eine Datei verschlüsselt wird, werden ihre komprimierten Daten mit der gewählten Verschlüsselungsmethode verschlüsselt und dem Dateikopf zusätzliche Metadaten hinzugefügt, um den Verschlüsselungsstatus anzuzeigen.
Das ZIP-Format enthält außerdem Funktionen zur Überprüfung der Datenintegrität und Fehlererkennung. Jeder Dateieintrag enthält eine CRC-32-Prüfsumme der unkomprimierten Daten, mit der die Integrität der Datei beim Extrahieren überprüft werden kann. Darüber hinaus enthält das zentrale Verzeichnis eine CRC-32-Prüfsumme der gesamten zentralen Verzeichnisstruktur, die eine zusätzliche Ebene der Integritätsprüfung für das gesamte Archiv bietet.
Im Laufe der Jahre wurden mehrere Erweiterungen und Verbesserungen am ZIP-Format vorgenommen, um seine Funktionalität und Effizienz zu verbessern. Eine solche Erweiterung ist das ZIP64-Format, das Archive und Dateien mit einer Größe von mehr als 4 GB ermöglicht. Dies wird erreicht, indem 64-Bit-Felder für Größen- und Offsetwerte anstelle der ursprünglichen 32-Bit-Felder verwendet werden. Eine weitere Erweiterung ist die Verwendung von Dateinamen- und Kommentarcodierung, die die Verwendung von Unicode-Zeichen in Dateinamen und Kommentaren ermöglicht.
Das ZIP-Format wurde auch für die Verwendung in verschiedenen spezialisierten Kontexten angepasst, wie z. B. das OpenDocument-Format, das von Office-Produktivitätspaketen verwendet wird, das JAR-Format (Java Archive), das für die Verteilung von Java-Anwendungen verwendet wird, und das EPUB-Format, das für E-Books verwendet wird. In diesen Fällen dient das ZIP-Format als Container für die spezifischen Dateitypen und Metadaten, die von den jeweiligen Formaten benötigt werden.
Trotz seines Alters ist das ZIP-Format nach wie vor weit verbreitet und wird auf allen Plattformen und Geräten unterstützt. Seine Einfachheit, Effizienz und Kompatibilität haben es zu einer beliebten Wahl für die Dateikomprimierung und -verteilung gemacht. Allerdings gibt es auch einige Einschränkungen des ZIP-Formats, wie z. B. die fehlende integrierte Unterstützung für geteilte Archive, solide Komprimierung oder Wiederherstellungsdatensätze.
Um einige dieser Einschränkungen zu beheben, wurden alternative Archivierungsformate entwickelt, wie z. B. RAR, 7z und TAR. Diese Formate bieten in einigen Fällen zusätzliche Funktionen und verbesserte Komprimierungsverhältnisse, verfügen jedoch möglicherweise nicht über die gleiche universelle Unterstützung wie ZIP.
Zusammenfassend lässt sich sagen, dass das ZIP-Dateiformat ein vielseitiges und effizientes Komprimierungs- und Archivierungsformat ist, das sich im Laufe der Zeit bewährt hat. Seine Fähigkeit, mehrere Dateien zusammenzufassen, sie effizient zu komprimieren und die Datenintegrität zu überprüfen, hat es zu einem unverzichtbaren Werkzeug für die Dateispeicherung und -verteilung gemacht. Trotz einiger Einschränkungen ist das ZIP-Format dank seiner Einfachheit und Kompatibilität nach wie vor weit verbreitet und wird unterstützt.
Die Dateikomprimierung reduziert Redundanzen, damit dieselben Informationen mit weniger Bits auskommen. Die Obergrenze wird von der Informationstheorie gesetzt: Bei verlustfreier Komprimierung bestimmt die Entropie der Quelle das Limit (siehe Shannons Source-Coding-Theorem und seinen ursprünglichen Aufsatz von 1948 „A Mathematical Theory of Communication“). Bei verlustbehafteter Komprimierung beschreibt die Rate-Distortion-Theorie den Kompromiss zwischen Bitrate und Qualität.
Die meisten Kompressoren arbeiten in zwei Phasen. Zuerst sagt ein Modell Struktur in den Daten voraus oder legt sie frei. Danach wandelt ein Coder diese Vorhersagen in nahezu optimale Bitmuster um. Eine klassische Modellfamilie ist Lempel–Ziv LZ77 (1977) und LZ78 (1978) entdecken wiederholte Teilstrings und geben Referenzen statt Rohbytes aus. Auf der Codierungsseite weist die Huffman-Codierung (den Originalartikel finden Sie 1952) wahrscheinlicheren Symbolen kürzere Codes zu. Arithmetische Codierung und Range Coding arbeiten noch feiner und rücken näher an die Entropiegrenze, während moderne Asymmetric Numeral Systems (ANS) ähnliche Raten mit tabellengesteuerten Implementierungen erreichen.
DEFLATE (verwendet von gzip, zlib und ZIP) kombiniert LZ77 mit Huffman-Codierung. Die Spezifikationen sind öffentlich: DEFLATE RFC 1951, der zlib-Wrapper RFC 1950und das gzip-Dateiformat RFC 1952. Gzip ist für Streaming ausgelegt und garantiert ausdrücklich keinen zufälligen Zugriff. PNG-Bilder standardisieren DEFLATE als einzige Komprimierungsmethode (mit maximal 32 KiB Fenster) laut der PNG-Spezifikation „Compression method 0… deflate/inflate… at most 32768 bytes“ und W3C/ISO PNG 2nd Edition.
Zstandard (zstd): ein neuer Allzweckkompressor für hohe Raten bei sehr schneller Dekompression. Das Format ist dokumentiert in RFC 8878 (und dem HTML-Spiegel) sowie der Referenzspezifikation auf GitHub. Wie gzip zielt der Basis-Frame nicht auf zufälligen Zugriff. Eine der Superkräfte von zstd sind Wörterbücher: kleine Proben aus Ihrem Korpus, die viele kleine oder ähnliche Dateien deutlich besser komprimieren (siehe python-zstandard Wörterbuch-Dokumentation und Nigel Taos Beispiel). Implementierungen akzeptieren sowohl „unstrukturierte“ als auch „strukturierte“ Wörterbücher (Diskussion).
Brotli: optimiert für Web-Inhalte (z. B. WOFF2-Fonts, HTTP). Es kombiniert ein statisches Wörterbuch mit einem DEFLATE-ähnlichen LZ+Entropie-Kern. Die Spezifikation ist RFC 7932, der auch ein Gleitfenster von 2WBITS−16 mit WBITS in [10, 24] (1 KiB−16 B bis 16 MiB−16 B) beschreibt und festhält, dass es keinen zufälligen Zugriff bereitstellt. Brotli schlägt gzip bei Webtext oft und dekodiert trotzdem schnell.
ZIP-Container: ZIP ist ein Datei-Archiv, das Einträge mit verschiedenen Komprimierungsmethoden (deflate, store, zstd usw.) speichern kann. Der De-facto-Standard ist PKWAREs APPNOTE (siehe APPNOTE-Portal, eine gehostete Kopieund die LC-Überblicke ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 zielt auf pure Geschwindigkeit bei moderaten Raten. Siehe die Projektseite („extremely fast compression“) und das Frame-Format. Ideal für In-Memory-Caches, Telemetrie oder Hot Paths, in denen Dekompression nahezu RAM-Geschwindigkeit erreichen muss.
XZ / LZMA strebt hohe Dichte (große Raten) mit relativ langsamer Kompression an. XZ ist ein Container; die Schwerarbeit leisten typischerweise LZMA/LZMA2 (LZ77-ähnliche Modellierung + Range Coding). Siehe .xz-Dateiformat, die LZMA-Spezifikation (Pavlov)und Linux-Hinweise zu XZ Embedded. XZ komprimiert meist besser als gzip und konkurriert oft mit modernen Hochratencodecs, braucht aber längere Encode-Zeiten.
bzip2 setzt auf die Burrows–Wheeler-Transformation (BWT), Move-to-Front, RLE und Huffman-Codierung. Typisch kleiner als gzip, aber langsamer; siehe das offizielle Handbuch und die Manpages (Linux).
Die „Fenstergröße“ zählt. DEFLATE-Referenzen können nur 32 KiB zurückblicken (RFC 1951) sowie das PNG-Limit von 32 KiB hier erläutert. Brotli deckt Fenster von etwa 1 KiB bis 16 MiB ab (RFC 7932). Zstd passt Fenster und Suchtiefe über die Level an (RFC 8878). Basis-Streams von gzip/zstd/brotli sind für sequentielles Dekodieren gebaut; die Grundformate versprechen keinen zufälligen Zugriff, obwohl Container (z. B. Tar-Indizes, Chunked Framing oder format-spezifische Indizes) ihn nachrüsten können.
Die oben genannten Formate sind verlustfrei: Sie rekonstruieren exakt dieselben Bytes. Medien-Codecs sind oft verlustbehaftet: Sie verwerfen unmerkliche Details, um niedrigere Bitraten zu erreichen. Bei Bildern ist klassisches JPEG (DCT, Quantisierung, Entropiecodierung) in ITU-T T.81 / ISO/IEC 10918-1standardisiert. In Audio nutzen MP3 (MPEG-1 Layer III) und AAC (MPEG-2/4) Wahrnehmungsmodelle und MDCT-Transformationen (siehe ISO/IEC 11172-3, ISO/IEC 13818-7und eine MDCT-Übersicht hier). Verlustbehaftet und verlustfrei können koexistieren (z. B. PNG für UI-Assets; Web-Codecs für Bilder/Video/Audio).
Theorie Shannon 1948 · Rate–distortion · Codierung Huffman 1952 · Arithmetische Codierung · Range Coding · ANS. Formate DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · XZ format. BWT-Stack Burrows–Wheeler (1994) · bzip2 manual. Medien JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Fazit: Wählen Sie einen Kompressor, der zu Ihren Daten und Randbedingungen passt, messen Sie auf echten Eingaben und vergessen Sie nicht die Gewinne durch Wörterbücher und clevere Frames. Mit der richtigen Kombination erhalten Sie kleinere Dateien, schnellere Übertragungen und reaktionsschnellere Apps – ohne Korrektheit oder Portabilität zu opfern.
Dateikompression ist ein Prozess, der die Größe einer Datei oder Dateien reduziert, normalerweise um Speicherplatz zu sparen oder die Übertragung über ein Netzwerk zu beschleunigen.
Die Dateikompression funktioniert, indem sie Redundanzen in den Daten identifiziert und entfernt. Sie verwendet Algorithmen, um die ursprünglichen Daten in einem kleineren Raum zu kodieren.
Die beiden primären Arten der Dateikompression sind verlustfreie und verlustbehaftete Kompression. Verlustfreie Kompression ermöglicht die perfekte Wiederherstellung der Originaldatei, während verlustbehaftete Kompression eine größere Größenreduktion ermöglicht, dies jedoch auf Kosten eines Qualitätsverlusts bei den Daten.
Ein populäres Beispiel für ein Dateikompressionstool ist WinZip, das mehrere Kompressionsformate unterstützt, darunter ZIP und RAR.
Bei verlustfreier Kompression bleibt die Qualität unverändert. Bei verlustbehafteter Kompression kann es jedoch zu einem spürbaren Qualitätsverlust kommen, da weniger wichtige Daten zur Reduzierung der Dateigröße stärker eliminiert werden.
Ja, die Dateikompression ist sicher in Bezug auf die Datenintegrität, insbesondere bei der verlustfreien Kompression. Wie alle Dateien können jedoch auch komprimierte Dateien von Malware oder Viren angegriffen werden. Daher ist es immer wichtig, eine seriöse Sicherheitssoftware zu haben.
Fast alle Arten von Dateien können komprimiert werden, einschließlich Textdateien, Bilder, Audio, Video und Softwaredateien. Das erreichbare Kompressionsniveau kann jedoch zwischen den Dateitypen erheblich variieren.
Eine ZIP-Datei ist ein Dateiformat, das verlustfreie Kompression verwendet, um die Größe einer oder mehrerer Dateien zu reduzieren. Mehrere Dateien in einer ZIP-Datei werden effektiv zu einer einzigen Datei gebündelt, was das Teilen einfacher macht.
Technisch ja, obwohl die zusätzliche Größenreduktion minimal oder sogar kontraproduktiv sein könnte. Das Komprimieren einer bereits komprimierten Datei kann manchmal deren Größe erhöhen, aufgrund der durch den Kompressionsalgorithmus hinzugefügten Metadaten.
Um eine Datei zu dekomprimieren, benötigen Sie in der Regel ein Dekompressions- oder Entzip-Tool, wie WinZip oder 7-Zip. Diese Tools können die Originaldateien aus dem komprimierten Format extrahieren.