- ZIP (Dateiformat)
-
ZIP Dateiendung .zip
MIME-Type application/zip
Magische Zahl 504B.0304 hex
PK\x03\x04 (ASCII-C-Notation)Entwickelt von Phil Katz † Art Datenkompression Container für beliebige Dateien Standard(s): PKWARE: .ZIP File Format Specification Das ZIP-Dateiformat ist ein offenes Format zur komprimierten Archivierung von Dateien. Neben mehreren Dateien können auch ganze Verzeichnisbäume in einer einzelnen ZIP-Datei archiviert und komprimiert werden. Die Archivdateien tragen üblicherweise die Endung .zip. Der MIME-Typ ist application/zip.[1]
Inhaltsverzeichnis
Geschichte
Es wurde ursprünglich 1989 mit den Programmen PKZIP (komprimieren) und PKUNZIP (dekomprimieren) vom US-Amerikaner Phil Katz eingeführt und hat in der Zwischenzeit einige Erweiterungen erfahren. Katz hatte ursprünglich ein anderes Dateiformat (ARC) benutzt. Dieses Format war von Software Enhancements Associates (SEA) entwickelt worden und wurde als Shareware vertrieben. Katz schrieb eine eigene, deutlich schnellere Version dieser Software und verbreitete sie als PKARC. Als ihn daraufhin SEA verklagte, zog er PKARC zurück und entwickelte stattdessen PKZIP, das einen effizienteren Algorithmus benutzte. Durch die schnelle Verbreitung von PKZIP wurden SEA und ARC bedeutungslos.
Merkmale
Container
Das ZIP-Format ist zunächst ein Datencontainer, in den mehrere Dateien nach verschiedenen Methoden komprimiert oder direkt (store) gespeichert werden können. Es ermöglicht daher, mehrere Dateien in einer Archivdatei zu speichern, sowie die Extraktion auch einzelner Dateien aus der Archiv-(Container-)Datei. Darüber hinaus ermöglicht das Format auch das Mitspeichern von Pfadinformationen.
Kein solid
Das ZIP-Format unterstützt keine progressive Kompression (auch solid genannt), die Dateien werden einzeln komprimiert. Das ermöglicht einerseits eine flexible Handhabung (Löschen/Hinzufügen von Dateien aus dem Archiv, ohne alles neu komprimieren zu müssen; Extraktion einzelner Dateien ohne vorangehende Dateien dekomprimieren zu müssen), hat aber den Nachteil, dass Redundanzen zwischen den Dateien bei der Komprimierung nicht berücksichtigt werden können. Dieser Nachteil kann umgangen werden, indem die Dateien zunächst unkomprimiert archiviert werden und die so erzeugte Zip-Datei in eine weitere komprimiert gespeichert wird. (Meist nur bei extrem vielen gleichartigen Dateien sinnvoll.)
Nicht sequenzielles Format
Die Dateien sind als Dateieinträge (engl. file entries) in beliebiger Reihenfolge gespeichert. Die Dateieinträge beginnen alle mit einem lokalen Dateikopf (engl. local header), der den Dateieintrag beschreibt und den Datenabschnitt mit den effektiven Inhalten einleitet. Um die Handhabung dieser beliebig angeordneten Einträge zu gewährleisten, befindet sich am Ende der ZIP-Datei jeweils ein zentrales Verzeichnis (engl. central directory), welches sämtliche Dateieinträge anhand der lokalen Dateiköpfe referenziert. Die Reihenfolge der Dateieinträge und den entsprechenden Referenzen im zentralen Verzeichnis können sich voneinander unterscheiden. Es handelt sich also um eine nicht sequenzielle Struktur, die am besten mit dem Konzept des wahlfreien Zugriffs (engl. random access) gehandhabt wird.
Multivolume
Es ist weiterhin möglich, das Archiv auf mehrere Dateien zu verteilen (z. B. um große Dateien in Stücke zu teilen, die jeweils auf eine CD oder DVD passen) oder selbstextrahierende Dateien anzulegen.
Packalgorithmen
Neben der bis zur PKZip-Version 2.x am besten packenden Methode Deflate unterstützt ZIP noch eine Reihe weiterer Kompressionsalgorithmen:
- 0: Store (Speichern, unkomprimiert)
- 1: Shrink (obsolet, PKZIP 1.xx)
- 2:
- 3:
- 4:
- 5:
- 6: Implode (obsolet, PKZIP 1.xx)
- 7:
- 8: Deflate (bestehend aus LZSS und Huffman-Entropiekodierung)
- 9: Deflate64
- 10:
- 11:
- 12: Bzip2
Erweiterungen
Es existieren mittlerweile nachträglich eingeführte Erweiterungen wie die Zip128-Erweiterung.
Verbreitung, Bedeutung
Das Dateiformat und das Kompressionsverfahren Deflate sind Public Domain und erlangten unter anderem dadurch eine weltweite Verbreitung und Bedeutung.
Die Deflate-Methode findet sich als Quasi-Standard in zahlreichen weiteren Formaten, wie den Bilddateiformaten Portable Network Graphics (PNG) und Tagged Image File Format (TIFF), dem OpenDocument-Format der ISO und in dem .docx-Format von Microsofts Office 2007 wieder.
Programme
Neben PKZIP existieren zahlreiche andere Programme, die dieses Dateiformat bearbeiten können. Dazu zählen kommerzielle Programme wie die graphischen Windows-Shareware-Programme WinZip und FileCompressor oder freie Programme wie Info-ZIP oder 7-Zip, dessen optimierter Deflate-Algorithmus obendrein geringfügig kleinere PKZIP-2.xx-kompatible Dateien erzeugen kann.
Programm- und Klassenbibliotheken für den Zugriff auf ZIP-Dateien stehen für zahlreiche Programmiersprachen zur Verfügung. So enthält beispielsweise die Java Platform Standard Edition (Java SE) seit 1997 (Version 1.1) das Paket „java.util.zip“ mit entsprechenden Klassen für Komprimierung und Dekomprimierung. Diese Version unterstützt jedoch keine großen ZIP-Dateien, d.h. mehr als 65.000 Dateieinträge oder gepackte Dateien mit mehr 4 GB Dateigröße sind nicht möglich. Die Klassenbibliothek Zip64File wurde speziell für diesen Zweck entwickelt. Außerdem handhabt Zip64File ZIP-Dateien als sogenannte Direktzugriffsdateien (engl. random access files). Diese ermöglichen direkten Zugriff auf einzelne Dateieinträge an beliebig wählbaren Positionen im Gegensatz zur Java-SE-Bibliothek, mit der man die gesamte ZIP-Datei als Datenstrom sequentiell durchlaufen muss, bis man an der gewünschten Position ist. Zip64File steht der Öffentlichkeit vollumfänglich, kostenfrei und inklusive Quellcode zur Verfügung.
Das im System Mac OS X integrierte Programm BOMArchiveHelper erzeugt und dekomprimiert ebenfalls im ZIP-Format.
Die freie Info-ZIP Implementierung des ZIP-Algorithmus', die unter Anderem auch sehr häufig unter Linux verwendet wird, kann nicht mit ZIP-Archiven, die Dateien mit einer Größe von mehr als 2 GB beziehungsweise 4 GB enthalten, umgehen.[2] Um solche Dateien zu entpacken, kann man jedoch andere Programme, wie beispielsweise 7z verwenden.
Name, Namensverwirrung
Nach Auskunft der Firma PKWare bezieht sich der Name zip (engl. für Reißverschluss) auf das Verpacken von vielen Einzeldateien in einen größeren „Container“ und nicht auf die Komprimierungsfunktion des Programms.
Nicht jedes Kompressionsprogramm, dessen Name die Zeichenkette „ZIP“ enthält, arbeitet mit dem ZIP-Dateiformat. Die wichtigsten Beispiele sind gzip vom GNU-Projekt und bzip2, die jeweils in einem eigenständigen Format nur eine einzelne Datei komprimieren. Zum Archivieren mehrerer Dateien muss in diesem Fall vor der Komprimierung ein anderes Programm verwendet werden (im Zusammenhang mit gzip und bzip2 meist tar). Auch bei 7-Zip wird zwar das ZIP-Dateiformat voll unterstützt, aber das eigene Archivformat 7z ist nicht mit ZIP kompatibel.
Das Wort „zippen“ wird gelegentlich als Synonym für „komprimiert archivieren“ verwendet, jedoch muss dabei nicht zwangsläufig das Packen als ZIP-Datei gemeint sein.
Siehe auch
- Java Archive (JAR) ist eine auf ZIP basierende Erweiterung und wurde als Format für Java-Programmdaten entwickelt.
- Das unter anderem von OpenOffice.org verwendete OpenDocument-Format ist ein auf mehreren XML-Dateien basierendes Dateiformat, das mithilfe von ZIP zu einzelnen Dateien kombiniert wird.
- Gleiches gilt auch für das Office Open XML-Format, das unter anderem von Microsoft Office 2007 verwendet wird und ebenfalls gezipte XML-Dateien enthält.
- Auch die Gadget-Dateien der Windows Vista-Sidebar verwenden das ZIP-Format.
- Liste der Datenkompressionsprogramme
Weblinks
- PKWARE: .ZIP File Format Specification, 28. September 2007 (englisch)
- Spezifikation zur AES-Verschlüsselung in Zip-Formaten
- zlib Technical Details (englisch)
- RFC 1950 – ZLIB Compressed Data Format Specification version 3.3 (englisch)
Einzelnachweise
- ↑ http://www.iana.org/assignments/media-types/application/zip IANA
- ↑ http://www.info-zip.org/FAQ.html#limits Limitierungen der Info-ZIP-Implementierung
Wikimedia Foundation.