„ZIP-Dateiformat“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
Keine Bearbeitungszusammenfassung
Tippfehler korrigiert
 
(39 dazwischenliegende Versionen von 30 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Dateiformat
{{Infobox Dateiformat
| Name = ZIP
| Name = ZIP
| Icon = [[Datei:Breezeicons-mimetypes-64-application-zip.svg|150px]]
| Icon = [[Bild:Winzip-logo.svg|150px]]<br/>Dateiicon von WinZIP, einem verbreiteten ZIP-Programm
| Logo =
| Logo =
| Screenshot =
| Screenshot =
| Beschreibung =
| Beschreibung =
Zeile 11: Zeile 11:
| MagischeZahlHex = 504B.0304
| MagischeZahlHex = 504B.0304
| Entwickler = [[Phil Katz]]
| Entwickler = [[Phil Katz]]
| Veröffentlicht =
| Veröffentlicht =
| LetzteVersion =
| LetzteVersion =
| LetzteVersionDatum =
| LetzteVersionDatum =
| Art = [[Datenkompression]]
| Art = [[Datenkompression]]
| Container für = beliebige [[Datei]]en
| Container für = beliebige [[Datei]]en
| Enthalten in =
| Enthalten in =
| Erweitert von =
| Erweitert von =
| Erweitert zu =
| Erweitert zu =
| Standard = [//www.iana.org/assignments/media-types/application/zip PKWARE/IANA]
| Standard = [https://www.iana.org/assignments/media-types/application/zip PKWARE/IANA]
| Website =
| Website =
}}
}}


Das '''ZIP-Dateiformat''' (von {{enS|zipper}} ‚[[Reißverschluss]]‘) ist ein Format für verlustfrei [[Datenkompression|komprimierte]] Dateien, das einerseits den Platzbedarf bei der Archivierung reduziert und andererseits als [[Containerformat|Containerdatei]] fungiert, in der mehrere zusammengehörige Dateien oder auch ganze Verzeichnisbäume zusammengefasst werden können.
== rkmale ==
Die Dateiendung für zip-archivierte Dateien ist ''.zip''. Der [[Multipurpose Internet Mail Extensions|MIME]]-Typ ist ''application/zip''.<ref>{{Internetquelle |autor=Paul Lindner |url=https://www.iana.org/assignments/media-types/application/zip |titel=Registration of a new MIME Content-Type/Subtype |werk=iana.org |hrsg=[[Internet Assigned Numbers Authority|IANA]] |datum=1993-07-20 |sprache=en |abruf=2007-09-20}}</ref>

== Geschichte ==

Das ZIP-Format wurde ursprünglich 1989 mit den Programmen [[PKZIP]] (komprimieren) und PKUNZIP (dekomprimieren) vom US-Amerikaner [[Phil Katz]] entwickelt und hat in der Zwischenzeit einige Erweiterungen erfahren. Katz hatte ursprünglich ein anderes Dateiformat ([[ARC (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.

Seit 2015 ist ZIP auch als ISO/IEC 21320-1:2015 standardisiert.<ref>{{Internetquelle |url=https://www.iso.org/standard/60101.html |titel=ISO/IEC 21320-1:2015 |titelerg=Information technology — Document Container File — Part 1: Core |werk=iso.org |hrsg=ISO |datum=2015-10 |sprache=en |abruf=2022-04-11}}</ref>

== Merkmale ==


=== Container ===
=== Container ===
Zeile 33: Zeile 42:
=== Keine progressive Kompression ===
=== Keine progressive Kompression ===


Das ZIP-Format unterstützt keine [[progressive Kompression]] (auch [[englische Sprache|englisch]] ''{{lang|en|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.
Das ZIP-Format unterstützt keine [[progressive Kompression]] (auch {{enS|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 gesp[[Spezial:Spezialseiten|Spezialseiten]]<nowiki/>eichert wird (meist nur bei extrem vielen gleichartigen Dateien sinnvoll).
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 sehr vielen gleichartigen Dateien sinnvoll).


=== Nicht-sequenzielles [[Hilfe:Neuen Artikel anlegen|Neuen Artikel anlegen]]Format ===
=== Nicht-sequenzielles Format ===


Die Dateien sind als Dateieinträge ([[englische Sprache|englisch]] ''{{lang|en|file entries}}'') in beliebiger Reihenfolge gespeichert. Die Dateieinträge beginnen alle mit einem lokalen Dateikopf (englisch ''{{lang|en|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 (englisch ''{{lang|en|central directory}}''), welches sämtliche Dateieinträge anhand der lokalen Dateiköpfe referenziert. Die Reihenfolge der Dateieinträge und der 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 [[Wahlfreier Zugriff|wahlfreien Zugriffs]] (englisch ''{{lang|en|random access}}'') beschrieben werden kann.
Die Dateien sind als Dateieinträge ({{enS|file entries}}) in beliebiger Reihenfolge gespeichert. Die Dateieinträge beginnen alle mit einem lokalen Dateikopf ({{enS|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 ({{enS|central directory}}), welches sämtliche Dateieinträge anhand der lokalen Dateiköpfe referenziert. Die Reihenfolge der Dateieinträge und der 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 [[Wahlfreier Zugriff|wahlfreien Zugriffs]] ({{enS|random access}}) beschrieben werden kann.


Dieses nicht-sequenzielle Format bewirkt andererseits aber auch, dass, im Gegensatz zum seit 1977 üblichen und seit 1988 standardisierten [[TAR-Format|Tar-Format]], unvollständige oder im hinteren Teil defekte Archive gar nicht entpackt werden können.
Dieses nicht-sequenzielle Format bewirkt andererseits aber auch, dass, im Gegensatz zum seit 1977 üblichen und seit 1988 standardisierten [[TAR-Format|Tar-Format]], unvollständige oder im hinteren Teil defekte Archive gar nicht entpackt werden können.


[[Bild:ZIPformat.svg|mini|Struktur einer Zip-Datei]]
[[Datei:ZIPformat.svg|mini|Struktur einer Zip-Datei]]


=== Multivolume ===
=== Multivolume ===
Zeile 50: Zeile 59:
=== Packalgorithmen ===
=== Packalgorithmen ===


Neben der bis zur PKZip-Version 2.x am besten packenden Methode [[Deflate]] unterstützt ZIP noch eine Reihe weiterer [[Kompressionsalgorithmus|Kompressionsalgorithmen]]<ref>{{cite web | author=PKWARE Inc | title=ZIP File Format Specification | url=https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT |language=englisch|accessdate=2017-08-18|date=2014-10-01}}</ref>:
Neben der bis zur PKZip-Version 2.x am besten packenden Methode [[Deflate]] unterstützt ZIP noch eine Reihe weiterer [[Kompressionsalgorithmus|Kompressionsalgorithmen]]<ref>{{Internetquelle |url=https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT |titel=ZIP File Format Specification |titelerg=Version 6.3.4 |werk=pkware.cachefly.net |hrsg=PKWARE Inc |datum=2014-10-01 |sprache=en |archiv-url=https://web.archive.org/web/20141224161935/https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT |archiv-datum=2014-12-24 |abruf=2017-08-18}}</ref>:


{| class="wikitable"
{| class="wikitable"
|-
! Methode !! Kurztext !! Kommentar
! Methode !! Kurztext !! Kommentar
|-
|-
Zeile 95: Zeile 105:
| 19 || IBM LZ77 z Architecture (PFS) ||
| 19 || IBM LZ77 z Architecture (PFS) ||
|-
|-
| 20 || Zstandard Compression || (2020) pkzip 6.3.7 -> deprecated (use method 93 for zstd)
| 95 || [[Xz]](LZMA2) 1.0.4 || Erweiterung durch WinZIP 18.0 (November 2013)<ref>[http://kb.winzip.com/kb/entry/294/#comp kb.winzip.com]</ref><ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
|-
|-
| 96 || JPEG Compression<ref>[http://imagewz.winzip.com/static/wz_jpg_comp.pdf imagewz.winzip.com]</ref> || Erweiterung durch WinZIP 12.0 (September 2008)<ref>[https://www.winzip.com/wz54.htm winzip.com]</ref>
| 92 || Reference Compression || (2020) Erweiterung ab Winzip 25<ref>https://www.winzip.com/en/support/compression-methods/</ref>
|-
| 93 || Zstandard Compression|| (2020) Wechsel zu 93 von 20 mit pkzip 6.3.8<ref>https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.8.TXT</ref>, ab Winzip 24
|-
| 94 || MP3 Compression || (2016) ab Winzip 21
|-
| 95 || [[Xz]] (LZMA2) 1.0.4 || Erweiterung durch WinZIP 18.0 (November 2013)<ref>[http://kb.winzip.com/kb/entry/294/#comp kb.winzip.com]</ref><ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
|-
| 96 || JPEG Compression<ref>[http://imagewz.winzip.com/static/wz_jpg_comp.pdf imagewz.winzip.com] (PDF)</ref> || Erweiterung durch WinZIP 12.0 (September 2008)<ref>[https://www.winzip.com/wz54.htm winzip.com]</ref>
|-
|-
| 97 || WavPack || Erweiterung durch WinZIP 11.0 Beta (Oktober 2006)<ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
| 97 || WavPack || Erweiterung durch WinZIP 11.0 Beta (Oktober 2006)<ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
Zeile 103: Zeile 121:
| 98 || PPMd Version 1, rev 1 || Erweiterung durch WinZIP 10.0 Beta (August 2005)<ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
| 98 || PPMd Version 1, rev 1 || Erweiterung durch WinZIP 10.0 Beta (August 2005)<ref>[https://www.winzip.com/comp_info.htm winzip.com]</ref>
|-
|-
| 99 || AES-verschlüsselt || Erweiterung durch WinZIP <ref>[https://www.winzip.com/wz54.htm winzip.com]</ref>
| 99 || AES-verschlüsselt || Erweiterung durch WinZIP<ref>[https://www.winzip.com/wz54.htm winzip.com]</ref>
|}
|}


Zeile 114: Zeile 132:
Das Dateiformat und das Kompressionsverfahren [[Deflate]] sind [[Public Domain]] und erlangten unter anderem dadurch eine weltweite Verbreitung und 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 [[De-facto-Standard|Quasi-Standard]] in zahlreichen weiteren Formaten, wie den Bilddateiformaten [[Portable Network Graphics]] (PNG) und [[Tagged Image File Format]] (TIFF), dem [[OpenDocument]]- und dem [[Office Open XML|Office-Open-XML]]-Format der [[ISO]] wieder.
Die Deflate-Methode findet sich als [[De-facto-Standard|Quasi-Standard]] in zahlreichen weiteren Formaten, wie den Bilddateiformaten [[Portable Network Graphics]] (PNG) und [[Tagged Image File Format]] (TIFF), dem [[OpenDocument]]- und dem [[Office Open XML|Office-Open-XML]]-Format der [[Internationale Organisation für Normung|ISO]] wieder.


== Programme ==
== Programme ==


Neben PKZIP existieren zahlreiche andere Programme, die dieses Dateiformat bearbeiten können. Dazu zählen kommerzielle Programme, wie [[WinZip]] mit einer sehr großen Verbreitung, oder freie Programme wie [[Info-ZIP]], [[PeaZip]] oder [[7-Zip]], dessen optimierter Deflate-Algorithmus obendrein geringfügig kleinere PKZIP-2.xx-kompatible Dateien erzeugen kann.
Neben PKZIP existieren zahlreiche andere Programme, die dieses Dateiformat bearbeiten können. Dazu zählen freie Programme wie [[Info-ZIP]], [[PeaZip]], [[Xarchiver]] oder [[7-Zip]], dessen optimierter Deflate-Algorithmus obendrein geringfügig kleinere PKZIP-2.xx-kompatible Dateien erzeugen kann. Ferner existieren kommerzielle Programme, wie [[WinRAR]] oder [[WinZip]].


[[Programmbibliothek|Programm-]] und [[Klassenbibliothek]]en 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. Weiter gibt es die Klassenbibliothek Zip64File, welche Zip-Dateien als sogenannte Direktzugriffsdateien ({{enS|random access files}}) handhaben kann. Zip64File steht der Öffentlichkeit vollumfänglich, kostenfrei und inklusive Quellcode zur Verfügung.
[[Bild:Winzip-logo2.svg|mini|200px|Logo von ''WinZIP'', einem verbreiteten ZIP-Programm für Windows]]


Das im System [[macOS]] integrierte Programm ''BOMArchiveHelper'' erzeugt und dekomprimiert ebenfalls im Zip-Format. Auch der Datei-Explorer unter Windows ist in der Lage, zip-Dateien zu packen und zu entpacken, sodass hier in der Regel keine weitere Software installiert werden muss.<ref>{{Internetquelle |url=https://support.microsoft.com/de-de/help/4028088/windows-zip-and-unzip-files |titel=Komprimieren (Zippen) und Entpacken (Entzippen) von Dateien |werk=Windows-Support |hrsg=Microsoft Corporation |sprache=de |abruf=2020-05-08}}</ref> Aus lizenzrechtlichen Gründen durfte die Implementierung in Windows nicht in der Lage sein, programmierbar benutzt werden zu können.<ref>{{Internetquelle |autor=Raymond Chen |url=https://devblogs.microsoft.com/oldnewthing/20180515-00/?p=98755 |titel=Why is Windows Compressed Folders (Zip folders) support stuck at the turn of the century? |werk=devblogs.microsoft.com |hrsg=Microsoft |datum=2018-05-15 |sprache=en |abruf=2024-04-01}}</ref>
[[Programmbibliothek|Programm-]] und [[Klassenbibliothek]]en 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. Weiter gibt es die Klassenbibliothek Zip64File, welche Zip-Dateien als sogenannte Direktzugriffsdateien (englisch ''{{lang|en|random access files}}'') handhaben kann. Zip64File steht der Öffentlichkeit vollumfänglich, kostenfrei und inklusive Quellcode zur Verfügung.

Das im System [[macOS]] 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&nbsp;GB beziehungsweise 4&nbsp;GB enthalten, umgehen.<ref>[http://www.info-zip.org/FAQ.html#limits Limitierungen der Info-ZIP-Implementierung]</ref> Um solche Dateien zu entpacken, kann man jedoch andere Programme, wie beispielsweise 7z verwenden.


== Name, Namensverwirrung ==
== 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.
Nach Auskunft der Firma PKWare bezieht sich der Name ''zip'' (englisch 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 (Packprogramm)|tar]]). Auch bei [[7-Zip]] wird zwar das ZIP-Dateiformat voll unterstützt, aber das eigene Archivformat [[7z]] ist nicht mit ZIP kompatibel.
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 (Packprogramm)|tar]]). Auch bei [[7-Zip]] wird zwar das ZIP-Dateiformat voll unterstützt, aber das eigene Archivformat [[7z]] ist nicht mit ZIP kompatibel.
Zeile 136: Zeile 150:
[[WinZip]] führte mit Version 12.1 die Erweiterung [[zipx]] des ZIP-Formats ein, die die Verwendung neuerer Kompressionsmethoden als DEFLATE, insbesondere BZip, LZMA, PPMd, Jpeg and Wavpack, kennzeichnet.
[[WinZip]] führte mit Version 12.1 die Erweiterung [[zipx]] des ZIP-Formats ein, die die Verwendung neuerer Kompressionsmethoden als DEFLATE, insbesondere BZip, LZMA, PPMd, Jpeg and Wavpack, kennzeichnet.


Das Wort „zippen“ wird gelegentlich als [[Synonymie|Synonym]] für „komprimiert archivieren“ verwendet, jedoch muss dabei nicht zwangsläufig das Packen als Zip-Datei gemeint sein.
Das Wort „zippen“ wird gelegentlich als [[Deonym]] für „komprimiert archivieren“ verwendet, jedoch muss dabei nicht zwangsläufig das Packen als Zip-Datei gemeint sein.


== ZIP-Komprimierung in anderen Datei-Formaten ==
== ZIP-Komprimierung in anderen Datei-Formaten ==
Zeile 142: Zeile 156:
Bei folgenden Dateiformaten handelt es sich um Zip-Dateien, in denen sich allerdings bestimmte Dateien befinden müssen:
Bei folgenden Dateiformaten handelt es sich um Zip-Dateien, in denen sich allerdings bestimmte Dateien befinden müssen:


* ''{{lang|en|[[Java Archive]]}}'' (JAR) – ein auf Zip-basierendes Format für [[Java-Technologie|Java]]-Programmdaten
* ''{{lang|en|[[Java Archive]]}}'' (JAR) – ein auf Zip basierendes Format für [[Java-Technologie|Java]]-Programmdaten
* ''{{lang|en|Android Package}}'' (APK) – ähnlich wie JAR-Dateien jedoch für [[Android (Betriebssystem)|Android]]<ref>[//www.giga.de/apps/android/tipps/apk-was-ist-das-eigentlich/ APK: Was ist das eigentlich?] – ''[[GIGA|Giga]]'', am {{Datum|28|4|2014}}</ref><ref>[//www.droidwiki.org/wiki/Apk Android package] – Eintrag im ''Android-Wiki''; u.&nbsp;a. mit „Die verwendete Programmiersprache ist dabei meist Java, […]“, im dortigen (zuletzt am {{Datum|5|11|2017}} geänderten) [//www.droidwiki.org/w/index.php?title=Apk&oldid=16548#APK-Datei_erstellen Abschnitt „APK-Datei erstellen“]</ref>
* ''{{lang|en|Android Package}}'' (APK) – ähnlich wie JAR-Dateien jedoch für [[Android (Betriebssystem)|Android]]<ref>[https://www.giga.de/apps/android/tipps/apk-was-ist-das-eigentlich/ APK: Was ist das eigentlich?] – ''[[GIGA|Giga]]'', am 28. April 2014</ref><ref>[https://www.droidwiki.org/wiki/Apk Android package] – Eintrag im ''Android-Wiki''; u.&nbsp;a. mit „Die verwendete Programmiersprache ist dabei meist Java,&nbsp;[…]“, im dortigen (zuletzt am 5. November 2017 geänderten) [https://www.droidwiki.org/w/index.php?title=Apk&oldid=16548#APK-Datei_erstellen Abschnitt „APK-Datei erstellen“]</ref>
* ''{{lang|en|[[OpenDocument]]}}'' (ODF) – das unter anderem von [[Apache OpenOffice]] verwendete Dateiformat ist ein auf mehrere [[Extensible Markup Language|XML]]-Dateien aufbauendes Format, welches mithilfe von ''Zip'' zu einzelnen Dateien komprimiert wird
* ''{{lang|en|[[OpenDocument]]}}'' (ODF) – das unter anderem von [[Apache OpenOffice]] verwendete Dateiformat ist ein auf mehrere [[Extensible Markup Language|XML]]-Dateien aufbauendes Format, welches mithilfe von ''Zip'' zu einzelnen Dateien komprimiert wird
* ''{{lang|en|[[Office Open XML]]}}'' von [[Microsoft Office]] enthält ebenfalls ZIP-komprimierte XML-Dateien
* ''{{lang|en|[[Office Open XML]]}}'' von [[Microsoft Office]] enthält ebenfalls ZIP-komprimierte XML-Dateien
Zeile 149: Zeile 163:


== Siehe auch ==
== Siehe auch ==

* [[Liste von Datenkompressionsprogrammen]]
* [[Liste von Datenkompressionsprogrammen]]


== Weblinks ==
== Weblinks ==
* [https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT PKWARE: ''.ZIP File Format Specification''], 1. Oktober 2014 (englisch)

* [https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT PKWARE: ''.ZIP File Format Specification''], 1.&thinsp;Oktober 2014 (englisch)
* [http://www.winzip.de/aes_info.htm Spezifikation zur AES-Verschlüsselung in Zip-Formaten]
* [http://www.winzip.de/aes_info.htm Spezifikation zur AES-Verschlüsselung in Zip-Formaten]
* [http://www.gzip.org/zlib/zlib_tech.html zlib Technical Details] (englisch)
* [https://www.zlib.net/zlib_tech.html zlib Technical Details] (englisch)
* RFC 1950 ZLIB Compressed Data Format Specification version 3.3 (englisch)
* {{RFC-Internet |Autor=P. Deutsch, J-L. Gailly |RFC=1950 |Titel=ZLIB Compressed Data Format Specification version 3.3 |Datum=1996-05}}
* [http://www.info-zip.org/FAQ.html#Y2K Jahr 2038] [[Jahr-2038-Problem]]
* [http://www.info-zip.org/FAQ.html#Y2K Jahr 2038] [[Jahr-2038-Problem]]


== Einzelnachweise ==
== Einzelnachweise ==
<references responsive />


{{SORTIERUNG:ZIP}}
<references/>
[[Kategorie:Archivformat]]

{{SORTIERUNG:Zip}}
[[Kategorie:Datenformat]]
[[Kategorie:Datenkompression]]
[[Kategorie:Datenkompression]]

Aktuelle Version vom 4. Juli 2024, 00:08 Uhr

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/IANA

Das ZIP-Dateiformat (von englisch zipperReißverschluss‘) ist ein Format für verlustfrei komprimierte Dateien, das einerseits den Platzbedarf bei der Archivierung reduziert und andererseits als Containerdatei fungiert, in der mehrere zusammengehörige Dateien oder auch ganze Verzeichnisbäume zusammengefasst werden können. Die Dateiendung für zip-archivierte Dateien ist .zip. Der MIME-Typ ist application/zip.[1]

Das ZIP-Format wurde ursprünglich 1989 mit den Programmen PKZIP (komprimieren) und PKUNZIP (dekomprimieren) vom US-Amerikaner Phil Katz entwickelt 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.

Seit 2015 ist ZIP auch als ISO/IEC 21320-1:2015 standardisiert.[2]

Das ZIP-Format ist zunächst ein Datencontainer, in den mehrere Dateien komprimiert oder unkomprimiert gespeichert und auch einzeln entkomprimiert (extrahiert) werden können. Darüber hinaus ermöglicht das Format auch das Mitspeichern des dazugehörigen Speicherort-Pfads. Auch eine Verschlüsselung der ansonsten lediglich komprimierten Dateien mit einem Passwort ist möglich.

Keine progressive Kompression

[Bearbeiten | Quelltext bearbeiten]

Das ZIP-Format unterstützt keine progressive Kompression (auch englisch 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 sehr vielen gleichartigen Dateien sinnvoll).

Nicht-sequenzielles Format

[Bearbeiten | Quelltext bearbeiten]

Die Dateien sind als Dateieinträge (englisch file entries) in beliebiger Reihenfolge gespeichert. Die Dateieinträge beginnen alle mit einem lokalen Dateikopf (englisch 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 (englisch central directory), welches sämtliche Dateieinträge anhand der lokalen Dateiköpfe referenziert. Die Reihenfolge der Dateieinträge und der 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 (englisch random access) beschrieben werden kann.

Dieses nicht-sequenzielle Format bewirkt andererseits aber auch, dass, im Gegensatz zum seit 1977 üblichen und seit 1988 standardisierten Tar-Format, unvollständige oder im hinteren Teil defekte Archive gar nicht entpackt werden können.

Struktur einer Zip-Datei

Es ist weiterhin möglich, das Archiv auf mehrere Dateien zu verteilen (zum Beispiel um große Dateien in Stücke zu teilen, die jeweils auf eine CD oder DVD passen).

Packalgorithmen

[Bearbeiten | Quelltext bearbeiten]

Neben der bis zur PKZip-Version 2.x am besten packenden Methode Deflate unterstützt ZIP noch eine Reihe weiterer Kompressionsalgorithmen[3]:

Methode Kurztext Kommentar
0 Store Die Datei wird ohne Kompression gespeichert.
1 UnShrinking Dynamischer Lempel-Ziv-Welch-Algorithmus
2 Expanding – Kompressionsstufe 1
3 Expanding – Kompressionsstufe 2
4 Expanding – Kompressionsstufe 3
5 Expanding – Kompressionsstufe 4
6 Imploding
7 Tokenization
8 Deflating LZSS und Huffman-Entropiekodierung
9 Enhanced Deflating (DEFLATE64)
10 PKWARE Data Compression Library Imploding (ehemals IBM TERSE)
11 reserviert
12 Bzip2
13 reserviert
14 LZMA[4][5] Lempel-Ziv-Markow-Algorithmus
15 reserviert
16 reserviert
17 reserviert
18 IBM TERSE (neu)
19 IBM LZ77 z Architecture (PFS)
20 Zstandard Compression (2020) pkzip 6.3.7 -> deprecated (use method 93 for zstd)
92 Reference Compression (2020) Erweiterung ab Winzip 25[6]
93 Zstandard Compression (2020) Wechsel zu 93 von 20 mit pkzip 6.3.8[7], ab Winzip 24
94 MP3 Compression (2016) ab Winzip 21
95 Xz (LZMA2) 1.0.4 Erweiterung durch WinZIP 18.0 (November 2013)[8][9]
96 JPEG Compression[10] Erweiterung durch WinZIP 12.0 (September 2008)[11]
97 WavPack Erweiterung durch WinZIP 11.0 Beta (Oktober 2006)[12]
98 PPMd Version 1, rev 1 Erweiterung durch WinZIP 10.0 Beta (August 2005)[13]
99 AES-verschlüsselt Erweiterung durch WinZIP[14]

Es existieren mittlerweile nachträglich eingeführte Erweiterungen wie die Zip128-Erweiterung.

Verbreitung, Bedeutung

[Bearbeiten | Quelltext bearbeiten]

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- und dem Office-Open-XML-Format der ISO wieder.

Neben PKZIP existieren zahlreiche andere Programme, die dieses Dateiformat bearbeiten können. Dazu zählen freie Programme wie Info-ZIP, PeaZip, Xarchiver oder 7-Zip, dessen optimierter Deflate-Algorithmus obendrein geringfügig kleinere PKZIP-2.xx-kompatible Dateien erzeugen kann. Ferner existieren kommerzielle Programme, wie WinRAR oder WinZip.

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. Weiter gibt es die Klassenbibliothek Zip64File, welche Zip-Dateien als sogenannte Direktzugriffsdateien (englisch random access files) handhaben kann. Zip64File steht der Öffentlichkeit vollumfänglich, kostenfrei und inklusive Quellcode zur Verfügung.

Das im System macOS integrierte Programm BOMArchiveHelper erzeugt und dekomprimiert ebenfalls im Zip-Format. Auch der Datei-Explorer unter Windows ist in der Lage, zip-Dateien zu packen und zu entpacken, sodass hier in der Regel keine weitere Software installiert werden muss.[15] Aus lizenzrechtlichen Gründen durfte die Implementierung in Windows nicht in der Lage sein, programmierbar benutzt werden zu können.[16]

Name, Namensverwirrung

[Bearbeiten | Quelltext bearbeiten]

Nach Auskunft der Firma PKWare bezieht sich der Name zip (englisch 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.

WinZip führte mit Version 12.1 die Erweiterung zipx des ZIP-Formats ein, die die Verwendung neuerer Kompressionsmethoden als DEFLATE, insbesondere BZip, LZMA, PPMd, Jpeg and Wavpack, kennzeichnet.

Das Wort „zippen“ wird gelegentlich als Deonym für „komprimiert archivieren“ verwendet, jedoch muss dabei nicht zwangsläufig das Packen als Zip-Datei gemeint sein.

ZIP-Komprimierung in anderen Datei-Formaten

[Bearbeiten | Quelltext bearbeiten]

Bei folgenden Dateiformaten handelt es sich um Zip-Dateien, in denen sich allerdings bestimmte Dateien befinden müssen:

  • PKWARE: .ZIP File Format Specification, 1. Oktober 2014 (englisch)
  • Spezifikation zur AES-Verschlüsselung in Zip-Formaten
  • zlib Technical Details (englisch)
  • P. Deutsch, J-L. Gailly: RFC 1950 – ZLIB Compressed Data Format Specification version 3.3. Mai 1996 (englisch).
  • Jahr 2038 Jahr-2038-Problem

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Paul Lindner: Registration of a new MIME Content-Type/Subtype. In: iana.org. IANA, 20. Juli 1993, abgerufen am 20. September 2007 (englisch).
  2. ISO/IEC 21320-1:2015. Information technology — Document Container File — Part 1: Core. In: iso.org. ISO, Oktober 2015, abgerufen am 11. April 2022 (englisch).
  3. ZIP File Format Specification. Version 6.3.4. In: pkware.cachefly.net. PKWARE Inc, 1. Oktober 2014, archiviert vom Original am 24. Dezember 2014; abgerufen am 18. August 2017 (englisch).
  4. pkware.cachefly.net
  5. winzip.com
  6. https://www.winzip.com/en/support/compression-methods/
  7. https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.8.TXT
  8. kb.winzip.com
  9. winzip.com
  10. imagewz.winzip.com (PDF)
  11. winzip.com
  12. winzip.com
  13. winzip.com
  14. winzip.com
  15. Komprimieren (Zippen) und Entpacken (Entzippen) von Dateien. In: Windows-Support. Microsoft Corporation, abgerufen am 8. Mai 2020.
  16. Raymond Chen: Why is Windows Compressed Folders (Zip folders) support stuck at the turn of the century? In: devblogs.microsoft.com. Microsoft, 15. Mai 2018, abgerufen am 1. April 2024 (englisch).
  17. APK: Was ist das eigentlich?Giga, am 28. April 2014
  18. Android package – Eintrag im Android-Wiki; u. a. mit „Die verwendete Programmiersprache ist dabei meist Java, […]“, im dortigen (zuletzt am 5. November 2017 geänderten) Abschnitt „APK-Datei erstellen“