gzip

gzip (programvara)
Originalförfattare
Utvecklare GNU-projekt
Initial release 31 oktober 1992 ; 30 år sedan ( 1992-10-31 )
Stabil frisättning
Edit this on Wikidata 1.12 / 7 april 2022
Förvar git .savannah .gnu .org /cgit /gzip .git
Skrivet i C
Operativ system Unix-liknande , Plan 9 , Inferno
Typ Datakomprimering
Licens GPL-3.0 eller senare
Hemsida www .gnu .org /software /gzip /

gzip är ett filformat och ett program som används för filkomprimering och dekomprimering . Programmet skapades av Jean-loup Gailly och Mark Adler som en gratis mjukvaruersättning för komprimeringsprogrammet som användes i tidiga Unix- system, och avsett för användning av GNU (där "g" för gzip kommer från). Version 0.1 släpptes först offentligt den 31 oktober 1992 och version 1.0 följde i februari 1993.

Dekomprimeringen av gzip -formatet kan implementeras som en strömningsalgoritm , en viktig funktion för webbprotokoll , datautbyte och ETL -applikationer (i standardpipor ).

Filformat

gzip (filformat)
Filnamnstillägg
.gz
Internet mediatyp
applikation/gzip
Uniform Type Identifier (UTI) org.gnu.gnu-zip-arkiv
Magiskt nummer 1f 8b
Utvecklad av Jean-loup Gailly och Mark Adler
Typ av format Datakomprimering
Öppna format ? Ja
Hemsida gzip .org (föråldrad)

gzip är baserat på DEFLATE -algoritmen, som är en kombination av LZ77 och Huffman-kodning . DEFLATE var tänkt som en ersättning för LZW och andra patentbelagda datakomprimeringsalgoritmer som vid den tiden begränsade användbarheten av komprimering och andra populära arkiveringsverktyg .

"gzip" används ofta också för att referera till filformatet gzip, vilket är:

  • en 10-byte rubrik, innehållande ett magiskt tal ( 1f 8b ), komprimeringsmetoden ( 08 för DEFLATE), 1-byte med huvudflaggor, en 4-byte tidsstämpel, komprimeringsflaggor och operativsystemets ID.
  • valfria extra rubriker som tillåts av rubrikflaggorna, inklusive det ursprungliga filnamnet, ett kommentarfält, ett "extra" fält och den nedre halvan av en CRC-32- kontrollsumma för rubriksektionen.
  • en kropp som innehåller en DEFLATE-komprimerad nyttolast
  • en 8-byte trailer, innehållande en CRC-32 kontrollsumma och längden på den ursprungliga okomprimerade datan, modulo 2 32 .
gzip kan kombineras med tar -programmet för att komprimera flera filer.

Även om filformatet också tillåter flera sådana strömmar att sammanfogas (gzippade filer är helt enkelt dekomprimerade sammanlänkade som om de ursprungligen vore en fil), används gzip normalt för att komprimera bara enstaka filer. Komprimerade arkiv skapas vanligtvis genom att samla samlingar av filer till ett enda tar- arkiv (även kallat tarball ), och sedan komprimera det arkivet med gzip. Den slutliga komprimerade filen har vanligtvis tillägget .tar.gz eller .tgz .

gzip ska inte förväxlas med ZIP- arkivformatet, som också använder DEFLATE . ZIP-formatet kan innehålla samlingar av filer utan en extern arkivering, men är mindre kompakt än komprimerade tarballs som innehåller samma data, eftersom det komprimerar filer individuellt och inte kan dra fördel av redundans mellan filer ( solid komprimering ).

Genomföranden

NetBSD Gzip / FreeBSD Gzip
Utvecklare NetBSD Foundation
Förvar cvsweb .netbsd .org /bsdweb .cgi /src /usr .bin /gzip /
Skrivet i C
Typ Datakomprimering
Licens Förenklad BSD-licens

Olika implementeringar av programmet har skrivits. Det mest kända är GNU-projektets implementering med Lempel-Ziv- kodning (LZ77). OpenBSDs version av gzip är faktiskt komprimeringsprogrammet , till vilket stöd för gzip-formatet lades till i OpenBSD 3.4. "G" i denna specifika version står för gratis . FreeBSD , DragonFly BSD och NetBSD använder en BSD-licensierad implementering istället för GNU-versionen; det är faktiskt ett kommandoradsgränssnitt för zlib avsett att vara kompatibelt med GNU-implementeringens alternativ. Dessa implementeringar kommer ursprungligen från NetBSD och stöder dekomprimering av bzip2 och Unix- paketformatet .

Ett alternativt komprimeringsprogram som uppnår 3-8% bättre komprimering är Zopfli . Den uppnår gzip-kompatibel komprimering med mer uttömmande algoritmer, på bekostnad av komprimeringstid som krävs. Det påverkar inte dekompressionstiden.

pigz , skriven av Mark Adler, är kompatibel med gzip och snabbar upp komprimeringen genom att använda alla tillgängliga CPU-kärnor och -trådar.

Återvinning av skador

Data i block före den första skadade delen av arkivet är vanligtvis fullt läsbara. Data från block som inte har demolerats av skada som ligger efteråt kan återställas genom svåra lösningar.

Derivat och andra användningsområden

Tar - verktyget som ingår i de flesta Linux-distributioner kan extrahera .tar.gz-filer genom att skicka alternativet z , t.ex. tar -zxf file.tar.gz , där -z instruerar dekomprimering, -x betyder extrahering och -f anger namnet på den komprimerade arkivfilen att extrahera från. Alternativt -v ( verbose ) filer när de extraheras.

zlib är en abstraktion av DEFLATE-algoritmen i biblioteksform som inkluderar stöd både för filformatet gzip och ett lätt dataströmformat i dess API. Zlib-strömformatet, DEFLATE och gzip-filformatet standardiserades som RFC 1950, RFC 1951 och RFC 1952.

Gzip-formatet används i HTTP-komprimering , en teknik som används för att påskynda sändningen av HTML och annat innehåll på World Wide Web . Det är ett av de tre standardformaten för HTTP-komprimering som specificeras i RFC 2616. Denna RFC anger också ett zlib-format (kallat "DEFLATE"), vilket är lika med gzip-formatet förutom att gzip lägger till elva byte av overhead i form av headers och trailers. Ändå rekommenderas ibland gzip-formatet framför zlib eftersom Internet Explorer inte implementerar standarden korrekt och inte kan hantera zlib-formatet som specificerats i RFC 1950.

zlib DEFLATE används internt av PNG-formatet ( Portable Network Graphics) .

Sedan slutet av 1990-talet har bzip2 , ett filkomprimeringsverktyg baserat på en blocksorteringsalgoritm, vunnit en viss popularitet som en gzip-ersättning. Den producerar betydligt mindre filer (särskilt för källkod och annan strukturerad text), men till kostnaden för minne och bearbetningstid (upp till en faktor 4).

AdvanceCOMP och 7-Zip kan producera gzip-kompatibla filer med hjälp av en intern DEFLATE-implementering med bättre komprimeringsförhållanden än gzip själv – till kostnaden av mer processortid jämfört med referensimplementeringen. [ citat behövs ]

Se även

Anteckningar

  • RFC 1952 – GZIP filformatspecifikation version 4.3

externa länkar