Frage Wie hängen zlib, gzip und zip zusammen? Was haben sie gemeinsam und wie unterscheiden sie sich?


Der Komprimierungsalgorithmus, der in zlib ist im Wesentlichen das gleiche wie in gzip und Postleitzahl. Was sind gzip und Postleitzahl? Wie unterscheiden sie sich und wie sind sie gleich?


793
2017-12-24 13:48


Ursprung


Antworten:


Kurzform:

.zip ist ein Archivformat in der Regel verwenden die Komprimierungsmethode auslassen. Das .gz gzip-Format ist für einzelne Dateien, auch mit der Deflate-Komprimierungsmethode. Häufig wird gzip in Kombination mit verwendet tar, um ein komprimiertes Archivformat zu erstellen, .tar.gz. Das zlib-Bibliothek bietet Deflate Komprimierungs- und Dekomprimierungscode für die Verwendung von zip, gzip, png (die verwendet die Zlib-Wrapper Deflate Daten) und viele andere Anwendungen.

Lange Form:

Das ZIP-Format wurde von Phil Katz als offenes Format mit einer offenen Spezifikation entwickelt, wobei seine Implementierung, PKZIP, Shareware war. Es ist ein Archivformat, das Dateien und ihre Verzeichnisstruktur speichert, wobei jede Datei einzeln komprimiert wird. Der Dateityp ist .zip. Die Dateien sowie die Verzeichnisstruktur können optional verschlüsselt werden.

Das ZIP-Format unterstützt mehrere Komprimierungsmethoden:

0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1

Die Methoden 1 bis 7 sind historisch und werden nicht verwendet. Die Methoden 9 bis 98 sind relativ neue Zusätze und liegen in variierenden, geringen Anwendungsmengen vor. Die einzige Methode, die im ZIP-Format wirklich weit verbreitet ist, ist Methode 8, Luft auslassenund in etwas geringerem Maße Methode 0, die überhaupt keine Komprimierung ist. Praktisch jeder .zip Datei, die Sie in freier Wildbahn finden werden, verwendet ausschließlich Methoden 8 und 0, wahrscheinlich nur Methode 8. (Methode 8 hat auch eine Möglichkeit, die Daten ohne Komprimierung und relativ wenig Expansion effektiv zu speichern, und Methode 0 kann nicht gestreamt werden, während Methode 8 kann sein.)

Das ISO / IEC 21320-1: 2015 Standard für Dateicontainer ist ein eingeschränktes Zip-Format, wie es in Java-Archivdateien (.jar), Office Open XML-Dateien (Microsoft Office .docx, .xlsx, .pptx), Office Document Format-Dateien (.odt, .ods, .odp) verwendet wird. und EPUB-Dateien (.epub). Dieser Standard beschränkt die Komprimierungsmethoden auf 0 und 8 sowie andere Einschränkungen, z. B. keine Verschlüsselung oder Signaturen.

Um 1990, der Info-ZIP-Gruppe schrieb portable, freie, Open - Source - Implementierungen von zip und unzip Utilities, unterstützt die Komprimierung mit dem Deflate-Format und Dekomprimierung dieser und der früheren Formate. Dies erweitert die Nutzung der .zip Format.

