ISO 9660, 1988 yılında optik disk ortamları için yayınlanan bir dosya sistemi standardıdır. Uluslararası Standardizasyon Örgütü (ISO) ve Uluslararası Elektroteknik Komisyonu (IEC) tarafından CD-ROM'lar için standart bir dosya sistemi tanımlamak üzere geliştirilmiştir. Amaç, farklı platformlar ve işletim sistemleri arasında veri disklerinin birlikte çalışabilirliğini sağlamaktı.
Bir ISO 9660 diski, diğer dosya sistemlerine benzer şekilde, dizinler ve dosyalardan oluşan hiyerarşik bir ağaç yapısında veri içerir. En üstteki dizine kök dizin denir. Dizinler ve dosyalar, kök dizinden başlayan bir yol kullanılarak referans alınır. Kök dizin de dahil olmak üzere her dizin, içindeki dosyalar ve alt dizinler hakkında meta veri sağlayan bir dizi dizin girişi içerir.
ISO 9660, dosya sistemi yapısının çeşitli temel yönlerini ve sınırlamalarını tanımlar:
- Dosya adları, nokta ile ayrılmış 3 karakterlik bir uzantı ile en fazla 8 karakter uzunluğunda olabilir. Dosya adları, büyük harf A-Z, rakamlar 0-9 ve alt çizgi içermelidir. Dosya adı uzunluğu ve karakter kısıtlamaları, geniş uyumluluğu sağlamaya yardımcı olur.
- Dizin adları da benzer şekilde 8 büyük harfle ve alt çizgiyle sınırlandırılmıştır. Dizin adları ayrıca 8 seviye derinlikle sınırlandırılmıştır.
- Herhangi bir dosya veya dizine giden tam yol uzunluğu 255 karakterle sınırlıdır. Yol ayırıcıları eğik çizgiyi (/) kullanır.
Bir ISO 9660 diski, 16 sistem alanı sektörüyle başlar, ardından en fazla 2048 sektör hacim tanımlayıcısı gelir. Hacim tanımlayıcıları, temel meta verileri içeren birincil hacim tanımlayıcısı da dahil olmak üzere diskin yapısı ve içeriği hakkında bilgi sağlar.
Birincil hacim tanımlayıcısı 16. sektörde görünür ve disk hacmi adı, yayıncı tanımlayıcısı, veri hazırlayıcısı, telif hakkı, özet ve hacim oluşturma/değiştirme/son kullanma tarihleri gibi bilgiler içerir. Ayrıca yol tablosu boyutunu ve konumunu, kök dizin konumunu ve ek hacim tanımlayıcılarına referansı belirtir.
ISO 9660 diskleri, dizin gezintisini ve aramalarını optimize etmek için yol tabloları kullanır. Yol tabloları, dizin hiyerarşisinin bir dizinini sağlar ve küçük harf adları kullanan dizinler (L tipi yol tablosu) ve büyük harf ve özel karakter adları kullanan dizinler (M tipi yol tablosu) için ayrı tablolar içerir. L tipi yol tablosu isteğe bağlıdır ancak çoğu diskte kullanılır.
Her yol tablosu girişi, dizin kaydının konumunu, kök dizinden dizin seviyelerinin sayısını ve dizinin adını içerir. Bu, dizin sektör sektör ayrıştırılmadan dizin ağacında verimli bir şekilde gezinmeye olanak tanır.
Bir ISO 9660 diskindeki dosyalar ve dizinler, her dizin içindeki dizin kayıt girişleri aracılığıyla referans alınır. Bir dizin kaydı, şu alanlar için meta veri alanları içerir:
- Dizin kaydının uzunluğu - Genişletilmiş öznitelik kaydı uzunluğu - Dosya/dizinin kapsamının konumu (sektör ofseti) - Dosya/dizinin veri uzunluğu - Kayıt tarihi ve saati - Dosya bayrakları (örn: gizli, dizin, ilişkili dosya) - İç içe geçmiş dosyalar için dosya birim boyutu - İç içe geçmiş dosyalar için aralık boşluğu boyutu - Hacim sıra numarası - Dosya tanımlayıcısının uzunluğu (dosya adı) - Dosya adı
ISO 9660, tüm verilerin salt okunur bir ortama kaydedildiği sanal bir dosya sistemi tanımlar. Bu nedenle, standart, mevcut bir ISO 9660 diskinin değiştirilmesi için hükümler içermez - disk her zaman salt okunur olarak kabul edilir. Değişikliklere ihtiyaç duyulursa, güncellenmiş dosyalar ve dizinlerle yeni bir disk görüntüsü oluşturulmalıdır.
ISO 9660 optik ortamlar için tasarlanmış olsa da, standart kullanan disk görüntülerine sabit sürücüler gibi diğer ortamlardan da erişilebilir. Birçok işletim sistemi, bir ISO 9660 disk görüntüsü dosyasını sanal salt okunur bir sürücü olarak bağlamayı veya özel dosya sistemi sürücüleri aracılığıyla disk görüntüsü içeriğine erişmeyi sağlar.
ISO 9660'a yönelik sonraki uzantılar, geriye dönük uyumluluğu korurken yeteneklerini genişletti:
- Rock Ridge uzantıları: Unix dosya sistemi semantiğinin ve bilgilerinin ISO 9660 disklerinde saklanmasına izin verir. Daha uzun dosya adlarına, daha derin dizin yapılarını ve ek dosya özniteliklerini etkinleştirir.
- Joliet uzantıları: Microsoft tarafından 64 karakter uzunluğuna kadar Unicode dosya adlarına izin vermek için belirtilmiştir. Joliet dosya adları daha geniş bir karakter aralığı kullanabilir ve UTF-16 formatında saklanır.
- El Torito: Önyüklenebilir CD-ROM'lar için bir özellik sağlayan, bir diskin önyüklenebilir olmasını sağlar ve önyükleme kodu ve önyüklenebilir disk görüntüleri içerebilir.
Optik diskler popülerliklerinin zirvesine kıyasla azalsa da, ISO 9660, salt okunur ortamlarda veri alışverişi için önemli bir standart olmaya devam etmektedir. Tasarımı, optik depolama kısıtlamaları dahilinde çalışırken bilgi işlem platformları arasında birlikte çalışabilirliği desteklemiştir. ISO 9660 formatını anlamak, CD/DVD arşivleri, disk görüntüleri ve işletim sistemi iç bileşenleri ile çalışanlar için değerlidir.
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.