gzip - gzip
Pierwotny autor (autorzy) | |
---|---|
Deweloper(zy) | Projekt GNU |
Pierwsze wydanie | 31 października 1992 |
Wersja stabilna | 1.11 (GNU Gzip) / 3 września 2021
|
Magazyn | git |
Napisane w | C |
System operacyjny | Uniksowy , Plan 9 , Inferno |
Rodzaj | Kompresja danych |
Licencja | GPLv3 |
Strona internetowa | www |
gzip to format pliku i aplikacja używana do kompresji i dekompresji plików . Program został stworzony przez Jean-loup Gailly i Mark Adler jako wolne oprogramowanie zastępujące program do kompresji używany we wczesnych systemach uniksowych i przeznaczony do użytku przez GNU ("g" pochodzi od "GNU"). Wersja 0.1 została po raz pierwszy opublikowana 31 października 1992, a wersja 1.0 pojawiła się w lutym 1993.
Dekompresję formatu gzip można zaimplementować jako algorytm przesyłania strumieniowego , co jest ważną funkcją dla protokołów internetowych , wymiany danych i aplikacji ETL (w standardowych potokach ).
Format pliku
Rozszerzenie nazwy pliku |
.gz
|
---|---|
Rodzaj mediów internetowych |
aplikacja/gzip |
Jednolity identyfikator typu (UTI) | org.gnu.gnu-archiwum-zip |
magiczny numer | 1f 8b |
Opracowany przez | Jean-loup Gailly i Mark Adler |
Rodzaj formatu | Kompresja danych |
Otwarty format ? | tak |
Strona internetowa |
gzip |
gzip bazuje na algorytmie DEFLATE , który jest kombinacją kodowania LZ77 i Huffmana . DEFLATE został pomyślany jako zamiennik LZW i innych obciążonych patentami algorytmów kompresji danych , które w tamtym czasie ograniczały użyteczność kompresów i innych popularnych archiwizatorów.
„gzip” jest często używany również w odniesieniu do formatu pliku gzip, który jest:
- 10-bajtowy nagłówek zawierający magiczną liczbę (
1f 8b
), metodę kompresji (08
dla DEFLATE), 1-bajtowe flagi nagłówka, 4-bajtowy znacznik czasu, flagi kompresji i identyfikator systemu operacyjnego. - opcjonalne dodatkowe nagłówki dozwolone przez flagi nagłówka, w tym oryginalna nazwa pliku, pole komentarza, pole „dodatkowe” i dolna połowa sumy kontrolnej CRC-32 dla sekcji nagłówka.
- nadwozie zawierające ładunek skompresowany DEFLATE
- 8-bajtowa stopka, zawierająca sumę kontrolną CRC-32 i długość oryginalnych nieskompresowanych danych, modulo 2 32 .
Chociaż jego format pliku pozwala również na łączenie wielu takich strumieni (pliki skompresowane gzip są po prostu dekompresowane i łączone, tak jakby były pierwotnie jednym plikiem), gzip jest zwykle używany do kompresji tylko pojedynczych plików. Archiwa skompresowane są zazwyczaj tworzone przez złożenie kolekcji plików w jedno archiwum tar (nazywane również tarball ), a następnie skompresowanie tego archiwum za pomocą gzip. Ostateczny skompresowany plik ma zwykle rozszerzenie .tar.gz lub .tgz .
gzip nie należy mylić z formatem archiwum ZIP , który również używa DEFLATE. Format ZIP może przechowywać kolekcje plików bez zewnętrznego archiwizatora, ale jest mniej kompaktowy niż skompresowane tarballe zawierające te same dane, ponieważ kompresuje pliki pojedynczo i nie może korzystać z nadmiarowości między plikami ( skompresowanie stałe ).
Realizacje
Deweloper(zy) | Fundacja NetBSD |
---|---|
Magazyn | cvsweb |
Napisane w | C |
Rodzaj | Kompresja danych |
Licencja | Uproszczona licencja BSD |
Napisano różne implementacje programu. Najbardziej znana jest implementacja Projektu GNU z wykorzystaniem kodowania Lempel-Ziv (LZ77). Wersja gzip dla OpenBSD jest w rzeczywistości programem do kompresji , do którego w OpenBSD 3.4 dodano obsługę formatu gzip. Litera „g” w tej konkretnej wersji oznacza gratis . FreeBSD , DragonFly BSD i NetBSD używają implementacji na licencji BSD zamiast wersji GNU; w rzeczywistości jest to interfejs wiersza poleceń dla zlib, który ma być zgodny z opcjami implementacji GNU. Te implementacje oryginalnie pochodzą z NetBSD i wspierają dekompresję bzip2 oraz format pakietu Unix .
Alternatywnym programem do kompresji zapewniającym 3-8% lepszą kompresję jest Zopfli . Osiąga kompresję zgodną z gzip przy użyciu bardziej wyczerpujących algorytmów, kosztem wymaganego czasu kompresji. Nie wpływa na czas dekompresji.
pigz
, napisany przez Marka Adlera, jest zgodny z gzip i przyspiesza kompresję przy użyciu wszystkich dostępnych rdzeni i wątków procesora.
gzip używa kompresji opartej na blokach z blokami do 64 kilobajtów zgodnie ze specyfikacją "BZGF".
Odzyskiwanie szkód
Dane w blokach przed pierwszą uszkodzoną częścią archiwum są zwykle w pełni czytelne. Dane z bloków, które nie zostały zniszczone przez uszkodzenia, które znajdują się później, można odzyskać za pomocą trudnych obejść.
Instrumenty pochodne i inne zastosowania
Narzędzie tar zawarte w większości dystrybucji Linuksa może wyodrębnić pliki .tar.gz, przekazując opcję z , np. tar -zxf plik.tar.gz .
zlib jest abstrakcją algorytmu DEFLATE w postaci biblioteki, która obejmuje obsługę zarówno formatu pliku gzip, jak i lekkiego formatu strumienia danych w swoim interfejsie API. Format strumienia zlib, DEFLATE i format pliku gzip zostały ustandaryzowane odpowiednio jako RFC 1950, RFC 1951 i RFC 1952.
Format gzip jest używany w kompresji HTTP , technice używanej do przyspieszenia wysyłania HTML i innych treści w sieci WWW . Jest to jeden z trzech standardowych formatów kompresji HTTP, jak określono w RFC 2616. Ten dokument RFC określa również format zlib (zwany „DEFLATE”), który jest równy formatowi gzip, z wyjątkiem tego, że gzip dodaje jedenaście bajtów narzutu w postaci hedery i przyczepy. Mimo to format gzip jest czasami zalecany zamiast zlib, ponieważ Internet Explorer nie implementuje prawidłowo standardu i nie obsługuje formatu zlib, jak określono w RFC 1950.
zlib DEFLATE jest używany wewnętrznie przez format Portable Network Graphics (PNG).
Od późnych lat 90-tych bzip2 , narzędzie do kompresji plików oparte na algorytmie sortowania bloków, zyskało pewną popularność jako zamiennik gzip. Tworzy znacznie mniejsze pliki (szczególnie dla kodu źródłowego i innego tekstu strukturalnego), ale kosztem pamięci i czasu przetwarzania (do współczynnika 4).
AdvanceCOMP i 7-Zip mogą tworzyć pliki kompatybilne z gzip, używając wewnętrznej implementacji DEFLATE z lepszymi współczynnikami kompresji niż sam gzip - kosztem więcej czasu procesora w porównaniu z implementacją referencyjną.
Zobacz też
- Porównanie archiwizatorów plików
- Darmowy format pliku
- Lista formatów archiwów
- Lista poleceń uniksowych
- Libarc
Uwagi
Bibliografia
- RFC 1952 — specyfikacja formatu plików GZIP w wersji 4.3