Gzip

GZIP (Software)
Gzip-Logo.svg
Originalautor (en)
Entwickler (en) GNU -Projekt
Erstveröffentlichung 31. Oktober 1992; Vor 29 Jahren
Stabile Version
1.12[1] Edit this on Wikidata / 7. April 2022
Repository Git.Savanne.Gnu.org/cgit/gzip.Git
Geschrieben in C
Betriebssystem Unix-artig, Plan 9, Inferno
Typ Datenkompression
Lizenz GPL-3.0-oder-Later
Webseite www.Gnu.org/Software/gzip/

gzip ist ein Datei Format und ein Computerprogramm benutzt für Dateikomprimierung und Dekompression. Das Programm wurde von erstellt von Jean-Loup Gailly und Mark Adler Als ein gratis Software Austausch für die Kompresse Programm früh verwendet Unix Systeme und für den Einsatz durch GNU (Das "g" stammt von "GNU"). Version 0.1 wurde erstmals am 31. Oktober 1992 öffentlich veröffentlicht, und Version 1.0 folgte im Februar 1993.

Die Dekompression der gzip Format kann als implementiert werden Streaming -Algorithmus, ein wichtiges Merkmal für Webprotokolle, Datenaustausch und ETL (in Standardrohre) Anwendungen.

Datei Format

GZIP (Dateiformat)
Dateiname Erweiterung
.gz
Internet -Medientyp
Anwendung/gzip[2]
Uniform Typ Identifier (UTI) org.gnu.gnu-pip-archive
magische Zahl 1f 8b
Entwickelt von Jean-Loup Gailly und Mark Adler
Art des Formats Datenkompression
Offenes Format? Ja
Webseite gzip.org (obsolet)

gzip basiert auf dem Deflate Algorithmus, der eine Kombination von ist LZ77 und Huffman -Codierung. Deflate war als Ersatz für LZW und andere Patent-Cumbered Datenkompression Algorithmen was zu dieser Zeit die Benutzerfreundlichkeit von beschränkte Kompresse und andere beliebte Erziversure.

"gzip" wird häufig auch verwendet, um sich auf das GZIP -Dateiformat zu beziehen, das heißt:

  • ein 10-Byte-Header mit a magische Zahl (1f 8b) die Kompressionsmethode (08 für Deflate), 1-Byte von Header-Flags, ein 4-Byte-Zeitstempel, Komprimierungsflags und die Betriebssystem-ID.
  • Optionale zusätzliche Header, die von den Header -Flags zulässig sind, einschließlich des ursprünglichen Dateinamens, eines Kommentarfelds, eines "zusätzlichen" Felds und der unteren Hälfte von a CRC-32 Prüfsumme für den Header -Abschnitt.[3]
  • ein Körper, der eine Deflat-komprimierte enthält Nutzlast
  • eine 8-Byte-Fußzeile mit a CRC-32 Prüfsumme und die Länge der ursprünglichen unkomprimierten Daten, Modulo 232.[4]
Targzip.svg

Obwohl das Dateiformat auch mehrere solche Streams sein können verkettet (GZIPED -Dateien werden einfach dekomprimiert, als ob sie ursprünglich eine Datei wären.)[5] GZIP wird normalerweise zum Komprimieren von einzelnen Dateien verwendet.[6] Komprimierte Archive werden in der Regel durch Zusammenbau von Dateien von Dateien in einer einzigen erstellt Teer Archiv (auch genannt Tarball),[7] und dann das Archiv mit gzip komprimieren. Die endgültige komprimierte Datei hat normalerweise die Erweiterung .tar.gz oder .tgz.