In den frühen 90er Jahren, der gzip-Format wurde als Ersatz für die Unix compress Nützlichkeit, abgeleitet vom Deflate-Code in den Info-ZIP-Dienstprogrammen. Unix compress wurde entworfen, um eine einzelne Datei oder einen Stream zu komprimieren, und fügt einen hinzu .Z zum Dateinamen. compress nutzt die LZW-Komprimierungsalgorithmus, die zu diesem Zeitpunkt unter Patentschutz stand und deren freie Verwendung von den Patentinhabern bestritten wurde. Obwohl einige spezifische Implementierungen von Deflate von Phil Katz patentiert wurden, war das Format nicht, und so war es möglich, eine Deflate-Implementierung zu schreiben, die keine Patente verletzte. Diese Umsetzung wurde in den letzten 20 Jahren nicht so stark in Frage gestellt. Das Unix gzipDienstprogramm wurde als Drop-In-Ersatz für gedacht compressund kann tatsächlich dekomprimieren compress-komprimierte Daten (vorausgesetzt, Sie konnten diesen Satz parsen). gzip hängt an .gz zum Dateinamen. gzip verwendet das komprimierte Datenformat Deflate, das etwas besser komprimiert als Unix compress, hat eine sehr schnelle Dekomprimierung und fügt eine CRC-32 als Integritätsprüfung für die Daten hinzu. Das Header-Format erlaubt auch die Speicherung von mehr Informationen als die compress Format zulässig, z. B. der ursprüngliche Dateiname und die Änderungszeit der Datei.

Obwohl compress komprimiert nur eine einzelne Datei, war es üblich, die zu verwenden tar Dienstprogramm, um ein Archiv von Dateien, ihre Attribute und ihre Verzeichnisstruktur in einem einzigen zu erstellen .tar Datei, und um es dann mit komprimieren compress ein ... machen .tar.Z Datei. In der Tat die tar Dienstprogramm hatte und hat immer noch eine Option, die Komprimierung zur gleichen Zeit zu tun, anstatt die Ausgabe von tar zu compress. Dies alles wurde auf das gzip-Format übertragen, und tar hat eine Option, um direkt zu komprimieren .tar.gz Format. Das tar.gz Format komprimiert besser als die .zip Ansatz, da die Komprimierung von a .tar kann die Redundanz über Dateien hinweg nutzen, besonders viele kleine Dateien. .tar.gz ist aufgrund seiner sehr hohen Portabilität das gebräuchlichste Archivformat unter Unix, aber es werden auch effektivere Komprimierungsmethoden verwendet, so dass Sie es oft sehen werden .tar.bz2 und .tar.xz Archiv.

nicht wie .tar, .zip hat am Ende ein zentrales Verzeichnis, das eine Liste der Inhalte enthält. Dies und die separate Komprimierung ermöglicht einen wahlfreien Zugriff auf die einzelnen Einträge in a .zip Datei. EIN .tar Die Datei müsste von Anfang bis Ende dekomprimiert und gescannt werden, um ein Verzeichnis zu erstellen .tar Datei ist aufgeführt.

Kurz nach der Einführung von gzip stellte derselbe Patentstreit um die Mitte der 90er Jahre die freie Verwendung des .gif Bildformat, sehr verbreitet auf Bulletin Boards und dem World Wide Web (eine neue Sache zu der Zeit). So hat eine kleine Gruppe das verlustfrei komprimierte Bildformat PNG mit Dateityp erstellt .png, ersetzen .gif. Dieses Format verwendet auch das Deflate-Format für die Komprimierung, das angewendet wird, nachdem Filter auf den Bilddaten mehr Redundanz offengelegt haben. Um die verbreitete Verwendung des PNG-Formats zu fördern, wurden zwei freie Code-Bibliotheken erstellt. libpng und zlib. libpng behandelte alle Funktionen des PNG-Formats, und zlib stellte den Komprimierungs- und Dekomprimierungscode zur Verwendung durch libpng sowie für andere Anwendungen bereit. zlib wurde aus der gzip Code.

Alle genannten Patente sind inzwischen abgelaufen.

Die zlib-Bibliothek unterstützt Deflate-Komprimierung und Dekomprimierung sowie drei Arten von Wrapping um die deflate-Streams. Das sind: keine Verpackung überhaupt ("roh" deflate), zlib Verpackung, die in den Datenblöcken des PNG-Formats verwendet wird, und gzip wrapping, um gzip-Routinen für den Programmierer bereitzustellen. Der Hauptunterschied zwischen Zlib und Gzip-Wrapping besteht darin, dass das Zlib-Wrapping kompakter ist, sechs Byte im Vergleich zu mindestens 18 Byte für Gzip, und die Integritätsprüfung Adler-32 läuft schneller als das CRC-32, das gzip verwendet. Raw Deflate wird von Programmen verwendet, die den .zipFormat, das ein anderes Format ist, das komprimierte Daten deflate umleitet.

