21Aug

Bugün Tar Dosyası Formatını Kullanmanın Avantajı Nedir?


Tar arşivleme biçimi, hesaplama yıllarında, gerçek bir Methuselah, ancak halen bugün hala ağır kullanımdadır. Tar formatını, kuruluşundan çok sonra çok kullanışlı kılan şey nedir?

Bugünkü Soru &Yanıt oturumu bize Q & A web sitelerinin topluluk temelli bir gruplandırması olan Stack Exchange'in bir alt bölümü olan SuperUser nezaketen geliyor.

Soru

SuperUser okuyucusu MarcusJ, tar formatından ve bunun neden hala taramalı formatı kullandığından merak ediyor:

Katranın kaset arşivleri için günde geriye döndüğünü biliyorum, fakat bugün her ikisinde de arşiv dosyası formatları vartoplamak ve aynı mantıksal dosya biçiminde sıkıştırma gerçekleştirmek.

Sorular:

  • Aynı veri yapısında toplama ve sıkıştırma yapan bir dosya formatı kullanıldığında karşılaştırıldığında, gzip veya bzip2'de kapsüllenmiş tar'in kullanımı için /compression/ dekompresyon aşamaları toplama işlemi sırasında bir performans düşüşü var mı?Karşılaştırılan kompresörün çalışma süresinin aynı olduğunu varsayalım( örneğin gzip ve Deflate benzerdir).
  • . 7z ve. zip gibi diğer dosya formatlarının sahip olduğu tar dosyası biçiminin özellikleri var mı?
  • Tar bugünkü dosya formatı olduğundan ve daha yeni dosya biçimleri mevcut olduğundan, tar neden( gzip, bzip2 veya yeni xz olarak kapsüllese dahi) halen GNU / Linux, Android, BSD ve benzeri diğer türlerde hala yaygın olarak kullanılmaktadırUNIX işletim sistemleri, dosya aktarımları, program kaynağı ve ikili dosyalar için ve bazen bir paket yöneticisi biçimi olarak mı?

Bu çok makul bir soru;son otuz yılda bilgi işlem dünyasında o kadar çok şey değişti ama hala tar formatını kullanıyoruz. Hikaye ne?

Cevap

SüperKullanıcı katkıcı Allquixotic, tar formatının ömrü ve işlevselliği hakkında bazı bilgiler verir:

Bölüm 1: Performans

Burada, iki ayrı iş akışının karşılaştırması ve yaptıkları iştir.

Disk blah.tar.gz dosyasında, örneğin, sıkıştırılmadığında 2 GB( dolayısıyla% 50 sıkıştırma oranı) alan 1 GB gzip sıkıştırılmış veri var.

Arşivleme ve sıkıştırma işlemlerini tek tek yaparsanız, bunu yaratma şekli:

tar cf blah.tar dosyaları. ..

Bu, dosyaların bir araya toplanması olan blah.tar ile sonuçlanır. .sıkıştırılmamış biçimde.

Sonra

gzip blah.tar

yapardınız. Bu, blah.tar'ın içeriğini diskten okur, gzip sıkıştırma algoritması yoluyla sıkıştırır, içeriği blah.tar.gz'a yazar, daha sonra dosyayı bağlarsanız( silerseniz).katran.

Şimdi, sıkıştırmayı kaldıralım!

Yol 1

Bir şekilde var, blah.tar.gz'a sahipsin.

Çalıştırmaya karar verdiniz:

gunzip blah.tar.gz

Bu

  • blah.tar.gz'ın 1GB sıkıştırılmış veri içeriğini okuyacaktır.
  • Sıkıştırılmış verileri bellekte gzip açıcı kullanarak işleyin.
  • Bellek arabelleği "bir blok" değerinde veri dolduğunda, sıkıştırılmamış verilerin disk üzerindeki fileblah.tar dosyasına YAZIN ve sıkıştırılmış tüm veriler okunana kadar tekrarlayın.
  • Dosya blah.tar.gz dosyasını kaldırın( silin).

Şimdi, diskinizde blah.tar var, hangi sıkıştırılmamış ancak içinde bir veya daha fazla dosya içeriyor, çok düşük veri yapısı yükü var. Dosya boyutu muhtemelen çift bayttır tüm dosyaların toplamından büyük olacaktır.

Çalıştığınız:

