XZ Arşiv Formatı
XZ, öncelikle tek dosyaları sıkıştırmak için kullanılan, üstün sıkıştırma verimliliği ve açık kaynak uyumluluğu sunan, yüksek sıkıştırmalı bir arşiv formatıdır. XZ Utils’in bir parçası olarak geliştirilen bu format, makul açma hızlarını korurken yüksek sıkıştırma oranlarına ulaşan LZMA2 sıkıştırma algoritmasını kullanmasıyla tanınır. XZ arşivleri, özellikle Linux gibi Unix benzeri işletim sistemlerinde yazılım paketlerinin dağıtımında yaygın olarak kullanılmaktadır.
Genel XZ Arşiv Bilgileri
XZ arşivleri, depolama ve dağıtım için dosya boyutlarını azaltmaya odaklanarak verimli sıkıştırma sağlayacak şekilde tasarlanmıştır. Format, sözlük sıkıştırmasını ve entropi kodlamasını birleştiren ve büyük dosyaların sıkıştırılmasında oldukça etkili olmasını sağlayan LZMA2 algoritmasını kullanır. XZ arşivleri genellikle tek bir sıkıştırılmış dosya içerir, ancak dizinlerin tamamını sıkıştırmak için tar gibi diğer araçlarla birleştirilebilirler. XZ formatı, özellikle yazılım ve sistem güncellemelerini paketlemek için bir standart haline geldiği Linux ekosisteminde, yazılım dağıtımı, veri yedekleme ve arşivlemede sıklıkla kullanılır.
XZ Geçmiş Bilgisi
- 2005: XZ formatı, eski LZMA formatının daha etkili bir devamını oluşturmayı amaçlayan XZ Utils projesinin bir parçası olarak geliştirilmeye başlandı.
- 2009: XZ Utils resmi olarak piyasaya sürüldü ve yüksek sıkıştırma ihtiyaçları için yeni bir standart olarak XZ formatını tanıttı.
- 2010: XZ, Linux topluluğunda popülerlik kazanmaya başladı ve hızla yazılım paketlerini ve sistem arşivlerini sıkıştırmak için tercih edilen format haline geldi.
- 2011: Debian ve Arch Linux dahil büyük Linux dağıtımları, paket depoları için varsayılan sıkıştırma formatı olarak XZ’yi benimsemeye başladı.
- 2014: XZ’nin kullanımı Linux’un ötesine geçti ve özellikle yüksek sıkıştırma oranları gerektiren uygulamalar için platformlar arası yazılım dağıtımında popüler hale geldi.
- 2020: XZ, özellikle verimli sıkıştırmanın kritik olduğu ortamlarda yazılım paketleme, veri depolama ve dağıtımda yaygın olarak kullanılmaya devam ediyor.
XZ arşivinin yapısı
XZ arşiv formatı, tek dosya sıkıştırması için tasarlanmıştır ve yüksek sıkıştırma oranlarına ulaşmak için basit bir yapı kullanır. İşte bir XZ arşivinin yapısına genel bir bakış:
- Başlık: Başlık, format sürümü, bayraklar ve kullanılan isteğe bağlı uzantılar da dahil olmak üzere XZ arşiviyle ilgili meta verileri içerir. Ayrıca veri bütünlüğü için sağlama toplamlarının varlığını da gösterir.
- Sıkıştırılmış Veri Akışı: XZ arşivinin çekirdeği sıkıştırılmış veri akışıdır. Bu bölüm, LZMA2 algoritması kullanılarak sıkıştırılmış gerçek dosya verilerini içerir. Veri akışı bloklara bölünerek verimli sıkıştırma ve açma işlemlerine olanak sağlanır. Her bloğun sıkıştırması bağımsız olarak açılabilir; bu, arşiv kısmen bozulmuş olsa bile verilerin kurtarılmasına yardımcı olur.
- Altbilgi: Altbilgi, arşivin bütünlüğünü doğrulayan bir CRC32 sağlama toplamı içerir. Aynı zamanda sıkıştırılmış veri akışının sonunu da işaretler ve hızlı erişim için blok dizini gibi ek bilgiler içerebilir.
XZ Sıkıştırma Yöntemleri
XZ formatı öncelikle yüksek sıkıştırma oranı ve makul açma hızıyla bilinen LZMA2 sıkıştırma algoritmasına dayanır. XZ ile ilişkili sıkıştırma yöntemlerine daha yakından bakalım:
- LZMA2: Bu, XZ arşivleri tarafından kullanılan varsayılan ve tek sıkıştırma yöntemidir. LZMA2, LZ77 algoritmasını temel alır ve gelişmiş entropi kodlamasını birleştirerek büyük dosyaları sıkıştırmada oldukça verimli hale getirir. Ayarlanabilir sıkıştırma ayarları sunarak kullanıcıların ihtiyaçlarına göre sıkıştırma hızına veya oranına öncelik vermelerine olanak tanır.
- Filtreler: LZMA2 ’e ek olarak XZ, dosya boyutunu daha da azaltmak için sıkıştırmadan önce uygulanabilecek çeşitli isteğe bağlı filtreleri destekler. Bunlar arasında, küçük, tekrarlanan değişiklikleri olan verileri sıkıştırmak için yararlı olan delta kodlaması ve belirli talimatları daha sıkıştırılabilir formlara dönüştürerek yürütülebilir kodun sıkıştırılmasını optimize eden BCJ (Şube/Çağrı/Atlama) bulunur.
- CRC32 ve SHA-256 Sağlama Toplamları: Kendi başına sıkıştırma yöntemleri olmasa da, XZ arşivleri bütünlük kontrolleri için CRC32 sağlama toplamlarını kullanır ve isteğe bağlı olarak gelişmiş veri doğrulama için SHA-256’yı destekleyerek sıkıştırılmış verilerin bozulmamasını veya kurcalanmamasını sağlar.
.xz Desteklenen İşlemler
Aspose.Zip, .xz arşivleriyle çalışmak için kapsamlı destek sunarak sıkıştırılmış dosyaları yönetmeyi kolaylaştırır. İşte yapabilecekleriniz:
- Tam Çıkarma: Orijinal içeriğin bütünlüğünü ve yapısını koruyarak, bir .xz arşivindeki tüm dosyaları kolayca çıkarın.
- Seçici Çıkarma: Bir .xz arşivindeki belirli dosyaları hedefleyerek, dosya adlarına veya diğer kriterlere göre hassas veri kurtarmaya veya seçici açmaya olanak tanır.
- Veri Sıkıştırma: Dosya boyutlarını önemli ölçüde azaltmak için verimli LZMA2 sıkıştırma yöntemini kullanarak dosyalardan ve dizinlerden .xz arşivleri oluşturun.
- Özel Sıkıştırma Ayarları: Sıkıştırma hızını ve dosya boyutunu dengelemek için sıkıştırma düzeylerini ve diğer parametreleri ayarlayarak süreci özel ihtiyaçlarınıza göre uyarlayın.
.XZ Dosyasının Yapısı
.xz dosya formatı öncelikle verilerin sıkıştırılması ve paketlenmesi için kullanılır. Yüksek sıkıştırma oranlarına ulaşmak için LZMA2 algoritmasını kullanır. İşte bir .xz arşivinin yapısına genel bir bakış:
Akış Başlığı:
- Sihirli Bayt: İlk 6 bayt (FD 37 7A 58 5A 00) dosyayı bir .xz arşivi olarak tanımlar.
- Akış Bayrakları: Blok boyutu ve sıkıştırma seçenekleri gibi ayrıntıları içerir.
Blok Başlığı:
- Blok Boyutu: Takip eden bloğun boyutunu belirtir.
- Sıkıştırma Yöntemi: Kullanılan algoritmayı belirtir (genellikle LZMA2).
- Filtre Zincirleri: Sıkıştırmadan önce veya sonra uygulanan ek filtrelerin ayrıntılarını verir.
Sıkıştırılmış Veri Blokları:
- Veri: LZMA2 algoritması kullanılarak sıkıştırılmış gerçek veriler.
- CRC32: Sıkıştırılmış verilerin bütünlüğünü doğrulamak için kullanılan bir sağlama toplamı.
Dizin Bölümü:
- Dizin Verileri: Sıkıştırılmış akış içinde rastgele erişime izin vererek her bloğa ve sıkıştırılmamış boyuta ofsetler sağlar.
- Index CRC32: Index bölümünün bütünlüğünü sağlar.
Akış Alt Bilgisi:
- Akış Bayrakları: Doğrulama amacıyla akış bayraklarını başlıktan tekrarlar.
- Geriye Doğru Boyut: Dosyanın ters yönde geçişini sağlayan dizin bölümünün boyutu.
- Sihirli Bayt: Dosya, .xz arşivinin sonunu belirtmek için 2 baytlık bir diziyle (59 5A) biter.
İsteğe Bağlı Meta Veriler:
- Bazı .xz arşivleri, özel filtreler veya şifreleme gibi özel özellikler veya genişletilmiş işlevler için ek meta veriler içerebilir.
XZ Formatının Popülerliği
.xz dosya formatı, yüksek sıkıştırma oranı ve kaynakların verimli kullanımı nedeniyle özellikle Linux ve açık kaynak topluluklarında önemli bir popülerlik kazanmıştır. Yazılım paketlerini sıkıştırmak, kaynak kodunu dağıtmak ve büyük veri kümelerini arşivlemek için yaygın olarak kullanılır. XZ Utils araç seti, Linux, macOS ve Windows da dahil olmak üzere çeşitli platformlarda .xz dosyalarının oluşturulması, ayıklanması ve yönetilmesi için güçlü destek sağlar. Windows ortamlarında ZIP veya CAB kadar yaygın olarak benimsenmese de .xz, sıkıştırma etkinliği ve performans arasındaki dengesi nedeniyle takdir edilmektedir ve bu da onu geliştiriciler ve sistem yöneticileri için tercih edilen bir seçim haline getirmektedir. Ayrıca .xz, Debian’ın APT’si ve Arch Linux’un Pacman’ı gibi birçok paket yönetim sistemine entegre edilerek yazılım dağıtım ekosistemindeki rolünü daha da güçlendiriyor.
XZ Arşivlerini Kullanma Örnekleri
Bu bölümde, C# ve Java kullanılarak XZ arşivlerinin nasıl sıkıştırılıp açılacağını gösteren kod örnekleri sağlanmaktadır. Bu örnekler, XZ dosyalarıyla etkileşim kurmak için Aspose.Zip for C# gibi kitaplıkları ve yerleşik XzArchive sınıfını (Java ortamına bağlı olarak) kullanır.
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
Ek Bilgiler
İnsanlar soruyor
1. .xz tüm işletim sistemlerinde destekleniyor mu?
.xz en yaygın olarak Linux ortamlarında kullanılsa da tüm önemli işletim sistemlerinde desteklenir. XZ Utils gibi araçlar Windows ve macOS için mevcuttur ve 7-Zip gibi platformlar arası araçlar da destekler .xz dosyaları.
2. XZ dosyalarını kullanmanın avantajları nelerdir?
XZ dosyaları, yüksek sıkıştırma oranları, sistem kaynaklarının verimli kullanımı ve platformlar arası uyumluluk gibi çeşitli avantajlar sunar. Genellikle büyük veri kümelerinin arşivlenmesi, yazılım paketlerinin dağıtılması ve verilerin yedeklenmesi için kullanılırlar.
3. Birden fazla dosyayı tek bir .xz arşivine sıkıştırabilir miyim?
ZIP veya TAR , .xz genellikle tek bir dosyayı sıkıştırmak için kullanılır. Birden fazla dosyayı sıkıştırmak istiyorsanız, bir .tar dosyası oluşturmak için öncelikle bunları tek bir dosya halinde arşivlemeniz gerekir bir Aspose.Zip API ve ardından arşivi .xz kullanarak sıkıştırın; sonuçta bir .tar.xz dosyası elde edilir.