zlib wird heute für die Übertragung und Speicherung von Daten verwendet. Zum Beispiel komprimieren und dekomprimieren die meisten HTTP-Transaktionen von Servern und Browsern die Daten mithilfe von zlib.

Unterschiedliche Implementierungen von Deflate können zu unterschiedlichen komprimierten Ausgaben für dieselben Eingabedaten führen, wie durch das Vorhandensein von auswählbaren Komprimierungsstufen gezeigt wird, die es ermöglichen, die Effektivität der Komprimierung für die CPU-Zeit zu kompensieren. zlib und PKZIP sind nicht die einzigen Implementierungen der deflate Komprimierung und Dekomprimierung. Beide 7-Zip-Archivierungsprogramm und Google's zopfli Bibliothek haben die Fähigkeit, viel mehr CPU-Zeit als zlib zu verwenden, um die letzten paar Bits auszudrücken, die bei Verwendung des Deflate-Formats möglich sind, wodurch komprimierte Größen um einige Prozent im Vergleich zu zlibs höchstem Komprimierungsgrad reduziert werden. Das putz-Dienstprogramm, eine parallele Implementierung von gzip, enthält die Option, zlib (Komprimierungsstufen 1-9) oder zopfli (Komprimierungsstufe 11) zu verwenden, und mildert den zeitlichen Einfluss der Verwendung von zopfli etwas, indem die Komprimierung großer Dateien auf mehrere Prozessoren und Kerne aufgeteilt wird.


2077
2017-12-24 18:03



POSTLEITZAHL ist ein Dateiformat zum Speichern einer beliebigen Anzahl von Dateien und Ordnern zusammen mit verlustfreier Komprimierung. Es macht keine strengen Annahmen über die verwendeten Komprimierungsmethoden, wird aber am häufigsten mit verwendet DEFLATIEREN.

Gzip ist sowohl ein Komprimierungsalgorithmus, der auf DEFLATE basiert, aber weniger mit möglichen Patenten und anderen belastet ist, als auch ein Dateiformat zum Speichern einer einzelnen komprimierten Datei. Es unterstützt die Komprimierung einer beliebigen Anzahl von Dateien und Ordnern in Verbindung mit Teer. Die resultierende Datei hat eine Erweiterung von .tgz oder .tar.gz und wird allgemein als a bezeichnet Tarball.

zlib ist eine Bibliothek von Funktionen, die DEFLATE am häufigsten enthält LZ77 Menschwerdung.


38
2017-12-24 13:55



Der wichtigste Unterschied ist, dass gzip nur in der Lage ist, eine einzelne Datei zu komprimieren, während zip mehrere Dateien nacheinander komprimiert und anschließend in einer einzigen Datei archiviert. Daher kommt gzip meistens mit tear (es gibt andere Möglichkeiten). Dies bringt einige (Vor-) Vorteile mit sich.
Wenn Sie ein großes Archiv haben und nur eine einzige Datei benötigen, müssen Sie die gesamte gzip-Datei dekomprimieren, um zu dieser Datei zu gelangen. Dies ist nicht erforderlich, wenn Sie eine Zip-Datei haben.
Auf der anderen Seite, wenn Sie 10 ähnliche oder sogar identische Dateien komprimieren, wird das Zip-Archiv viel größer sein, da jede Datei einzeln komprimiert wird, während in Gzip in Kombination mit tar eine einzelne Datei komprimiert wird, was viel effektiver ist, wenn die Dateien sind ähnlich (gleich).


24
2017-12-24 14:03