Menü

Werkzeuge durchsuchenÄnderungsprotokoll

zum Navigieren zum ÖffnenBeschreiben Sie das Problem, nicht das Tool

Ratgeber

Ein ZIP ist ein Container, bevor es ein Kompressor ist

ZIP kann viele benannte Dateien mit oder ohne Komprimierung in einem Artefakt sammeln. Methode 0 speichert Quellbytes direkt; Methode 8 wendet DEFLATE an. Bei bereits komprimierten Medien können der Container und seine Prüfsummen nützlich sein, selbst wenn die resultierende ZIP-Datei etwas größer ist als die losen Dateien.

Zwei unabhängige Jobs, versteckt hinter einer Schaltfläche

„Diese Dateien komprimieren“ erfordert oft zwei Dinge gleichzeitig:

  1. Fügen Sie mehrere benannte Dateien in einem Objekt zusammen, das sich leicht verschieben, anhängen oder herunterladen lässt. 2. Verwenden Sie weniger Bytes als die separat verwendeten Dateien.

ZIP kann beides, aber das erste hängt nicht vom zweiten ab. Das Format ruft einen unkomprimierten Eintrag als Methode 0 auf. Es ruft den bekannten DEFLATE-Eintrag Methode 8 auf. Ein Archiv der Methode 0 ist keine gefälschte ZIP-Datei oder ein Wrapper um ein anderes Format; Es verfügt über die gleichen Eintragsdatensätze und das gleiche zentrale Verzeichnis wie eine komprimierte ZIP-Datei, wobei die Quellbytes direkt im Datenbereich platziert werden.

Diese Unterscheidung ist wichtig, da viele moderne Dateien die zweite Aufgabe bereits selbst erledigt haben. Ein JPEG beschreibt Bildinformationen mit einem speziellen verlustbehafteten Codec. Ein MP4 enthält komprimierte Audio- und Videostreams. Eine ZIP-Datei enthält komprimierte Einträge. Das Betreiben eines Allzweckkompressors über diese Bytes ist wie der Versuch, etwas, das bereits starr ist, in ein Vakuum zu verpacken: Der Behälter kann immer noch nützlich sein, aber möglicherweise ist keine Luft mehr zum Entfernen übrig.

Welchen Speicher kauft man noch?

Angenommen, ein Kunde benötigt drei Fotos, ein signiertes PDF und eine kurze MP4. Fünf lose Anhänge können verlegt oder separat heruntergeladen werden. Eine ZIP-Datei fixiert einen einzelnen äußeren Namen und hält fünf Eintragsgrenzen und Namen zusammen. Jeder Eintrag hat seine eigene Größe und CRC-32, und das zentrale Verzeichnis ermöglicht es dem Leser, einen Eintrag aufzulisten oder zu extrahieren, ohne zu erraten, wo er beginnt.

Speicher hat also auch dann einen echten Wert, wenn die Bytezahl leicht ansteigt:

  • ein Artefakt statt mehrerer; - stabile Eintragsnamen und -grenzen; - ein Verzeichnis, das von der Archivsoftware überprüft werden kann; – ein Fehlererkennungswert für jeden extrahierten Eintrag; - Genaue Quellbytes, ohne Medienkonvertierung.

Die Kosten sind struktureller Overhead. Für jeden Eintrag zeichnet ZIP einen lokalen Header in der Nähe seiner Daten und einen weiteren Datensatz im zentralen Verzeichnis auf. Dateinamen erscheinen an beiden Stellen. Streaming-Autoren können nach dem Eintrag auch einen Datendeskriptor hinzufügen, da CRC-32 und die komprimierte Größe nicht bekannt sind, wenn der lokale Header zum ersten Mal ausgegeben wird. Ein abschließender Eintrag schließt das Verzeichnis ab. Kleine Dateien können daher einen hohen prozentualen Overhead aufweisen, obwohl der absolute Anstieg nur einige hundert Bytes beträgt.

Vor dem Weiterlesen

Zehn JPEG-Fotos haben insgesamt 24 MB. Im Store-Modus wird ein ZIP mit 24,002 MB erstellt, während DEFLATE langsamer ein ZIP mit 24,006 MB erstellt. Welches Ergebnis verhält sich korrekt?

  • Die Speichermethode 0 ist eine Standard-ZIP-Methode, und das größere DEFLATE-Ergebnis ergab keine nützliche Redundanz.

  • DEFLATE kann einen kleinen Darstellungsaufwand verursachen, wenn die Eingabe bereits komprimiert ist.

  • Ja. Beides sind gültige ZIPs und das gemessene gespeicherte Ergebnis ist hier kleiner und schneller.

