Gzip
![]() | |
Programer(i) |
|
---|---|
Prvo izdanje | 31. oktobar 1992. |
Repozitorijum | |
Napisan u | C |
Operativni sistem | Višeplatformski softver |
Tip | Kompresija podataka |
Licenca | GNU-ova opšta javna licenca |
Veb-sajt | www |
Gzip je format datoteke i softverska aplikacija korišćena za kompresiju i dekompresiju datoteka. Program su kreirali Žan lu Geli (fr. Jean-loup Gailly) i Mark Adler (engl. Mark Adler) kao besplatnu zamenu programima za kompresiju korišćenim na ranim Juniks sistemima, i namenili ga za upotrebu u GNU projektu („g“ u nazivu proizilazi iz „GNU“). Verzija 0.1 izdata je 31. oktobra 1992. godine, a verzija 1.0 u februaru 1993. godine.
Format datoteke[uredi | uredi izvor]
Gzip je baziran na DEFLATE algoritmu, koji je kombinacija LZ77 i Hafmanovog kodiranja. DEFLATE je bio namenjen kao zamena za LZW i druge algoritme za kompresiju podataka, koji su bili ograničeni pravima o patentima, i, u dato vreme, ograničavali upotrebu kompresora.
Izraz „gzip“ se često koristi i kada se govori o gzip formatu datoteke koji je:
- 10-bajtno zaglavlje koje sadrži "magični broj" (1f 8b), broj verzije i datum
- opcionalno dodatna zaglavlja, npr. originalni naziv datoteke
- telo, koje sadrži bitne informacije (engl. payload) kompresovane DEFLATE algoritmom
- 8-bajtno podnožje, u kome se nalaze CRC-32 vrednost i dužina originalnih nekompresovanih podataka, po modulu 232.[1]
Iako format datoteke dozvoljava višestrukim ulazima da se lančaju (zipovane datoteke se jednostavno dekompresuju ulančane kao da su originalno bile jedna datoteka[2]), gzip se obično koristi samo za kompresovanje pojedinačnih datoteka.[3] Kompresovane arhive se obično prave skupljanjem kolekcija datoteka u jednu tar arhivu, koja se zatim kompresuje gzip-om. Tako dobijena datoteka ima ekstenziju .tar.gz ili .tgz, i naziva se "tarball".[4]
Gzip ne treba mešati sa ZIP formatom arhiviranja, koji takođe koristi DEFLATE. ZIP format može sadržati kolekcije datoteka bez eksternog arhivatora, ali je manje kompaktna nego kompresovani tarball-ovi koji sadrže iste podatke, zato što kompresuje datoteke pojedinačno i ne može da iskoristi suvišnost među datotekama.
Implementacije[uredi | uredi izvor]
Programer(i) | NetBSD Fondacija |
---|---|
Repozitorijum | |
Napisan u | C |
Operativni sistem | Višeplatformski softver |
Tip | Kompresija podataka |
Licenca | Pojednostavljena BSD Licenca |
Veb-sajt | www |
Napisane su razne implementacije ovog programa, a najpoznatija je implementacija GNU projekta koja koristi Lampel-Ziv kodiranje (LZ77). OpenBSD-ova verzija gzip-a je zapravo program za kompresovanje kome je dodata podrška za gzip format u verziji OpenBSD 3.4. Slovo 'g' u ovoj konkretnoj verziji predstavlja reč gratis.[5] FreeBSD, DragonFlaj BSD i NetBSD, umesto GNU verzije, koriste BSD licenciranu implementaciju koja je zapravo interfejs komandne linije koji je trebalo da bude kompatibilan sa opcijama GNU implementacije.[6] Ove implementacije su originalno nastale od NetBSD i podržavaju dekompresiju bzip2 kao i juniks-ovo paket formatiranje.
Derivati i ostale upotrebe[uredi | uredi izvor]
Alatka tar, koju sadrži većina Linuks distribucija, može ekstrahovati .tar.gz datoteke pomoću opcije z, npr. tar -zxf datoteka.tar.gz.
Zlib je apstrakcija DEFLATE algoritma u obliku biblioteke koja, između ostalog, uključuje podršku i za gzip format u svom API-ju. Zlib, DEFLATE i gzip formati su standardizovani redom u RFC 1950, RFC 1951, i RFC 1952.
Gzip format se koristi u HTTP kompresiji koja se koristi za brže slanje HTML-a i ostalih sadržaja veba. To je jedan od tri standardna formata za HTTP kompresiju kako je navedeno u RFC 2616. Ovaj RFC (engl. Request for Comments, Zahtev za komentar) takođe navodi i zlib format (tzv. DEFLATE) koji je jednak gzip formatu osim što gzip dodaje jedanaest dodatnih bajtova. Ipak, gzip format se ponekad više preporučuje od zlib-a jer Majkrosoft Internet eksplorer ne implementira standard ispravno i ne može da obradi zlib format kako je navedeno u RFC 1950.[7]
Od kraja 1990-ih, bzip2 (alatka za kompresiju datoteka zasnovana na blok-sortirajućem algoritmu) je stekla malo popularnosti kao zamena za gzip. Proizvodi značajno manje datoteke (posebno za izvorni kod i ostale struktuirane tekstove), ali po cenu memorije i vremena za obradu (do faktora 4).[8]
AdvanceCOMP i 7-Zip mogu da proizvode gzip-kompatibilne datoteke, koristeći ugrađenu DEFLATE implementaciju sa boljom kompresijom od samog gzip-a, ali po cenu većeg korišćenja procesorskog vremena u odnosu na referisanu implementaciju.
Reference[uredi | uredi izvor]
- ^ Jean-loup Gailly. „GNU Gzip”. Pristupljeno 11. 10. 2015.
- ^ „GNU Gzip: Advanced usage”. Pristupljeno 28. 11. 2012.
- ^ „Can gzip compress several files into a single archive?”. Pristupljeno 27. 1. 2010.
- ^ „tarball, The Jargon File, version 4.4.7”. Pristupljeno 27. 1. 2010.
- ^ „OpenBSD gzip(1) manual page”. OpenBSD. Pristupljeno 23. 7. 2007.
- ^ „gzip”. Man.freebsd.org. 9. 10. 2011. Pristupljeno 1. 3. 2014.
- ^ Lawrence, Eric (21. 10. 2014). „Compressing the Web”. MSDN Blogs > IEInternals. Microsoft.
- ^ 7-zip vs bzip2 vs gzip