Anasayfa » nasıl » Tar Dosya Biçimini Bugün Kullanmanın Avantajı Nedir?

    Tar Dosya Biçimini Bugün Kullanmanın Avantajı Nedir?


    Katran arşivleme formatı, hesaplama yıllarında gerçek bir Methuselah'dır, ancak bugün hala yoğun olarak kullanılmaktadır. Tar formatının başlangıcından bu kadar faydalı olmasını sağlayan şey?

    Bugünün Soru ve Cevap oturumu bize topluluk tarafından yönlendirilen bir soru-cevap web sitesi grubu olan Stack Exchange'in bir alt birimi olan SuperUser'ın izniyle geliyor..

    Soru

    SuperUser okuyucu MarcusJ tar formatı ve neden bunca yıldan sonra hala kullanıyoruz:

    Tar'ın eski günlerde teyp arşivleri için yapıldığını biliyorum, ancak bugün hem dosyaları birleştiren hem de aynı mantıksal dosya biçiminde sıkıştırma gerçekleştiren arşiv dosya biçimlerine sahibiz.

    Sorular:

    • Aynı veri yapısında birleştirme ve sıkıştırma yapan bir dosya formatı kullanılmasına kıyasla, gzip veya bzip2'de kapsüllenmiş katran kullanımı için birleştirme / sıkıştırma / dekompresyon aşamaları sırasında performans cezası var mı? Karşılaştırılan kompresörün çalışma zamanının aynı olduğunu varsayalım (örneğin, gzip ve Deflate benzerdir).
    • Tar dosyası biçiminin .7z ve .zip gibi diğer dosya biçimlerinin sahip olmadığı özellikleri var mı??
    • Tar böyle eski bir dosya formatı olduğundan ve bugün daha yeni dosya formatları olduğundan, neden tar (hala gzip, bzip2 ve hatta yeni xz içine alınmış olsun) bugün hala GNU / Linux, Android, BSD ve benzeri UNIX'te bu kadar yaygın olarak kullanılıyor? işletim sistemleri, dosya transferleri, program kaynağı ve ikili indirmeler için ve bazen paket yöneticisi biçiminde?

    Bu tamamen makul bir soru; bilgisayar dünyasında son otuz yılda çok şey değişti, ancak biz hala tar formatını kullanıyoruz. Hikaye ne?

    Cevap

    SuperUser katkıda bulunan Allquixotic, tar formatının uzun ömürlülüğü ve işlevselliği hakkında bazı bilgiler sunar:

    Bölüm 1: Performans

    İşte iki ayrı iş akışının ve ne yaptıklarının bir karşılaştırması.

    Diskte bir dosyanız var blah.tar.gz yani, sıkıştırılmamış halde 2 GB kaplayan 1 GB gzip sıkıştırılmış veridir (yani% 50 sıkıştırma oranı).

    Ayrı olarak arşivleme ve sıkıştırma yapacak olsaydınız, bunu yaratma şekliniz şöyle olurdu:

    tar cf blah.tar dosyaları… 

    Bu sonuçlanacak blah.tar Bu sadece bir toplama Dosyalar…  sıkıştırılmamış formda.

    O zaman yaparsın

    gzip blah.tar 

    Bu içeriğini okuyacak blah.tar diskten gzip sıkıştırma algoritması ile sıkıştırın, içeriği blah.tar.gz, daha sonra dosyanın bağlantısını kaldırın (silin) blah.tar.

    Şimdi sıkıştırmayı açalım!

    Yol 1

    Var blah.tar.gz, Öyle ya da böyle.

    Koşmaya karar verdin:

    gunzip blah.tar.gz 

    Bu irade

    • 1GB sıkıştırılmış veri içeriğini OKUYUN blah.tar.gz.
    • Sıkıştırılmış verileri gzip bellekteki sıkıştırıcı.
    • Bellek arabelleği “blok” değerinde bir veriyle dolarken, sıkıştırılmamış verileri dosyaya YAZINblah.tar diskte ve tüm sıkıştırılmış veriler okunana kadar tekrarlayın.
    • Dosyanın bağlantısını kaldır (sil) blah.tar.gz.

    Şimdi, var blah.tar Sıkıştırılmamış fakat üzerinde bir veya daha fazla dosya bulunan diskte yükü çok düşük veri yapısı var. Dosya boyutu muhtemelen birkaç bayt tüm dosya verilerinin toplamından daha büyük olur.

    Sen koş

    tar xvf blah.tar 

    Bu irade

    • 2GB sıkıştırılmamış veri içeriğini OKUYUN blah.tar ve katran dosya izinleri, dosya adları, dizinler vb. bilgileri içeren dosya formatının veri yapıları..
    • 2GB veri ve meta verileri diske yazmak için YAZIN. Bu şunları içerir: veri yapısı / meta veri bilgilerinin uygun şekilde diskte yeni dosyalar ve dizinler oluşturmaya dönüştürülmesi veya mevcut dosyaların ve dizinlerin yeni veri içerikleriyle yeniden yazılması.

    Toplam veri biz OKU Bu süreçte diskten 1GB (gunzip için) + 2GB (tar için) = 3GB oldu.

    Toplam veri biz YAZDI bu süreçte disk 2GB (gunzip için) + 2GB (tar) + metadata için birkaç bayt = yaklaşık 4GB idi.

    Yol 2

    Var blah.tar.gz, Öyle ya da böyle.

    Koşmaya karar verdin:

    tar xvzf blah.tar.gz 

    Bu irade

    • 1GB sıkıştırılmış veri içeriğini OKUYUN blah.tar.gz, her seferinde bir blok, belleğe.
    • Sıkıştırılmış verileri gzip bellekteki sıkıştırıcı.
    • Hafıza tamponu doldukça boru Bu veri, bellekte, katran meta veriler vb. ve sıkıştırılmamış dosya verileri hakkındaki bilgileri okuyacak dosya biçimi çözümleyici.
    • Hafıza tamponu dolduğunda katran dosya ayrıştırıcı, dosyalar ve dizinler oluşturarak ve sıkıştırılmamış içeriklerle doldurularak sıkıştırılmamış verileri diske yazar..

    Toplam veri biz OKU Bu süreçte diskten 1GB sıkıştırılmış veri, dönem oldu.

    Toplam veri biz YAZDI Bu işlemdeki diske 2GB sıkıştırılmamış veri + meta veri için bir kaç bayt = yaklaşık 2GB oldu.

    Dikkat ederseniz, içerideki disk G / Ç’lerin miktarı Yol 2 olduğu özdeş disk tarafından yapılan G / Ç'ye göre Zip veya7-Posta programlar, sıkıştırma oranındaki herhangi bir farklılık için ayarlama.

    Sıkıştırma oranı sizin endişeniz ise, xz kapsüllemek için kompresör katran, ve LZMA2'ed TAR arşivi var, ki bu da mevcut en gelişmiş algoritma kadar verimlidir. 7-Posta :-)

    Bölüm 2: Özellikler

    katran UNIX izinlerini dosya meta verileri içinde depolar ve çok iyi bilinmektedir ve her türlü farklı izin, sembolik bağlantı vb. içeren bir dizini başarılı bir şekilde paketlemek için test edilmiştir. Kişinin bir sürü dosyayı içine çekmesi gerekebilecek birkaç durumdan daha fazlası vardır. Tek bir dosya veya akış, ancak mutlaka sıkıştırması gerekmez (sıkıştırma faydalı ve sık kullanılan olmasına rağmen).

    Bölüm 3: Uyumluluk

    Birçok araç kaynak veya ikili biçimde .tar.gz veya .tar.bz2 olarak dağıtılır, çünkü “en düşük ortak payda” dosya biçimidir: çoğu Windows kullanıcısının da .zip veya .rar sıkıştırıcılarına, çoğu Linux kurulumuna erişimi vardır. en temel olanı bile, kaç yaşında ya da soyulmuş olursa olsun, en azından tar ve gunzip'e erişebilecek. Android yazılımları bile bu araçlara erişebiliyor.

    Modern dağıtımları çalıştıran izleyicileri hedef alan yeni projeler, .zz (bzip2'den daha iyi sıkıştırılan xz (LZMA) sıkıştırma biçimini kullanarak) veya benzerlerine benzer şekilde, .tar.xz (Xz (LZMA) sıkıştırma biçimini kullanarak) gibi daha modern bir biçimde çok iyi bir şekilde dağılabilir. Zip veya Rar dosyası, birden fazla dosyayı tek bir dosyada kapsüllemek için bir düzeni hem sıkıştırır hem de belirtir..

    .7z'nin Opus gibi yepyeni formatlarda veya WebM'deki videolarda çevrimiçi indirme mağazalarından müzik satılmaması nedeniyle aynı sıklıkta kullanıldığını görmüyorsunuz. Eski ya da çok temel sistemler kullanan insanlarla uyumluluk.


    Açıklamaya eklemek için bir şey var mı? Yorumlarda ses kesiliyor. Diğer teknoloji meraklısı Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Burada tüm tartışma konusuna göz atın.