Beide Ergebnisse sind gültig und Store ist für diese Auswahl die bessere Wahl. Methode 0 kopiert jedes JPEG-Byte und fügt eine ZIP-Struktur hinzu, was die geringe Vergrößerung um 2 KB erklärt. Methode 8 versucht dann, bereits komprimierte JPEG-Bytes mit DEFLATE zu beschreiben; Wenn es keine sinnvolle Wiederholung findet, kann seine Blockdarstellung ein paar weitere Bytes hinzufügen, was den Anstieg um 6 KB und die zusätzliche Arbeit erklärt. Der Zweck dieser ZIP-Datei ist ein Container, kein zweiter Bildkomprimierungsdurchgang.

Wo DEFLATE seinen Platz verdient

DEFLATE kombiniert wiederholte String-Referenzen mit kompakten Codes für die verbleibenden Symbole. Es funktioniert gut, wenn die Quelle Wörter, Schlüssel, Trennzeichen, Einrückungen, Datensätze oder lange Bytesequenzen wiederholt. Textdateien, CSV-Exporte, JSON, Protokolle, Quellcode, XML und einige unkomprimierte Binärformate bieten häufig diese Form.

Die Komprimierungsstufe ändert, wie viel Aufwand der Encoder für die Suche nach einer besseren Beschreibung aufwendet. Es ändert nichts daran, was ein Leser unterstützen muss. Ein Level-1-Stream und ein Level-9-Stream sind beide ZIP-Methode 8 und derselbe DEFLATE-Decoder öffnet beide. Ein höherer Aufwand ist daher eher ein Tausch als ein Kompatibilitäts-Upgrade: Er kann etwas mehr einsparen, viel länger dauern oder bei einer einfachen Eingabe genau die gleiche Größe erzeugen.

Dateinamen sind Beweise, kein Beweis. Eine .txt-Datei ist wahrscheinlich komprimierbar und eine .jpg-Datei wahrscheinlich nicht, aber eine Textdatei mit base64-codierten komprimierten Daten kann DEFLATE widerstehen, während eine ungewöhnliche PDF-Datei mit großen unkomprimierten Streams erheblich schrumpfen kann. Wenn es auf die Übertragungsgröße ankommt, ist die gemessene Bytezahl des Archivs die Antwort. Wenn die Latenz wichtiger ist, wählen Sie basierend auf dem vorherrschenden Format und vermeiden Sie Zeitaufwand für die Feststellung eines Unterschieds von zwei Kilobyte.

Warum das zweimalige Komprimieren normalerweise fehlschlägt

Ein erfolgreicher Kompressor entfernt vorhersehbare Strukturen. Seine Ausgabe soll einer Sequenz ähneln, bei der die nächsten Bits schwer vorherzusagen sind, ohne das Vorherige zu dekodieren. Ein anderer Allzweckkompressor sieht weniger wiederholte Zeichenfolgen und eine weniger verzerrte Symbolfrequenz als die Originaldaten.

Deshalb sind diese Startmöglichkeiten in der Regel sinnvoll:

Dominantes MaterialErste WahlGrund
JPEG, PNG, WebP, AVIFSpeichernDer Bildcodec hat die Pixelinformationen bereits komprimiert
MP3, AAC, MP4, WebMSpeichernMedienstreams verwenden bereits spezielle Codecs
ZIP, gzip, 7zSpeichernDie Nutzlast ist bereits ein Archiv oder ein komprimierter Stream
Modernes gemischtes PDFLagern und dann messen, wenn die Größe wichtig istBilder, Schriftarten und Seitenströme sind möglicherweise bereits komprimiert
TXT, CSV, JSON, XML, QuellcodeAusgewogenes DEFLATEWiederholter Text und Struktur lassen sich normalerweise gut komprimieren
Raw-Dumps oder unkomprimierte BitmapsLuft ablassen und messenDie Wiederholung hängt von den Quelldaten ab

In keiner der beiden Spalten ist die Qualität gefährdet. Der ZIP-Speicher ist byteerhaltend und DEFLATE ist verlustfrei. Der Fehlermodus eines zweiten Komprimierungsdurchlaufs ist verschwendete Zeit oder eine etwas größere Darstellung, nicht ein verschlechtertes Foto.

CRC-32 beantwortet eine kleinere Frage als SHA-256