gzip ist nicht zu verwechseln mit dem POSTLEITZAHL Archivformat, das auch verwendet Deflate. Das ZIP -Format kann Sammlungen von Dateien ohne externen Archiver enthalten, ist jedoch weniger kompakt als komprimiert Tarballs Halten Sie dieselben Daten, da sie Dateien einzeln komprimiert und die Redundanz zwischen Dateien nicht nutzen kann ((solide Kompression).

Implementierungen

Netbsd gzip / freebsd gzip
Entwickler (en) Die NetBSD Foundation
Repository CVSWEB.netbsd.org/bsdweb.cgi/src/usr.Behälter/gzip/
Geschrieben in C
Typ Datenkompression
Lizenz Vereinfachte BSD -Lizenz

Verschiedene Implementierungen des Programms wurden geschrieben. Am bekanntesten ist die Implementierung des GNU -Projekts mit Verwendung Lempel-Ziv Codierung (LZ77). OpenBSDDie Version von Gzip ist eigentlich die Kompresse Programm, zu dem die Unterstützung für das GZIP -Format in OpenBSD 3.4 hinzugefügt wurde. Das 'g' in dieser spezifischen Version steht für gratis.[8] Freebsd, Libelle BSD und Netbsd Verwenden Sie eine BSD-lizenzierte Implementierung anstelle der GNU-Version; Es ist eigentlich ein Befehlszeilenschnittstelle zum Zlib gedacht, mit den Optionen der GNU -Implementierung kompatibel zu sein.[9] Diese Implementierungen stammen ursprünglich von Netbsd, und Unterstützung der Dekompression von BZIP2 und die Unix Pack Format.

Ein alternatives Komprimierungsprogramm, das 3-8% bessere Komprimierung erreicht, ist Zopfli. Es erreicht die gzip-kompatible Kompression unter Verwendung von erschöpfenderen Algorithmen auf Kosten der erforderlichen Kompressionszeit. Es wirkt sich nicht auf die Dekompressionszeit aus.

Pigz, geschrieben von Mark Adler, ist mit GZIP kompatibel und beschleunigt die Komprimierung mit allen verfügbaren CPU -Kernen und -Fäden.[10]

Schadenserholung

Daten in Blöcken vor dem ersten beschädigten Teil des Archivs sind normalerweise vollständig lesbar. Daten aus Blöcken, die nicht durch Schäden abgerissen werden, die sich danach befinden kann durch schwierige Problemumgehungen wiederhergestellt werden.[11]

Derivate und andere Verwendungen

Das Teer Das Dienstprogramm, das in den meisten Linux -Verteilungen enthalten ist z Option, z. B.,, tar -zxf file.tar.gz, wo -Z weist Dekompression an, -x bedeutet Extraktion und -f Gibt den Namen der komprimierten Archivdatei an, aus der er extrahieren soll. Optional, -V (ausführlich) listet Dateien auf, die so extrahiert werden.[12]

Zlib ist eine Abstraktion des Deflate -Algorithmus in Bibliotheksformular, das sowohl Unterstützung für das GZIP -Dateiformat als auch ein leichtes Gewicht umfasst Datenstrom Format in seiner API. Das ZLIB -Stream -Format, die Deflate und das GZIP -Dateiformat wurden jeweils als RFC 1950, RFC 1951 und RFC 1952 standardisiert.

Das GZIP -Format wird in verwendet HTTP -Komprimierung, eine Technik, mit der das Senden von beschleunigt wurde Html und andere Inhalte auf der Weltweites Netz. Es ist eines der drei Standardformate für die HTTP -Komprimierung, wie in RFC 2616 angegeben. Dies RFC Gibt auch ein ZLIB -Format an (genannt "Deflate"), das dem GZIP -Format entspricht, außer dass Gzip in Form von Header und Anhängern elf Bytes Overhead hinzufügt. Trotzdem wird das GZIP -Format manchmal über ZLIB empfohlen, weil Internet Explorer Implementiert der Standard nicht korrekt und kann das in RFC 1950 angegebene ZLIB -Format nicht verarbeiten.[13]

Zlib Deflate wird intern von der verwendet Tragbare Netzwerkgrafiken (PNG) Format.

Seit den späten 1990er Jahren, BZIP2Ein Dateikomprimierungsmittel, das auf einem Block-Sorting-Algorithmus basiert, hat als GZIP-Ersatz eine gewisse Popularität erlangt. Es erzeugt erheblich kleinere Dateien (insbesondere für Quellcode und andere strukturierte Text), jedoch auf Kosten des Speichers und der Verarbeitungszeit (bis zu einem Faktor 4).[14]

AdvanceComp und 7-Zip Kann Gzip-kompatible Dateien erzeugen, wobei eine interne Deflat-Implementierung mit besseren Komprimierungsverhältnissen als GZIP selbst verwendet wird-bei den Kosten einer mehr Prozessorzeit im Vergleich zur Referenzimplementierung.

Siehe auch

Anmerkungen

  1. ^ Jim Meyering (7. April 2022). "GZIP-1.12 veröffentlicht". Abgerufen 7. April 2022.
  2. ^ Die Medientypen "Application/ZLIB" und "Application/GZIP". Tools.ietf.org. doi:10.17487/rfc6713. RFC 6713. Abgerufen 1. März 2014.
  3. ^ Deutsch <[email protected]>, L. Peter (Mai 1996). "GZIP -Dateiformatspezifikation Version 4.3". Tools.ietf.org. Abgerufen 23. Juli 2019.
  4. ^ Jean-Loup Gailly. "Gnu gzip". Gnu.org. Abgerufen 11. Oktober 2015.
  5. ^ "Gnu Gzip: Erweiterte Verwendung". Gnu.org. Abgerufen 28. November 2012.
  6. ^ "Kann Gzip mehrere Dateien in ein einzelnes Archiv komprimieren?". Gnu.org. Abgerufen 27. Januar 2010.
  7. ^ "Tarball, die Jargon -Datei, Version 4.4.7". Catb.org. Abgerufen 27. Januar 2010.
  8. ^ "OpenBSD GZIP (1) Manuelle Seite". Openbsd.org. OpenBSD. Abgerufen 4. Februar 2018.
  9. ^ "gzip". Man.Freebebsd.org. 9. Oktober 2011. Abgerufen 1. März 2014.
  10. ^ Mark Adler (2017). "Pigz: Eine parallele Implementierung von GZIP für modernen Multi-Prozessor, Multi-Core-Maschinen". zlib.net.
  11. ^ Wiederherstellung einer beschädigten .gz-Datei-Jean-Loup Gailly, Gzip.org
  12. ^ "So extrahieren / unziper tar.gz -Dateien aus Linux -Befehlszeile" extrahieren ". Wissensbasis von Phoenixnap. 14. November 2019. Abgerufen 12. Januar 2022.
  13. ^ Lawrence, Eric (21. November 2014). "Komprimieren des Webs". MSDN Blogs> ieinternals. Microsoft.
  14. ^ "Vergleichswerkzeug: 7-ZIP gegen BZIP2 gegen Gzip". compressionRatings.com. Archiviert von das Original am 1. November 2014. Abgerufen 1. November 2014.

Verweise

  • RFC 1952 - GZIP -Dateiformatspezifikation Version 4.3

Externe Links