Zlib'de kullanılan sıkıştırma algoritması temelde gzip ve zip ile aynıdır . Nelerdir gzip ve zip ? Nasıl farklılar ve nasıl aynılar?
Zlib'de kullanılan sıkıştırma algoritması temelde gzip ve zip ile aynıdır . Nelerdir gzip ve zip ? Nasıl farklılar ve nasıl aynılar?
Yanıtlar:
Kısa form:
.zip
Sıkıştırmayı azalt yöntemini kullanan bir arşiv biçimidir . .gz
Gzip formatında da Deflate sıkıştırma yöntemini kullanarak, tek dosyalar içindir. Genellikle gzip ile birlikte kullanıldığında bir sıkıştırılmış arşiv biçimi yapmak katran , .tar.gz
. Zlib kütüphanesi Deflate sıkıştırma ve açma zip, gzip tarafından kullanılması için kodu sağlar PNG (kullanan zlib sarıcı söndürmek verilere), ve bir çok diğer uygulamalar.
Uzun biçim:
ZIP biçimi onun uygulanması, PKZIP, shareware bir açık şartname ile açık biçimi olarak Phil Katz tarafından geliştirilmiştir. Her bir dosyanın ayrı ayrı sıkıştırıldığı dosyaları ve dizin yapılarını depolayan bir arşiv biçimidir. Dosya türü .zip
. Dosyalar ve dizin yapısı isteğe bağlı olarak şifrelenebilir.
ZIP biçimi çeşitli sıkıştırma yöntemlerini destekler:
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
Yöntem 1 ila 7 tarihseldir ve kullanımda değildir. Yöntem 9 ila 98 nispeten yeni ilavelerdir ve çeşitli küçük miktarlarda kullanılır. ZIP biçiminde gerçekten yaygın kullanımdaki tek yöntem, yöntem 8, Deflate ve daha küçük ölçüde bir yöntemdir, bu da hiç sıkıştırma değildir. .zip
Vahşi doğada karşılaşacağınız her dosya, yalnızca yöntem 8 ve 0'ı, muhtemelen sadece yöntem 8'i kullanacaktır. (Yöntem 8'de ayrıca verileri sıkıştırma ve nispeten az genişleme olmadan etkili bir şekilde saklamak için bir araç vardır ve Yöntem 0 akış olarak kullanılamaz. oysa Yöntem 8 olabilir.)
ISO / IEC 21320-1: Dosya konteynerler için 2015 standardı böyle Java arşiv kullanılan dosyaları (.jar) gibi kısıtlı bir fermuar biçimidir, Office Açık XML dosyaları (Microsoft Office, .xlsx, .pptx .docx), Office Belge Dosyaları (.odt, .ods, .odp) ve EPUB dosyalarını (.epub) biçimlendirin. Bu standart, sıkıştırma yöntemlerini 0 ve 8 ile ve şifreleme veya imza yok gibi diğer kısıtlamalar ile sınırlar.
1990'larda Info-ZIP grubu , Deflate formatıyla sıkıştırmayı ve bunun ve önceki formatların dekompresyonunu destekleyen taşınabilir, ücretsiz, açık kaynak uygulamaları zip
ve unzip
yardımcı programları yazdı . Bu, .zip
biçimin kullanımını büyük ölçüde genişletti .
90'lı yılların başlarında, gzip biçimi , Bilgi-ZIP yardımcı programlarındaki Deflate kodundan türetilen Unix compress
yardımcı programının yerine kullanılmak üzere geliştirildi . Unix compress
, .Z
dosya adına bir ekleyerek tek bir dosyayı veya akışı sıkıştırmak için tasarlanmıştır . compress
kullanan LZW sıkıştırma algoritması anda patent altında ve serbest kullanım patent sahibi tarafından ihtilaf halinde. Bazı Deflate uygulamaları Phil Katz tarafından patentlenmiş olsa da, format değildi ve bu nedenle herhangi bir patenti ihlal etmeyen bir Deflate uygulaması yazmak mümkün oldu. Bu uygulamaya son 20 yıldan fazla bir süredir meydan okunmadı. Unix gzip
yardımcı programı,compress
ve aslında sıkıştırılmış compress
verileri açabilirsiniz (bu cümleyi ayrıştırabildiğinizi varsayarak). dosya adına gzip
a ekler .gz
. gzip
Unix'ten biraz daha iyi sıkışan sıkıştırılmış veri formatını kullanır compress
, çok hızlı bir dekompresyona sahiptir ve veriler için bir bütünlük kontrolü olarak bir CRC-32 ekler. Üstbilgi biçimi compress
, orijinal dosya adı ve dosya değiştirme süresi gibi izin verilen biçimden daha fazla bilginin depolanmasına da izin verir .
compress
Yalnızca tek bir dosyayı sıkıştırmasına rağmen , tar
yardımcı programı bir dosya arşivi, öznitelikleri ve dizin yapılarını tek bir .tar
dosyaya oluşturmak ve daha sonra compress
bir .tar.Z
dosya oluşturmak için sıkıştırmak yaygındı . Aslında tar
yarar vardı ve hala yerine borusuna çıktısını sahip, aynı zamanda sıkıştırma yapmak için bir seçenek vardır tar
için compress
. Tüm bunlar gzip formatına taşındı ve tar
doğrudan .tar.gz
formata sıkıştırma seçeneğine sahip . tar.gz
Biçimi daha iyi sıkıştıran .zip
bir sıkıştırma beri yaklaşımı .tar
, dosyalar arasında özellikle çok sayıda küçük dosya yedekleme yararlanabilir. .tar.gz
çok yüksek taşınabilirliği nedeniyle Unix'te kullanılan en yaygın arşiv biçimidir, ancak kullanımda daha etkili sıkıştırma yöntemleri de vardır, bu nedenle sık sık görür .tar.bz2
ve .tar.xz
arşivlersiniz.
Aksine .tar
, .zip
sonunda bir içerik listesi sağlayan merkezi bir dizin vardır. Bu ve ayrı sıkıştırma, bir .zip
dosyadaki tek tek girdilere rastgele erişim sağlar . Bir .tar
dizin oluşturmak için .tar
dosyanın başından sonuna kadar açılması ve taranması gerekir .
Gzip'in piyasaya sürülmesinden kısa bir süre sonra, 1990'ların ortalarında, aynı patent anlaşmazlığı .gif
, bülten panolarında ve World Wide Web'de (o zamanlar yeni bir şey) yaygın olarak kullanılan görüntü formatının ücretsiz kullanımını sorguladı . Dosya türüyle PNG kayıpsız sıkıştırılmış resim biçimi yarattı küçük bir grup Yani .png
yerine, .gif
. Bu biçim, görüntü verisindeki filtrelerin fazlalık göstermesinden sonra uygulanan sıkıştırma için Söndürme biçimini de kullanır. PNG formatının yaygın kullanımını desteklemek için iki serbest kod kütüphanesi oluşturuldu. libpng ve zlib. libpng, PNG formatının tüm özelliklerini ele aldı ve zlib, libpng ve diğer uygulamalar için sıkıştırma ve açma kodunu sağladı. zlib gzip
koddan uyarlandı .
Sözü edilen tüm patentlerin süresi sona ermiştir.
Zlib kütüphanesi Deflate sıkıştırmasını ve dekompresyonunu ve deflate akışlarının etrafına üç çeşit sarmayı destekler. Bunlar: hiçbir sarma yok ("ham" deflate), PNG formatı veri bloklarında kullanılan zlib sarma ve programcıya gzip rutinleri sağlamak için gzip sarma. Zlib ve gzip sarma arasındaki temel fark, zlib sargının daha kompakt olması, gzip için en az 18 bayta karşılık altı bayt ve bütünlük denetimi Adler-32'nin gzip'in kullandığı CRC-32'den daha hızlı çalışmasıdır. Ham deflate, .zip
sıkıştırılmış verileri deflate etrafına saran başka bir format olan formatı okuyan ve yazan programlar tarafından kullanılır .
zlib artık veri aktarımı ve depolaması için geniş kullanım alanına sahiptir. Örneğin, sunucular ve tarayıcılar tarafından yapılan HTTP işlemlerinin çoğu, verileri zlib kullanarak sıkıştırır ve açar, özellikle HTTP üstbilgisi , zlib veri biçiminin içine sarılmış sıkıştırma yönteminiContent-Encoding: deflate
ifade eder .
Farklı deflate uygulamaları, CPU zamanı için sıkıştırma etkinliğinin alım satımına izin veren seçilebilir sıkıştırma seviyelerinin varlığı ile kanıtlandığı gibi, aynı giriş verileri için farklı sıkıştırılmış çıktılarla sonuçlanabilir. zlib ve PKZIP, deflate sıkıştırma ve dekompresyonun tek uygulamaları değildir. Hem 7-Zip arşivleme yardımcı programı hem de Google zopfli kütüphanesi , deflate formatını kullanırken mümkün olan son birkaç biti sıkıştırmak için sıkıştırılmış boyutları zlib'in en yüksek oranına göre yüzde birkaç oranında azaltmak için zlib'den çok daha fazla CPU zamanı kullanma yeteneğine sahiptir. sıkıştırma düzeyi. pigz yarargzip'in paralel bir uygulaması, zlib (sıkıştırma düzeyleri 1-9) veya zopfli (sıkıştırma seviyesi 11) kullanma seçeneğini içerir ve büyük dosyaların sıkıştırılmasını birden çok işlemci ve çekirdek üzerine bölerek zopfli kullanmanın zaman etkisini biraz azaltır.
.tar.gz
Dosyaları gördüğünüzde , bunlar budur.) İlk olarak, tar + gzip zip'ten daha iyi sıkıştırır, çünkü bir sonraki dosyanın sıkıştırılması önceki dosyadaki geçmişi kullanabilir (bazen "katı" arşiv olarak da adlandırılır). zip sadece dosyaları tek tek sıkıştırabilir. İkincisi, tar tüm Unix dizin bilgilerini korur, ancak zip bunu yapmak için tasarlanmamıştır. (Unix'e özgü ekstra bloklarla zip formatının daha sonraki uzantıları bu sorunu çözmeye çalışır.)
ZIP , rasgele sayıda dosya ve klasörü kayıpsız sıkıştırma ile birlikte depolamak için kullanılan bir dosya biçimidir. Kullanılan sıkıştırma yöntemleri hakkında kesin bir varsayımda bulunmaz , ancak en sık DEFLATE ile kullanılır .
Gzip hem DEFLATE tabanlı bir sıkıştırma algoritmasıdır hem de potansiyel patentlerle birlikte daha az engellenmiştir ve tek bir sıkıştırılmış dosyayı depolamak için bir dosya biçimidir. Tar ile birleştirildiğinde rastgele sayıda dosya ve klasörü sıkıştırmayı destekler . Sonuçta ortaya çıkan dosya .tgz
veya uzantısına sahiptir .tar.gz
ve genellikle tarball olarak adlandırılır .
zlib , en yaygın LZ77 enkarnasyonunda DEFLATE'i kapsülleyen bir fonksiyon kütüphanesidir .
En önemli fark, gzip'in tek bir dosyayı sıkıştırabilmesidir, zip ise birden çok dosyayı tek tek sıkıştırır ve daha sonra tek bir dosyaya arşivler. Böylece, gzip çoğu zaman katranla birlikte gelir (yine de başka olasılıklar vardır). Bu, bazı (dis) avantajlarla birlikte gelir.
Büyük bir arşiviniz varsa ve bunun dışında tek bir dosyaya ihtiyacınız varsa, bu dosyaya ulaşmak için tüm gzip dosyasını açmanız gerekir. Bir zip dosyanız varsa bu gerekli değildir.
Öte yandan, 10 benzer veya hatta aynı dosyayı sıkıştırırsanız, zip arşivi çok daha büyük olacaktır, çünkü her dosya ayrı ayrı sıkıştırılır, oysa gzip'te tar ile birlikte tek bir dosya sıkıştırılır, bu da dosyalar benzer (eşit).