ZIP speichert für jeden Eintrag einen CRC-32. Wenn eine Software eine Datei extrahiert, berechnet sie den CRC-32 der wiederhergestellten Bytes und vergleicht ihn mit dem aufgezeichneten Wert. Das fängt häufige unbeabsichtigte Beschädigungen auf: Ein beschädigter Download, ein fehlerhafter Speicher oder eine unvollständige Kopie erzeugen wahrscheinlich nicht zufällig denselben Wert.

Der Eintrag wird nicht authentifiziert. CRC-32 ist nicht darauf ausgelegt, einer Person zu widerstehen, die Änderungen vornimmt, und eine Person, die die Bytes ersetzen kann, kann auch den aufgezeichneten CRC-32 ersetzen. Es sagt auch nichts darüber aus, wer die äußere Postleitzahl bereitgestellt hat.

Eine SHA-256-Prüfsumme hat eine andere Rolle. Wenn zwei Parteien über einen von der Datei unabhängigen Kanal einen vertrauenswürdigen Digest erhalten, können sie testen, ob ihre gesamten ZIPs Byte für Byte identisch sind. Selbst das identifiziert den Autor nicht, es sei denn, der Digest selbst wird authentifiziert. Eine digitale Signatur verknüpft Bytes mit einem Schlüssel; Eine authentifizierte Verschlüsselung kann die Vertraulichkeit und Integrität erhöhen. Einfache ZIP-Speicherung und DEFLATE tun weder das eine noch das andere.

Eine praktische Auswahlsequenz

  1. Entscheiden Sie, ob das Hauptziel ein Container, weniger Bytes oder beides ist. 2. Schauen Sie sich die vorherrschenden Daten an. Wählen Sie Store für bereits komprimierte Medien und Archive; Wählen Sie Balanced DEFLATE für Text und strukturierte Daten. 3. Erstellen Sie die ZIP-Datei und vergleichen Sie die gemeldete Bytezahl mit der Gesamtzahl der Quelle. 4. Wenn ein gemischtes Archiv so groß ist, dass der Unterschied eine Rolle spielt, versuchen Sie es einmal mit dem anderen Modus und behalten Sie den gemessenen Gewinner. 5. Betrachten Sie einen CRC-32-Pass nicht als Herkunftsnachweis. Veröffentlichen oder vergleichen Sie eine separat vertrauenswürdige Prüfsumme, wenn es auf eine identische Zustellung ankommt, und verwenden Sie eine Signatur oder eine verschlüsselte Archivanwendung, wenn die Bedrohung absichtlich erfolgt.

Das nützliche mentale Modell ist einfach: ZIP ist die Box; Bei der Lagerung oder DEFLATE handelt es sich um die Art und Weise, wie jeder Artikel darin aufbewahrt wird. Eine gute Box kann sich auch dann lohnen, wenn darin nichts kleiner wird.

Fragen

Warum wurden JPEG-Dateien durch das Einfügen in eine ZIP-Datei größer?

JPEG komprimiert Bilddaten bereits, sodass DEFLATE häufig zu wenig Wiederholungen findet, um für die eigene Darstellung zu bezahlen. Die ZIP-Datei muss außerdem einen lokalen Header, einen Dateinamen, CRC-32, Größen, einen zentralen Verzeichniseintrag und einen Endeintrag hinzufügen, sodass ein Container ohne Komprimierungsspeicherung um seinen strukturellen Overhead größer ist.

Ist eine gespeicherte ZIP-Datei immer noch eine echte ZIP-Datei?

Ja. Bei der Speicherung handelt es sich um die ZIP-Komprimierungsmethode 0, kein fehlendes Format. Jeder Eintrag hat weiterhin einen Namen, eine Größe und CRC-32, und das Archiv verfügt weiterhin über ein zentrales Verzeichnis, das normale ZIP-Leser verstehen.

Reduziert DEFLATE die Qualität eines Fotos oder Videos?

Nein. DEFLATE ist verlustfrei und die Extraktion reproduziert die genauen Eingabebytes. Bei Medien, die bereits komprimiert waren, ist die Funktion möglicherweise unwirksam, sie dekodiert oder kodiert diese Medien jedoch nicht neu und kann daher ihre Qualität nicht beeinträchtigen.

Kann CRC-32 mir sagen, ob eine ZIP-Adresse von der richtigen Person stammt?

Nein. Es dient dazu, versehentliche Änderungen zu erkennen, und jemand, der einen Eintrag bearbeitet, kann den passenden CRC-32 berechnen. Für einen stärkeren Herkunftsnachweis ist ein über einen separat vertrauenswürdigen Kanal erhaltener Auszug oder eine verifizierte digitale Signatur erforderlich.

Passende Werkzeuge

Quellen