V7 arşiv formatı, veri arşivleme ve sıkıştırma için kullanılan bir dosya formatıdır. Önceki V6 formatına göre bir geliştirme olarak 1999'da tanıtılmıştır. V7 arşivleri verimli sıkıştırma, dosyalara hızlı rastgele erişim ve büyük dosya ve arşivler için destek sağlar.
Bir V7 arşivi bir dizi bloktan oluşur. Her blok ya dosya verisi ya da arşiv meta verisi içerir. Bloklar değişken boyutludur ve maksimum 4 GB boyutundadır. Arşiv, arşiv formatı sürümü, blok sayısı ve arşivlenmiş dosyaların bir dizini hakkında bilgi içeren bir başlık bloğu ile başlar.
Başlığın ardından bir veya daha fazla dosya veri bloğu gelir. Her dosya, bitişik bir dizi veri bloğunda saklanır. Dosyalar, LZMA, BZip2 veya PPMd gibi çeşitli sıkıştırma algoritmaları kullanılarak sıkıştırılabilir. Her dosya için kullanılan belirli sıkıştırma yöntemi, dosyanın meta verilerinde belirtilir.
Dosya veri blokları arasında, arşivlenmiş dosyalar hakkında bilgi içeren meta veri blokları bulunur. Bu, dosya adını, öznitelikleri, zaman damgalarını, sıkıştırma yöntemini ve dosyanın veri bloklarının arşiv içindeki konumunu içerir. Meta veriler, hızlı rastgele erişim için optimize edilmiş ikili bir biçimde saklanır.
V7 formatının temel özelliklerinden biri, büyük arşivleri ve dosyaları verimli bir şekilde işleme yeteneğidir. 64 bitlik bir adresleme şeması kullanır ve bu da 16 ekabayta kadar arşivleri ve dosyaları desteklemesini sağlar. Değişken boyutlu blok yapısı ayrıca, tüm arşivi açmaya gerek kalmadan tek tek dosyalara verimli rastgele erişim sağlar.
V7 arşivleri, dosya başına birden fazla sıkıştırma yöntemini destekler. Bu, sıkıştırma oranı ve hız arasında denge kurmada esneklik sağlar. Kullanılabilir sıkıştırma algoritmaları şunları içerir:
- LZMA: Mükemmel sıkıştırma oranları sağlayan ancak nispeten yavaş olan yüksek sıkıştırma algoritması. Sık erişilmeyen verileri arşivlemek için en uygunudur.
- BZip2: Hız ve sıkıştırma oranı arasında iyi bir dengeye sahip genel amaçlı bir sıkıştırma algoritması. LZMA'ya kıyasla daha yavaş sıkıştırır ancak daha hızlı açar.
- PPMd: Belirli veri türleri, özellikle metin için çok yüksek sıkıştırma oranları elde edebilen uyarlanabilir bir istatistiksel sıkıştırma algoritması. Ancak yüksek bellek kullanımı ve daha yavaş sıkıştırma hızlarına sahiptir.
- Deflate: Hızlı sıkıştırma ve açma hızları ile makul sıkıştırma oranları sağlayan yaygın olarak kullanılan bir sıkıştırma algoritması. LZ77 ve Huffman kodlamasına dayanır.
- Sıkıştırma yok: İstenirse dosyalar sıkıştırılmadan da saklanabilir.
V7 arşivleri ayrıca veri bozulmasını tespit etmek için bütünlük kontrolleri içerir. Her blok, bloğu okurken doğrulanan bir CRC-32 sağlama toplamı içerir. Ek olarak, arşiv başlığı, tüm arşiv içeriğinin bütünlüğünü doğrulamak için SHA-256 karma değerini içerir.
Hata dayanıklılığı için V7 arşivleri isteğe bağlı olarak kurtarma kayıtları içerebilir. Bunlar, arşiv meta verilerinin yedek kopyalarını içeren arşiv boyunca serpiştirilmiş özel bloklardır. Bir meta veri bloğu bozulursa, yerel bir hata nedeniyle tüm arşivin okunamaz hale gelmesini önleyerek yakındaki bir kurtarma kaydından yeniden oluşturulabilir.
V7 formatı ayrıca arşiv düzeyinde şifrelemeyi de destekler. Tüm arşiv, CBC modunda AES-256 kullanılarak şifrelenebilir. Şifreleme anahtarı, bir anahtar türetme işlevi (KDF) kullanılarak kullanıcı tarafından sağlanan bir paroladan türetilir. Şifreleme sırasında, 256 bitlik rastgele bir salt oluşturulur ve KDF'de kullanılmak üzere arşiv başlığında saklanır. Şifrelenmiş bir V7 arşivine erişmek, doğru parolayı sağlamayı gerektirir. Parola, arşiv başlığından gelen salt ile birlikte KDF'den geçirilir ve şifreleme anahtarı yeniden türetilir. Bu anahtar daha sonra gerektiğinde arşiv içeriğini anında şifresini çözmek için kullanılır.
V7 arşivleri, yalnızca dosyanın ilgili bölümlerini değiştirerek verimli bir şekilde güncellenebilir. Bir arşivdeki dosyaları eklemek, kaldırmak veya güncellemek, etkilenen veri bloklarını yeniden yazmayı ve gerektiğinde meta verileri ve kurtarma kayıtlarını güncellemeyi içerir. Arşivin geri kalanı değişmeden kalır ve bu da güncellemeleri nispeten hızlı hale getirir.
V7 formatı ayrıca sağlam arşivlemeyi de destekler. Sağlam arşivleme ile birden fazla dosya, dosyalar arasındaki benzerliklerden yararlanarak daha iyi sıkıştırma oranları sağlayan tek bir sürekli blok olarak birlikte sıkıştırılır. Ancak bu, rastgele erişim performansını ve tek tek dosyaları güncelleme yeteneğini etkileyebilir.
WinRAR, PowerArchiver ve 7-Zip dahil olmak üzere birçok popüler arşivleme aracı V7 formatını destekler. Bu araçlar, V7 arşivleri oluşturmak, çıkarmak ve yönetmek için grafiksel arayüzler sağlar. Birçok programlama dili, V7 arşivleriyle programatik olarak çalışmak için kullanılabilecek kitaplıklara da sahiptir.
Özetle, V7 arşiv formatı, veri arşivleme ve sıkıştırma için güçlü ve esnek bir seçimdir. Temel özellikleri arasında verimli sıkıştırma, hızlı rastgele erişim, büyük dosya ve arşivler için destek, birden fazla sıkıştırma algoritması, bütünlük kontrolü, hata dayanıklılığı ve şifreleme bulunur. Bu özellikler, V7'yi çok çeşitli arşivleme ihtiyaçları için uygun hale getirir.
Dosya sıkıştırma, aynı bilgiyi daha az bit ile temsil etmek için fazlalıkları azaltır. Ne kadar küçülebileceğinizi belirleyen üst sınır bilgi teorisidir: kayıpsız sıkıştırmada limit kaynağın entropisidir (bkz. Shannon'ın kaynak kodlama teoremi source coding theorem ve 1948 tarihli “A Mathematical Theory of Communication”). Kayıplı sıkıştırmada bit hızı ile kalite arasındaki dengeyi rate–distortion teorisiaçıklar.
Çoğu sıkıştırıcı iki aşamalıdır. Önce bir model verideki yapıyı tahmin eder veya ortaya çıkarır. Ardından bir coder bu tahminleri neredeyse optimal bit kalıplarına çevirir. Klasik aile Lempel–Ziv'dir LZ77 (1977) ve LZ78 (1978) tekrarlanan alt dizileri bulup ham bayt yerine referans yazar. Kodlama tarafında Huffman kodlama (bkz.1952 makalesi) olasılığı yüksek sembollere daha kısa kodlar verir. Aritmetik kodlama ve range coding entropi sınırına daha da yaklaşır; modern Asymmetric Numeral Systems (ANS) ise tablo tabanlı uygulamalarla benzer oranlar elde eder.
DEFLATE (gzip, zlib, ZIP) LZ77 ile Huffman'ı birleştirir. Spesifikasyonlar açık: DEFLATE RFC 1951, zlib sarmalayıcısı RFC 1950ve gzip formatı RFC 1952. Gzip akış için tasarlandı ve rastgele erişim vaat etmez. PNG, tek sıkıştırma yöntemi olarak DEFLATE'i (32 KiB pencere) standartlaştırır; bkz.“Compression method 0…” ve W3C/ISO PNG 2nd Edition.
Zstandard (zstd): yüksek oranlar ve çok hızlı açma için tasarlanan yeni nesil genel kompresör. Format RFC 8878 (ayrıca HTML yansısı) ve referans dokümanı GitHub'daaçıklanmıştır. Gzip gibi temel çerçeve rastgele erişim hedeflemez. Zstd'nin süper gücü sözlüklerdir: korpusunuzdan küçük örnekler birçok küçük/benzer dosyayı ciddi biçimde küçültür (bkz.python-zstandard sözlük dokümanları ve Nigel Tao örneği). Uygulamalar “unstructured” ve “structured” sözlükleri destekler (tartışma).
Brotli: web içeriği (örn. WOFF2 fontlar, HTTP) için optimize edildi. Statik sözlük ile DEFLATE benzeri LZ+entropi çekirdeğini birleştirir. Spesifikasyon RFC 7932, ayrıca WBITS [10, 24] (1 KiB−16 B ile 16 MiB−16 B) aralığında 2WBITS−16 kayar pencere ve rastgele erişim sağlamadığınıbelirtir. Brotli çoğu web metninde gzip'i geçer ve hızlı çözülür.
ZIP konteyneri: ZIP, farklı sıkıştırma yöntemleri (deflate, store, zstd vb.) taşıyabilen bir arşivdir. De facto standart PKWARE APPNOTE'tur (bkz.APPNOTE portalı, barındırılan kopyave LC özetleri ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 mütevazı oranlarla ham hız hedefler. Proje sayfasına (“extremely fast compression”) ve frame formatınabakın. RAM hızına yakın dekompresyon gerektiren bellek içi cache'ler, telemetri veya sıcak yollar için ideal.
XZ / LZMA yüksek yoğunluk (yüksek oran) için daha yavaş sıkıştırmayı göze alır. XZ bir konteynerdir; asıl işi genelde LZMA/LZMA2 (LZ77 benzeri modelleme + range coding) yapar. .xz formatı, LZMA spesifikasyonu (Pavlov)ve Linux kernel notları XZ Embeddedile XZ genelde gzip'ten daha iyi sıkıştırır ve modern yüksek oranlı codec'lerle rekabet eder, fakat kodlama süresi uzundur.
bzip2, Burrows–Wheeler dönüşümünü (BWT), move-to-front'u, RLE'yi ve Huffman'ı kullanır. Genellikle gzip'ten küçük ama daha yavaştır; resmi kılavuza ve man sayfasınabakın.
“Pencere boyutu” önemlidir. DEFLATE referansları yalnızca 32 KiB geriye bakabilir (RFC 1951) ve PNG'nin 32 KiB sınırı burada belirtilir. Brotli yaklaşık 1 KiB ile 16 MiB arası pencereleri destekler (RFC 7932). Zstd pencereyi ve arama derinliğini seviyeler ile ayarlar (RFC 8878). gzip/zstd/brotli'nin temel akışları ardışık çözümeye göre tasarlanır; formatların kendileri rastgele erişim garantilemez, ancak konteynerler (tar indeksleri, parça bazlı çerçeveler, format spesifik indeksler) ekleyebilir.
Yukarıdaki formatlar kayıpsızdır: aynı baytları geri alırsınız. Medya codec'leri genellikle kayıplıdır: daha düşük bit hızları için algılanmayan detayları atarlar. Görsellerde klasik JPEG (DCT, kantizasyon, entropi kodlama) ITU-T T.81 / ISO/IEC 10918-1içinde standarttır. Seste MP3 (MPEG-1 Layer III) ve AAC (MPEG-2/4) algısal modeller ve MDCT dönüşümleri kullanır (bkz.ISO/IEC 11172-3, ISO/IEC 13818-7ve MDCT özeti burada). Kayıplı ve kayıpsız yöntemler birlikte kullanılabilir (ör. UI için PNG; web codec'leri görsel/video/ses için).
Teori Shannon 1948 · Rate–distortion · Kodlama Huffman 1952 · Aritmetik kodlama · Range coding · ANS. Formatlar DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · XZ format. BWT zinciri Burrows–Wheeler (1994) · bzip2 kılavuzu. Medya JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Özetle: verilerinize ve kısıtlarınıza uyan bir sıkıştırıcı seçin, gerçek girdiler üzerinde ölçün ve sözlükler ile akıllı çerçevelemenin kazançlarını unutmayın. Doğru eşleşme ile daha küçük dosyalar, daha hızlı transferler ve daha çevik uygulamalar elde eder, doğruluk veya taşınabilirlikten ödün vermezsiniz.
Dosya sıkıştırması, dosyanın boyutunu azaltma işlemidir, genellikle depolama alanını tasarruf etmek veya bir ağ üzerindeki iletimi hızlandırmak için kullanılır.
Dosya sıkıştırması, verilerdeki gereksiz bilgileri belirleyip çıkararak çalışır. İlk verileri daha küçük bir alanda kodlamak için algoritmalar kullanır.
Dosya sıkıştırmanın iki ana türü lossless (kayıpsız) ve lossy (kayıplı) sıkıştırmadır. Kayıpsız sıkıştırma, orijinal dosyanın mükemmel bir şekilde geri yüklenmesini sağlarken, kayıplı sıkıştırma, veri kalitesindeki bazı kayıpların maliyetine daha büyük ölçüde boyut küçültmeyi sağlar.
Popüler bir dosya sıkıştırma aracı örneği, ZIP ve RAR dahil olmak üzere birden fazla sıkıştırma formatını destekleyen WinZip'tir.
Kayıpsız sıkıştırma ile kalite değişmez. Ancak, kayıplı sıkıştırmada, dosya boyutunu daha da küçültmek için az önemli veriler çıkarıldığından kalitede belirgin bir azalma olabilir.
Evet, veri bütünlüğü açısından dosya sıkıştırması güvenlidir, özellikle kayıpsız sıkıştırmayla. Ancak, başka herhangi bir dosyada olduğu gibi, sıkıştırılmış dosyalar da zararlı yazılım veya virüsler tarafından hedef alınabilir, bu yüzden her zaman güvenilir bir güvenlik yazılımı bulundurmak önemlidir.
Neredeyse tüm dosya türleri sıkıştırılabilir, bu türler arasında metin dosyaları, resimler, ses, video ve yazılım dosyaları bulunur. Ancak, elde edilebilecek sıkıştırma seviyesi, dosya türlerine göre önemli ölçüde değişebilir.
ZIP dosyası, bir veya daha fazla dosyanın boyutunu azaltmak için kayıpsız sıkıştırmayı kullanan bir dosya formatı türüdür. ZIP dosyasındaki birden fazla dosya, tek bir dosyada etkili bir şekilde bir araya getirilir, bu da paylaşmayı kolaylaştırır.
Teknik olarak, evet, ancak ek boyut azaltma minimum veya hatta zararlı olabilir. Zaten sıkıştırılmış bir dosyayı sıkıştırmak, bazen sıkıştırma algoritması tarafından eklenen metadatanın neden olduğu boyut artışına neden olabilir.
Bir dosyayı açmak için genellikle bir açma veya açma aracına ihtiyacınız vardır, örneğin WinZip veya 7-Zip. Bu araçlar, sıkıştırılmış formatından orijinal dosyaları çıkarabilir.