tar xvf blah.tar

  • blah.tar'ın sıkıştırılmamış veri içeriğini ve dosya izinleri, dosya isimleri, dizinler hakkında bilgi de dahil olmak üzere tar dosyası formatının veri yapılarını OKUYUN.
  • WRITE to disk2GB veri artı meta veriler. Bu, aşağıdakileri içerir: veri yapısı / meta veri bilgisini, disk üzerinde uygun olduğunda yeni dosya ve dizinler yaratmaya veya varolan dosyaları ve dizinleri yeni veri içeriği ile yeniden yazmaya çevirir.

Bu süreçte diskten READ olan toplam veri 1GB( gunzip için) + 2GB( tar için) = 3GB idi.

Bu süreçte diske WROTE toplam veri 2GB( gunzip için) + 2GB( tar için) + meta veriler için birkaç bayt = yaklaşık 4GB idi.

Yol 2

Bir şekilde blah.tar.gz var.

Çalıştırmaya karar verdiniz:

tar xvzf blah.tar.gz

Bu,

  • belleğine bir defada bir blok olan blah.tar.gz'ın 1GB sıkıştırılmış veri içeriğini OKUYacaktır.
  • Sıkıştırılmış verileri bellekteki gzip dekompresörden işleyin.
  • Bellek arabellek dolduktan sonra boru bu verileri meta veriler vb. Ve sıkıştırılmamış dosya verileri hakkındaki bilgileri okuyacak olan tar dosyası biçimi ayrıştırıcısına belleğe aktaracaktır.
  • Bellek arabelleği tar dosyası ayrıştırıcısında dolduktan sonra, sıkıştırılmamış verileri, dosyaları ve dizinleri oluşturup bunları sıkıştırılmamış içeriğe doldurarak diske yazacaktır.

Bu süreçte 'yi 'den okuduğumuz toplam veri 1GB sıkıştırılmış veri, periyotdu.

Bu süreçte WROTE 'yi diske toplam veri, 2GB sıkıştırılmamış veri + meta veriler için birkaç bayt = 2GB idi.

Fark ederseniz Yol 2 'deki disk G / Ç miktarı, örneğin sıkıştırma oranındaki farklılıkları ayarlayan Zip veya 7-Zip programları tarafından gerçekleştirilen g / Ç işlemlerine ile aynı 'dir.

Ve eğer sıkıştırma oranı endişe ediyorsa, katr'ı kapsüllemek için Xz kompresörünü kullanın ve 7-Zip için mevcut en gelişmiş algoritma kadar etkili olan LZMA2'li TAR arşivine sahip olun: -)

Bölüm 2: Özellikler

tar, dosya meta verilerinde UNIX izinlerini depolar ve çok çeşitli alanlarda, farklı izin, sembolik bağlar vb. ile bir dizini başarıyla paketlemek için çok iyi biliniyor ve test edilmiştir. Birkaç dosyanın glob'unu doldurması gereken birkaç örnekten fazlası vartek bir dosya ya da akışa dönüştürürler, ancak mutlaka sıkıştırmazlar( sıkıştırma kullanışlı ve sıklıkla kullanılır).

Bölüm 3: Uyumluluk

Birçok araç, "en düşük ortak payda" dosya biçiminde olduğu için kaynak veya ikili biçimde. tar.gz veya. tar.bz2 olarak dağıtılır: Çoğu Windows kullanıcısı,. zip veya. raraçıcılar, çoğu Linux kurulumu, en basit olanı bile, ne kadar yaşlı olursa olsun, en azından tar ve gunzip'e erişebilecek. Hatta Android firmaları bu araçlara erişebiliyorlar.

Modern dağıtımları yürüten kitleleri hedef alan yeni projeler,. tar.xz( gzip veya bzip2'den daha iyi sıkıştıran Xz( LZMA) sıkıştırma biçimini kullanarak) veya. 7z gibi benzeri daha modern bir biçimde çok iyi bir şekilde dağıtılabilirZip veya Rar dosya biçimlerine dönüştürür ve birden çok dosyayı tek bir dosyaya sıkıştırmak için bir düzen belirler ve sıkıştırır.

Müzik, Opus gibi yepyeni formatlarda veya WebM'de video olarak çevrimiçi indirilen mağazalardan satılmamak için. 7z'nin daha sık kullanıldığını göremiyorsunuz. Eski veya çok basit sistemleri çalıştıran insanlarla uyumluluk.

Açıklamaya eklemek için bir şey var mı?Açıklamalarda ses çıkıyor. Diğer teknik uzman Stack Exchange kullanıcılarından daha fazla cevap okumak ister misiniz? Buradaki tam tartışma dizinine göz atın.