Algoritmul de compresie utilizat în zlib este în esență aceeași ca și în gzip și zip. Ce sunt gzip și zip? Cum sunt diferite și cum sunt ele același lucru?
Short forma:
`.zip este un format de arhivă, folosind, de obicei, Dezumfla metoda de compresie. A .gz
gzip format este de unică fișiere, de asemenea, folosind Dezumfla metoda de compresie. De multe ori gzip este folosit în combinație cu tar pentru a face o arhivă comprimat format, .tar.gz
. De zlib biblioteca oferă Dezumfla de compresie și decompresie cod pentru utilizarea de către zip, gzip, png (care utilizează zlib înveliș pe dezumfla de date), și multe alte aplicații.
Long forma:
De format ZIP a fost dezvoltat de către Phil Katz ca un format deschis, cu o deschidere de caietul de sarcini, în cazul în care punerea în aplicare, PKZIP, a fost shareware. Este un format de arhivă care stochează fișiere și director de structură, în care fiecare fișier individual comprimat. Tipul de fișier este .zip
. Fișierele, precum și structura de directoare, opțional pot fi criptate.
Format ZIP acceptă mai multe metode de compresie:
0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1
Metode de la 1 la 7 sunt istoric și nu sunt în uz. Metode 9 prin 98 sunt relativ recente completări, și sunt în diferite, cantitati mici de utilizare. Singura metodă cu adevărat pe scară largă utilizare în format ZIP este metoda 8, Dezumfla, și la unele măsură mai mică metodă de 0, care este fără compresie. Practic, fiecare .zip fișier, care va veni peste în sălbăticie va folosi exclusiv metodele de 8 și 0, probabil doar metoda 8. (Metoda 8 are, de asemenea, un mijloc eficient stoca datele cu nr de compresie și expansiune relativ redusă, și Metoda 0 nu pot fi transmise întrucât Metoda 8 poate fi.) [ISO/IEC 21320-1:2015 standard pentru recipiente fișier][8] este un restricționat format zip, astfel cum este folosit în Java fișierele de arhivă (.borcan), Office Open XML (Microsoft Office .docx, .xlsx, .pptx), Office Document Format fișiere (.odt, .ods, .odp), și fișiere EPUB (.epub). Acest standard limitează metodele de compresie la 0 și 8, precum și alte constrângeri, cum ar fi nr de criptare sau de semnături. În jurul anului 1990, a [Info-ZIP group][9] a scris portabil, gratuit, open source implementări de " zip " și dezarhivați
utilities, sprijinirea compresie cu Dezumfla format, și decompresie de asta și mai devreme formate. Acest lucru extins foarte mult utilizarea.zip format.
La începutul anilor 90's, format gzip a fost dezvoltat ca un înlocuitor pentru Unix comprima
utility, derivat din Dezumfla codul în Info-ZIP utilități. Unix comprima
a fost conceput pentru a comprima un singur fișier sau flux, adăugarea unui .Z
pentru numele fișierului. comprima
foloseste algoritmul de compresie LZW, care, la momentul a fost sub brevet și utilizarea gratuită a fost în litigiu de către deținătorii de patente. Deși unele implementări specifice ale Dezumfla au fost patentat de către Phil Katz, formatul nu a fost, și așa a fost posibil să se scrie o Dezumfle implementarea că nu a încălcat în niciun patent. Că punerea în aplicare nu a fost atât de contestat în ultimii 20+ de ani. Unix gzip
utilitar a fost conceput ca un înlocuitor drop-in pentru a comprima, și, de fapt, este capabil de a decomprima comprima
-date comprimate (presupunând că ați fost capabil de a analiza această propoziție). gzip
adaugă un .gz
pentru numele fișierului. gzip
folosește Dezumfla comprimat format de date, care comprimă destul de un pic mai bine decât Unix comprima
, are foarte rapid de decompresie, și adaugă un CRC-32, ca o verificare a integrității datelor. Antet format, de asemenea, permite stocarea mai multor informații decât comprima
format de companie, cum ar fi numele de fișier original și fișierul timpul de modificare.
Totusi, pentru a comprima doar comprese-un singur fișier, acesta a fost comun pentru a utiliza "gudron" utilitate pentru a crea o arhivă de fișiere, atributele lor, și lor structura de directoare într-un singur .tar
de fișier, și apoi comprima cu o compresa pentru a face un .tar.Z
fișier. În fapt tar
de utilitate a avut și are încă o opțiune pentru a face compresie, în același timp, în loc de a avea pentru a conductei de ieșire al tar
a comprima
. Toate astea reportate în format gzip, și tar
are o opțiune pentru a comprima direct .tar.gz
format. A tar.gz
format comprimă mai bine decât .zip
abordare, deoarece compresie de o .tar
pot profita de concediere peste fișiere, mai ales multe fișiere mici. .tar.gz
este cel mai comun format de arhivă în utilizarea pe Unix datorită portabilitate foarte mare, dar sunt mai eficiente metode de compresie în utilizare, precum și, astfel încât veți vedea de multe ori .tar.bz2 "și".tar.xz
arhive.
Spre deosebire de .tar
, .zip
are un registru central de la sfârșitul, care oferă o listă de conținuturi. Ca și separate de compresie oferă acces aleator la intrări individuale într-o .zip file. O
.tarde fișiere ar trebui să fie decomprimat și scanate de la început până la sfârșit, în scopul de a construi un director, care este modul în care o
.tarde fișier este listat. La scurt timp după introducerea de gzip, în jurul valorii de la mijlocul anilor 1990's, același litigiilor în materie de brevete pusă în discuție utilizarea gratuită a
.gifformat de imagine, foarte utilizate pe scară largă pe aviziere și World Wide Web (un lucru nou, la timp). Deci, un mic grup creat PNG comprimat fără pierderi de imagine în format de fișier tip.png
, pentru a înlocui .gif
. Acest format utilizează, de asemenea, Dezumfla format de compresie, care este aplicat după filtre pe imagine date expune mai mult de concediere. În scopul de a promova utilizarea pe scară largă a format PNG, două biblioteci de cod au fost create. libpng și zlib. libpng-a ocupat de toate caracteristicile de format PNG, și zlib furnizate de compresie și decompresie cod pentru utilizarea de către libpng, precum și pentru alte aplicații. zlib a fost adaptat de la gzip
cod.
Toate cele menționate brevete au expirat.
Zlib biblioteca sprijină Dezumfla de compresie și decompresie, și trei tipuri de ambalaj în jurul dezumfla fluxuri. Acestea sunt: fără ambalaj, la toate ("prime" dezumfla), zlib ambalaj, care este folosit în format PNG blocuri de date, și gzip ambalaj, pentru a oferi gzip rutine pentru programator. Principala diferență între zlib și gzip ambalaj este că zlib ambalaj este mai compact, șase octeți față de un minim de 18 bytes pentru gzip, și de a verifica integritatea, Adler-32, rulează mai rapid decât CRC-32, care gzip folosește. Prime dezumfla este folosit de programe care să citească și să scrie .zip
format, care este un alt format care se înfășoară în jurul dezumfla date comprimate.
zlib este acum utilizat la scară largă pentru transmisii de date și de stocare. De exemplu, cele mai multe HTTP tranzacții de servere și browsere comprima și decomprima datele folosind zlib.
Implementări diferite ale dezumfla poate duce la diferite comprimat de ieșire pentru aceleași date de intrare, după cum reiese existența selectabile niveluri de compresie care permite tranzacționarea pe compresie eficienta pentru timp de PROCESOR. zlib și PKZIP nu sunt singurul implementări ale dezumfla de compresie și decompresie. Atât 7-Zip utilitar de arhivare și Google's zopfli biblioteca au capacitatea de a folosi mult mai mult timp de PROCESOR decât zlib, în scopul de a stoarce ultimii biți posibil atunci când se utilizează dezumfla format, reducerea comprimat dimensiuni de câteva procente comparativ cu zlib's cel mai înalt nivel de compresie. De pigz utility, o punere în aplicare în paralel a gzip, include opțiunea de a utiliza zlib (nivele de compresie 1-9) sau zopfli (nivel de compresie 11), și oarecum atenuează timp impactul utilizării zopfli prin divizarea compresie de fișiere de mari dimensiuni pe mai multe procesoare și miezuri.
ZIP este un format de fișier utilizat pentru stocarea unui număr arbitrar de fișiere și foldere împreună cu compresie fără pierderi. Nu are nici stricte ipoteze cu privire la metodele de compresie folosit, dar este cel mai frecvent utilizat cu DEZUMFLA.
Gzip este un algoritm de compresie bazate pe DEZUMFLA, dar mai puțin grevate cu potențial de brevete et al, și un format de fișier pentru stocarea unui singur fișier comprimat. Acesta susține comprimare un număr arbitrar de fișiere și foldere atunci când sunt combinate cu tar. Fișierul rezultat are o extensie de .tgz "sau".tar.gz
și este de obicei numit un tar.
zlib este o bibliotecă de funcții încapsulare DEZUMFLA în cele mai frecvente LZ77 încarnare.
Cea mai importantă diferență este că gzip este doar capabil de a comprima un singur fișier în timp ce zip comprimă mai multe fișiere unul câte unul și arhivele acestora într-un singur fișier după aceea. Astfel, gzip vine împreună cu gudron de cele mai multe ori (mai există și alte posibilități, deși). Acesta vine împreună cu anumite (dez)avantaje.
Dacă aveți o mare arhivă și ai nevoie doar de un singur fișier, trebuie să decomprima întregul fișier gzip pentru a ajunge la acel fișier. Acest lucru nu este necesar dacă aveți un fișier zip.
Pe de altă parte, dacă compresa 10 similare sau chiar identice fișiere, arhiva zip va fi mult mai mare, deoarece fiecare fișier este comprimat individual, întrucât în gzip în combinație cu gudron-un singur fișier comprimat, care este mult mai eficientă dacă fișierele sunt similare (egale).