'Tar' özelliğini bugün kullanmanın avantajı nedir?


209

tarTeyp arşivleri için geri yapıldığını biliyorum , ancak bugün hem dosyaları toplayan hem de aynı mantıksal dosya biçiminde sıkıştırma yapan arşiv dosya biçimlerine sahibiz.

Sorular:

  • Toplama / sıkıştırma / açma aşamalarında , aynı veri yapısında toplama ve sıkıştırma yapan bir dosya formatı kullanılmasına kıyasla veya tarkapsüllenmiş kullanım için 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).gzipbzip2

  • Arasında bulunmayan özellikler var targibi diğer dosya biçimleri, bu dosya biçimi .7zve .zipyok?

  • Yana tarböyle bir eski dosya biçimini ve daha yeni dosya biçimlerini bugün, neden var tar(enkapsüle olsun gzip, bzip2hatta yeni xzdosya için, hala çok yaygın GNU / Linux, Android, BSD ve diğer tür UNIX işletim sistemlerinde günümüzde kullanılan) transferler, program kaynağı ve ikili indirmeler ve bazen de paket yöneticisi formatı olarak?


33
Bunun "zaman harcıyor" olduğuna katılmıyorum. Performansı kastediyorsanız, format çok verimli olduğundan tar için gerçek performans cezası yoktur. O harcar Eğer demek istediğin senin zaman, nasıl görmüyorum tar xvzfdaha zor 7z -x...
allquixotic

41
Tar'ın başlangıçta bir katalog saklamadığı gerçeğini göz ardı ediyor gibi görünüyor, bu nedenle, ayıklamadan önce içeriği listelemek isteyen gui sıkıştırma araçlarının sadece içerikleri listelemek için bütün katranı dekompres etmesi gerekiyor, sonra tekrar çıkarırken tekrar açarlar. .
psusi 14.03.03:

10
@MarcusJ: Sence 7z, her dosyanın bir arşivde nerede başladığını sihirli bir şekilde biliyor mu? Ayrıca, normal sıkıştırma algoritmaları (gzip, bzip2) içerik akışıyla çalışır: bir sonraki aşamadan ilk aşamayı% 100 tamamlamaya gerek yoktur.
souser12345

11
Ayrıca @MarcusJ iki farklı şeyler kafa karıştırıcı gibi görünüyor: Bunu yaparken tar xvzf, sıkıştırılmamış veri olmadığı sabit diske yazılmaz .tarformatta! Koştuysanız gunzip blah.tar.gzve sonra tar xf blah.tarverileri diske iki kez yazacak ( haklı olarak bir kez .tar ve dosya sistemindeki dosyalar gibi), ama kimse bu şekilde yapmaz. tar xzfKullanımları bir UNIX Boru (temelde bir bellek kopyası) sıkıştırılmamış veri aktarmak için gzip(ya da her türlü kompresöre) için tar, veri bu nedenle değil diske yazılmaz .tarformatta.
allquixotic

14
Bildiğim bir şey tar(özellikle sıkıştırılmış) veri bozulmalarına gelince çok davranması. Modern formatlar tarafından eklenen küçük artıklık / kurtarma verileri altın değerindedir
PPC

Yanıtlar:


178

Bölüm 1: Performans

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

blah.tar.gzÖrneğin, sıkıştırılmamış halde 2 GB olan 1 GB gzip sıkıştırılmış veri olan bir dosyanız var (yani% 50 sıkıştırma oranı).

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

tar cf blah.tar files ...

Bu , sıkıştırılmamış formun blah.tarsadece bir toplanmasıyla sonuçlanacaktır files ....

O zaman yaparsın

gzip blah.tar

Bu blah.tardiskten içeriğini okuyacak, onları gzip sıkıştırma algoritması ile sıkıştıracak, içeriği yazacak blah.tar.gz, sonra da dosyadaki bağlantıyı kaldıracak (sil) blah.tar.

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

Yol 1

You have blah.tar.gz, öyle ya da böyle.

Koşmaya karar verdin:

gunzip blah.tar.gz

Bu irade

  • 1 GB sıkıştırılmış veri içeriğini OKUYUN blah.tar.gz.
  • Sıkıştırılmış verileri gzipbellekteki sıkıştırıcıdan PROCESS .
  • Bellek arabelleği bir "blok" değerinde veriyle dolarken, sıkıştırılmamış verileri blah.tardiskteki dosyaya YAZIN ve tüm sıkıştırılmış veriler okunana kadar tekrarlayın.
  • Dosyanın bağlantısını kaldırın (silin) blah.tar.gz.

Şimdi, blah.tarsıkıştırılmamış fakat içinde bir ya da daha fazla dosya bulunan ve yükü çok düşük veri yapısı olan bir diskiniz var . Dosya boyutu muhtemelen tüm dosya verilerinin toplamından büyük bir çift bayttır .

Sen koş

tar xvf blah.tar

Bu irade

  • Dosya izinleri, dosya adları, dizinler vb. Bilgileri içeren 2 GB sıkıştırılmamış veri içeriğini blah.tarve tardosya formatının veri yapılarını OKUYUN .
  • 2 GB veri ve diske meta veri yazın. 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ı.

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

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

Yol 2

You have blah.tar.gz, öyle ya da böyle.

Koşmaya karar verdin:

tar xvzf blah.tar.gz

Bu irade

  • blah.tar.gzBir seferde bir bloğun 1 GB sıkıştırılmış veri içeriğini hafızaya OKUYUN .
  • Sıkıştırılmış verileri gzipbellekteki sıkıştırıcıdan PROCESS .
  • Bellek tampon doldukça, bu olacak boru veri, bellekte, üzerine tarvs. meta veriler ve sıkıştırılmamış dosya verileri hakkında bilgi okuyacaktır dosya formatı ayrıştırıcı,.
  • Bellek arabelleği tardosya ayrıştırıcısında dolduğunda , dosyalar ve dizinler oluşturarak ve sıkıştırılmamış içeriklerle doldurularak sıkıştırılmamış verileri diske yazar.

Bu süreçte diskten READ yaptığımız toplam veri 1 GB sıkıştırılmış veri, dönemdi.

Bu işlem sırasında WROTE tarafından disklere yazdığımız toplam veri 2 GB sıkıştırılmamış veri + meta veri için bir kaç bayt = yaklaşık 2 GB idi.

Dikkat ederseniz, Yol 2'deki disk G / Ç miktarı, sıkıştırma oranındaki farklılıkları ayarlayarak , veya 7-Zip programları tarafından gerçekleştirilen disk G / Ç ile aynıdır .Zip

Sıkıştırma oranı sizin endişeniz ise, Xzkapsüllemek için kompresörü kullanın tarve 7-Zip için mevcut olan en gelişmiş algoritma kadar verimli olan LZMA2'ed TAR arşivine sahip olun.

Bölüm 2: Özellikler

tar 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. Tek bir dosyaya veya akışa dönüştürün, ancak mutlaka sıkıştırmasına gerek yoktur (sıkıştırma yararlı ve sık kullanılsa da).

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 veya terk edilmiş olursa olsun, en azından tar ve gunzip'e erişebilecek. Android yazılımları bile bu araçlara erişebilir.

Modern dağıtımları çalıştıran izleyicileri hedef alan yeni projeler, .tar.xz (gzip veya bzip2'den daha iyi sıkıştırılan Xz (LZMA) sıkıştırma formatını kullanarak) veya .7z gibi daha modern bir formatta ç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ıp hem de belirttiği biçimde biçimlendirir.

Sen .7z müzik gibi yepyeni biçimlerde çevrimiçi indirme mağazalarından satılan olmadığını aynı nedenle daha sık kullanılan görmüyorum Opus içinde veya video WebM . Eski ya da çok temel sistemler çalıştıran insanlarla uyumluluk.


Üç ayrı başlık altında tüm içeriğe sahip büyük cevap için Kudos.
JFW

2
"Bölüm 3: Uyumluluk", @ Kruug'un cevabından kopyalanmış görünüyor.
titanyumdecoy

23
@titaniumdecoy Bu bölümü ilk olarak yazan ve Kruug'un cevabını düzenleyenlerin tamamen quixotic olduğunu fark ettiniz mi?
slhck

2
Bunu gösterdiğin için teşekkürler, farketmedim. Ancak bu sayfadaki iki farklı cevapta aynı metin bloğuna sahip olmak bana biraz saçma geliyor.
titaniumdecoy

1
Bu tar, arşivleme ekosistemine neden uyduğunu (örneğin, dosyaları bir araya toplamak, performans artışı ve izin tasarrufu gibi diğer bazı avantajlar sağlamak) neden yanıtlar , ancak bu gibi modern alternatiflerin neden darkullanılmadığını ele almaz . Başka bir deyişle, bu cevap, dosya toplayıcıların kullanımını haklı çıkarır, ancak taryazılımın kendi içinde değildir.
gaborous

101

Bu , Yığın Taşması ile ilgili olarak cevaplandırılmıştır .

bzip ve gzip, tek tek dosyalar üzerinde çalışır, dosya gruplarına değil. Düz eski zip (ve pkzip) dosya grupları üzerinde çalışır ve arşivde yerleşik olan bir konsepte sahiptir.

* Nix felsefesi, belirli işleri çok iyi yapan ve birlikte zincirlenebilen küçük araçlardan biridir. Bu yüzden burada belirli görevleri olan iki araç var ve bunlar birbirleriyle iyi uyum sağlayacak şekilde tasarlandı. Ayrıca, dosyaları gruplandırmak için tar kullanabilirsiniz ve ardından bir sıkıştırma aracı seçeneğiniz vardır (bzip, gzip, vb.).

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, en azından tarve gunzipkaç yaşında veya terk edilmiş olursa olsun, erişebilecek . Android yazılımları bile bu araçlara erişebilir.

Modern dağıtımları çalıştıran izleyicileri hedef alan yeni projeler , ZIP veya RAR'a benzer şekilde (gzip veya bzip2'den daha iyi sıkıştırılan Xz .tar.xz( LZMA ) sıkıştırma formatı kullanılarak) veya .z2 gibi daha modern bir biçimde çok iyi bir şekilde dağılabilir. dosya biçimleri, birden fazla dosyayı tek bir dosyada kapsüllemek için bir düzeni hem sıkıştırır hem de belirtir.

Sen .7z müzik gibi yepyeni biçimlerde çevrimiçi indirme mağazalarından satılan olmadığını aynı nedenle daha sık kullanılan görmüyorum Opus içinde veya video WebM . Eski ya da çok temel sistemler çalıştıran insanlarla uyumluluk önemlidir.


7
Merhaba @Kruug, yazılarını, insanların neden başka bir şey kullanmayı seçtikleri zaman bu formatları kullanmayı seçtikleri konusunda pratik bir bakış açısı vermek için düzenledim . Zaten sahip olduğunuz metni değiştirmedim. Bu sadece bu sorunun kanonik cevabı gibi görünen şeyin tam resme sahip olmasını sağlamaktır. İsterseniz düzenlememi yapmaktan çekinmeyin :)
allquixotic 14.03.03

5
@ allquixotic başlangıç ​​kimse? Düzenlemeyi düzenleyin ve düzenleyin böylece düzenlemeyi düzenleyebilirsiniz ...
SnakeDoc

21
Bu cevap kesinlikle "bazen haksız oylamalar tarafından mahvoldum" durumudur. Sıkıştırılmış katran içeriğini listeleyen sorunun asıl konusuna değinmez, hatta orijinal bir cevap bile değildir!
Ярослав Рахматуллин

5
Büyük adalet için -1. bu bir yorum olmalıydı.
Wim

6
Eski / en düşük ortak payda argümanı almıyorum; Sık sık başka tar.gz paketlenmiş yazılımları yüklemek için gzip / gunzip (sunfreeware'den) indirme zorunluluğu olan yeni sistemlerde (güneş) hatırlıyorum. Eski / düşük ortak payda için, tar.Z(sıkıştır / aç) komutunu kullandınız. Yardımcı programların ilerlemesi, değişimin ve gelişimin sabit bir akışı (punto amaçlı değil) olmuştur: Z => zip => gz => bz2 => 7z => xz (veya ne tür bir düzen tercih ederseniz). Tar rolüne gelince, bazıları yalnızca sıkıştırmayı kaldırır / sıkıştırır ve hala dosya hiyerarşilerini bir araya getirmek için tar gerektirir.
Michael,

63

Tar, Unix dosya sistemleri hakkında her şeyi bilen, zengin bir işlem ve değiştirici setine sahiptir. Unix izinlerini, dosyalarla ilişkili farklı zamanları, sabit bağlantıları, softlinksleri (ve sembolik bağlantıların dosya sistemi grafiğine döngüleri getirme olasılığı hakkında) bilir ve tüm bu verileri yönetmek için çeşitli yollar belirlemenizi sağlar .

  • Çıkarılan verinin dosya erişim zamanlarını korumasını ister misiniz? Tar bunu yapabilir. İzinleri korumak için? Tar bunu yapabilir.

  • Sembolik linkleri sembolik linkler olarak korumak ister misiniz? Tar bunu varsayılan olarak yapar. Bunun yerine hedefi kopyalamak ister misiniz? Tar bunu yapabilir.

  • Bağlantılı verilerin yalnızca bir kez depolandığından (yani, doğru olanı yaptığınızdan) emin olmak ister misiniz? Tar bunu yapar.

  • Seyrek dosyaları iyi idare etmek ister misiniz? Tar bunu yapabilir.

  • Sıkıştırılmamış veri istiyor musunuz (neden?) Tar bunu yapabilir. Gzip ile sıkıştırmak için? Tar bunu yapabilir. Bzip2 ile mi? Tar bunu yapabilir. Keyfi harici sıkıştırma programları ile? Tar bunu yapabilir.

  • Ham bir aygıta yazmak veya kurtarmak mı istiyorsunuz? Tar'ın formatı bu durumu iyi idare ediyor.

  • Mevcut bir arşive dosya eklemek ister misiniz? Tar bunu yapabilir. Neyin değiştiğini görmek için iki arşivi zorlamak mı? Tar bunu yapabilir. Yalnızca arşivin değişen kısımlarını güncellemek için? Tar bunu yapabilir.

  • Birden fazla dosya sisteminde arşivlemediğinizden emin olmak ister misiniz? Tar bunu yapabilir.

  • Yalnızca son yedeklemenizden daha yeni olan dosyaları almak ister misiniz? Tar bunu yapabilir.

  • Kullanıcı ve grup adlarını veya numaralarını korumak ister misiniz? Tar ikisinden birini yapabilir.

  • /devÇıkarma işleminden sonra sistemin düzgün çalışması için cihaz düğümlerini (dosyalardaki gibi ) korumanız mı gerekiyor ? Tar bunu yapabilir.

Katran biliyor gerçekten yıllardır çok ve kullanım durumları çok işlemek için gelişen ve olmuştur bir çok kişi Unix dosya sistemi ile yapmak istediğim şeyleri.


12
İsteğe bağlı bir kompresör kullanmak için GNU katranına ihtiyacınız yoktur: sadece tar'ya arşivi yazmasını ve kompresöre bağlamasını söyleyin f -.
Ilmari Karonen

3
"Sıkıştırılmamış veri istiyor musunuz (neden?)?" tarBir dosya sistemi ağacını bir yerden diğerine kopyalamak ve izinleri, vb. Korumak için çok sık kullanıyorum ve bu durumda sıkıştırma sadece fazladan CPU döngüleri gerektiriyor. Örn tar cf - * | tar xf - -C /somewhere.
Steve

1
Ayrıca, hedef dosya sistemi çoğaltmayı gerçekleştirdiğinde bir .tar dosyası istersiniz. Çoğaltmayı gerçekleştiren bir dosya sisteminde sıkıştırılmış arşivler oluşturmak, veri tekilleştirme oranını büyük ölçüde düşürecektir. Örnek: Bir keresinde 10.000 $ 'lık bir tar.gz dosyasını sildik; Biri sıkıştırma kullandığı için 10 bin dolar değerinde depolama alanı kullanıyordu.
Aaron

@ Steve CPU döngüleri, LZ4 veya LZO gibi algoritmalar için disk IO'sundan daha ucuz olabilir. Bu yüzden zram'da kullanılırlar ve NTFS, ZFS, Btrfs gibi saydam sıkıştırma dosya sistemlerinde kullanılırlar ... bu yüzden bazen disk
GÇ'leri

30

İki farklı arşivleme ve sıkıştırma sürecini karıştırıyorsunuz .

Bir arşivleyici kullanma nedenleri

Sıkıştırma olmadan arşivlemeyi kullanmanın bir nedeni, örneğin bir grup dosyanın bir ana bilgisayardan diğerine kopyalanmasıdır. Aşağıdaki gibi bir komut

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

işleri önemli ölçüde hızlandırabilir. Dosyaların sıkıştırılamayacağını biliyorsam veya SSH sıkıştırma ile ayarlandıysa, önemli CPU zamanından tasarruf sağlayabilir. Elbette, arşivleme işlevli daha modern bir sıkıştırma aracı kullanılabilir ve sıkıştırma işlemi kapatılabilir. Bunun avantajı tar, her sistemde mevcut olmasını beklememdir.

Gzip sıkıştırmalı arşivleyici kullanma nedenleri

Kullandığım bir sebebi tarile gzipgeçerli: hız! Birkaç GiB metin dosyasını bir yerden bir yere aktarmak istersem, sıkıştırma uzun süreli depolama için değil, yalnızca geçiş için kullanıldığından son baytları sıkmakla ilgilenmiyorum. Bu durumlarda gzip, CPU'yu maksimuma çıkarmayan ( örneğin 7-Zip'in tersine ) kullanıyorum, bu da G / Ç'nin tekrar bağlı olduğumu ve CPU'ya bağlı olmadığım anlamına geliyor . Ve yine: gzipher yerde kullanılabilir olarak kabul edilebilir.

Kullanımının nedenleri tarlehine scp, rsyncvb

scpKopyalanacak çok sayıda küçük dosyanız varsa (örneğin, yüzbinlerce dosya içeren bir posta dizinleri) atıyor . rsync, olduğu gibi harika, her yerde mevcut olmayabilir. Ayrıca, rsyncyalnızca dosyaların bir bölümü - veya daha eski bir sürümü - hedefte zaten varsa öder. İlk kopya tar, asıl verilere bağlı olarak en hızlı, sıkıştırmalı veya baskısızdır.


1
Fakat eğer arşive gidecekseniz, neden bu kadar sıkıştıramıyorsunuz? Tamam, evet, kolay sıkıştırılmayan dosyalar için zaman kazandırabilir, ancak daha sonra arşivciler, örneğin, başlıklar hariç, örneğin, müziğin çok sıkıştırılabilir olmadığını bilmelidir.
Marcus

2
Gerekmeyebilir veya içeriğiniz sıkıştırılabilir olmayabilir.
Hasturkun

4
Performans nedeniyle, kompresörün verileri sıkıştırabileceği hızı aşan çok yüksek bant genişliğine sahip ağ bağlantıları üzerinden veri gönderirken sıkıştırılmamış dosya toplama kullanmak genellikle daha kolaydır. Bu, örneğin Gigabit Ethernet ile elde edilebilir; Çok düşük sıkıştırma oranına sahip sadece birkaç tane iyi tasarlanmış sıkıştırma algoritması, büyük bir masaüstü işlemcide bile hızlı olan verileri sıkıştırabilir. Gömülü bir cihazda çalışmak için daha az CPU zamanınız var.
allquixotic

3
bu sadece işleri hızlandırmakla kalmıyor, aynı zamanda dosya sahipliğini, zaman damgalarını ve öznitelikleri korumayı da sağlıyor (eğer kullanıcı yetkileri izin veriyorsa)
Andre Holzner

3
@AndreHolzner Sağ. Sık sık yaparım tar cf - . | (cd ~/somewhere; tar xvf -). Merkezi dizin yazılana kadar beklememek gerekmiyor (örneğin bir zip dosyasındaki gibi).
kullanici239558

24

Buradaki diğer iyi cevaplara ek olarak, bu sıkıştırılmış dosyalar akışlar gibi olduğundan ve bunları kolayca düzenleyebildiğiniz için kombinasyonu tar+ tercih ederim gzip|bzip2|xz.

İnternette mevcut bir dosyayı açmam gerekiyor. Ya da zipya rarformatlarla ilk önce indirmem ve sonra sıkıştırmam gerekiyor. İle tar.{gz,bz2,xz}ben diskte sıkıştırılmış arşiv phisically sahip gerek kalmadan indirmek ve aynı adımda sıkıştırmasını yapabilirsiniz:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

Bu işlem sadece sıkıştırılmamış dosyaları diskimde bırakacak ve tüm süreci hızlandıracak çünkü tüm dosyayı ilk defa indirirken bekliyorum ve indirme bittikten sonra dosyayı açıyorum. Bunun yerine, indirirken sıkıştırmasını kaldırıyorum. Bunu zipveya rardosyaları ile yapamazsınız .


2
Rar hakkında bir şey bilmiyorum (çok sayıda küçük dosyaya bölme yeteneği nedeniyle sadece korsanlar arasında popüler olmuş gibi görünen korkunç bir program), ancak zip'i gayet iyi aktarabilirsiniz. Man sayfa bile bundan bahseder. Ayrıca, tar biraz daha iyi sıkıştırma elde etme eğiliminde olmasına rağmen, büyük bir arşivin ortasından dosyaları ayıklama veya güncelleme kabiliyetine sahiptir. Sıkıştırma ve rastgele erişime karşılık bir değişimdir.
psusi 14.03.03:

3
@ psusi hatalı. Sen gibi kesmek yapabilirsiniz bu , ama ne yapar yerine indirirken Ayıklama arasında, .zip sonra bellekteki tüm dosya indirmek ve olduğunu. Ve funzipsadece ilk dosyayı zip dosyasında ayıklar, hepsini değil.
Carlos Campderrós

2
@Stu sadece netleştirmek için, bir sorun değil, sadece zamanınızı optimize ediyor (düşündüğünüz şey alanı umrumda değil)
Carlos Campderrós

1
Her iki taraf da işe tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
yarar

1
Ppsip'i birden çok diskete saklamak için eski zamanlardan hatırladığım kadar @ psusi, arşiv sonunda zip mağaza kataloğu. Her zaman başlangıç ​​çıkarma veya katalog gösterme için son disketi ister. Yani en.wikipedia.org/wiki/Dosyası
ZIP-64_Internal_Layout.svg

13

(GNU) Tar.

Bu:

  • GPL lisanslı
  • Unix felsefesi anlamında iyi
    • birkaç görevi yapabilen tek amaçlı bir araç
  • iyi belgelenmiş ve birçok güvenilir özelliğe sahiptir
  • çeşitli sıkıştırma algoritmaları ile uyumlu
  • kullanımı kolay ve insanlar onunla alışkanlıkları geliştirdi
  • yaygın olarak kullanılabilir
  • RMS tarafından başlatılan yazılımı kullanırken ( Emacs hariç ) içimde sıcak ve bulanık hissediyorum

Özel sığır eti, içeriği okuyabilmeden önce bir tarball'ı "açmak" zorundaysa, muhtemelen haklısınızdır. WinRAR ve 7-Zip otomatik olarak yapar. Ancak, arşiv içeriğini sıkıştırılmamış bir biçimde belgelemek gibi bu sorun için basit çözümler vardır.


1
Özgür bir yazılım - Birçoğu onlar ne yapıyorsa iyi - Diğer şeylerle kıyaslandığında pek iyi belgelenmemiş ve birçok özelliğe sahip - Özellikler çok az kullanılmış ve kullanımı oldukça kolay. Birkaç sıkıştırma algoritmasını destekler - Diğerleri kadar değil
Griffin

4
Unix Tanrıları yarattı - bu yüzden kullanmalıyız!
SnakeDoc

28
Tar ayrıca, UNIX izinlerini yerel olarak saklar ve çok iyi bilinmektedir ve test edilmiştir. Bir grup dosyayı tek bir dosyaya veya akışa aktarmanın gerekebileceği ancak mutlaka sıkıştırması gerekmeyen birkaç örnek var.
LawrenceC

3
Neyse ki katran sadece GNU versiyonlarıyla sınırlı değil. GNU katran kesinlikle iyi bir yazılım parçası olsa da, libarchive + ile ilgili ön uçlar diğer yazılım projelerine yerleştirmek için çok daha hızlı ve kolaydır. Katran için bir lisans mücadelesine dönüşmeden tartışabilirsin.
Lucas Holt,

1
Alaycı değilim. RMS'yi ve inancını ortaya koyma şeklini seviyorum.
Ярослав Рахматуллин 15.03.2015

11

.Zip gibi dosya biçimleri gerektiren dosya bir katalog okumak için, ilk dosyanın sonuna okumak için yazılımı. Tersine, tar bu bilgiyi sıkıştırılmış akışta saklar.

Katran yolunun avantajı, verileri bir ağ soketi gibi aranamayan bir borudan okurken sıkıştırmasını açabilmenizdir.

Sıkıştırma yönteminin avantajı, diskteki statik bir dosya için, önce tüm arşivi açmadan içeriğe ve meta verilere göz atabilirsiniz.

Ne yaptığınıza bağlı olarak her ikisinin de kullanımları vardır.


5
Hayır, zip dosyalarını bir borudan bir boruya akış olarak okuyabilir ve yazabilirsiniz.
Mark Adler,

O zaman uygulamaya özel olabilir, kesinlikle orijinal pkzip tarafından desteklenmiyor.
xorsyst 9

1
Evet, yazılımı desteklemek için yazılmalıdır. Sıkıştırılmış verileri uzunlukları ve CRC ile takip edebilen veri tanımlayıcıları ile zip formatı tamamen destekler.
Mark Adler,

@MarkAdler, hangi yazılım? Infozip bir borudan sıkıştırmayı desteklemiyor.
psusi


11

Tüm sorularınızı doğrudan cevaplamak için isteksizliğin olduğu görülüyor, sorunuzu pontifikasyon için bir başlangıç ​​noktası olarak kullanmak açıkça görülüyor. Bu yüzden bir şans vereceğim.

Aynı veri yapısında toplama ve sıkıştırma yapan bir dosya formatı kullanılmasına kıyasla, gzip veya bzip2'de enkapsüle edilmiş katranı kullanmak için toplama / 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).

Hayır. Aslında, tar ve gzip genellikle iki işlem olduğundan, Info-ZIP's zip gibi bir arşivleyicinin sağlamadığı bir çok çekirdekli hız avantajı elde edersiniz. Sıkıştırma oranı açısından, tar + gzip genellikle, indirgeme işleminden ziyade fermuardan daha belirgin bir şekilde daha iyi olacaktır, çünkü birincisi dosyalar arasındaki korelasyondan faydalanabilirken, ikincisi dosyaları ayrı olarak sıkıştırır. Bu sıkıştırma faydası, daha sıkıştırılmış bir arşivin daha kısa sürede çözülmesinden dolayı, çıkartırken hız kazancı anlamına gelir.

Tar dosyası biçiminin .7z ve .zip gibi diğer dosya biçimlerinin sahip olmadığı özellikleri var mı?

Evet, tar, Unix için tasarlandı ve yıllar içinde Unix dosya sistemlerinin tuhaf küçük parçalarını ve unny'lerini, hatta nookier ve crannier Mac OS X Unix dosya sistemlerini bile tam olarak kaydedip geri yükleyebilmek için gelişti. zip, izinler, zamanlar, sahipler, gruplar ve sembolik bağlantılar gibi meta verilerin çoğunu elinde tutabilir, ancak yine de her şeyde olmayabilir. Örnek olarak, ne zip ne de 7z, seyrek dosyaları tanıyamaz veya bunlardan faydalanamaz ya da sabit bağlantıları geri yükleyemezler ya da geri yükleyemezler.

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 diğer UNIX'te bu kadar yaygın olarak kullanılıyor? işletim sistemleri, dosya transferleri, program kaynakları ve ikili indirmeler için ve bazen paket yöneticisi biçiminde?

Burada buna çok güzel cevaplar var. En iyisi, sadece işe yaramasıdır ve daha iyi sıkıştırma formatlarına (ör. Xz) güncellemeye devam edebilir ve hala aynı tar formatını ve hatta aynı derlenmiş tar yardımcı programını kullanabilirsiniz. Eğer sadece bir sürü eşyayı paketleyip sonra diğer ucundan hepsini açmak istiyorsanız, oradaki en eski, en eksiksiz ve en hata ayıklanmış yazılım parçalarından başka bir şey kullanmak için çok az neden var.

Rasgele erişim, kısmi güncellemeler veya içerik parçalarıyla ilgilenmesi gereken diğer şeyleri istiyorsanız veya içindeki her şeyi okumadan içinde ne olduğunu bulmak istiyorsanız, o zaman farklı bir biçim kullanmak istersiniz.


CW , Topluluk Wiki'sinin kısaltmasıdır . Ayrıca bakınız "Topluluk Wiki" yayınları nelerdir? .
ctype.h

Sanırım CW çünkü soru 15'ten fazla cevaba sahip. Bu cevabı gönderdiğinizde, 15 olduğu için, soru ve cevapların tümü CW olarak işaretlendi.
ctype.h

Bu cevabın, soruların doğrudan alıntılanmasından (BTW'ye yazdığımdan başka soruların hiçbirinin yapmadığı bir şey söylemediğini görmedim, çünkü sorunun asıl revizyonu NARQ olarak kapatılacak kadar korkunçtu). Yine de iyi dene.
allquixotic

Um tamam. Ne düşünmek istersen sorun değil. Cevabınız veya başka herhangi bir cevap, performans cezası olup olmadığını ele alıyor gibi görünüyor. Cevabınız, diğerlerinin bildiği halde gözle görülür sıkıştırma farkını ele almıyor. Sizinki aslında performansa hitap etmediğinden (performans bölümünüz aslında iş akışı ile ilgilidir, performans hakkında hiçbir şey yoktur), başka hiçbir cevap tek bir yerde her şeyi yanıtlamaz. Performans cezası sorusunu yazmanız ilginç, ancak cevap vermediniz! Git figürü.
Mark Adler

Bu arada, iş akışı tartışmanız hiç kimsenin yapmadığı, diske tar tar dosyası yazıp sıkıştırdığınız bir şey hakkında. tar, her zaman sıkıştırma programını doğrudan çağırmak veya doğrudan bir sıkıştırma programına bir boruya bağlamak için kullanılır.
Mark Adler

11

Verim

Buradaki en büyük fark, sıkıştırma ve arşivlemenin. tarArşivlerde yapılması , daha sonra isteğe bağlı olarak arşivi bir kompresöre göndermesi ve arşivi oluşturması zipve dosya verilerini arşive yerleştirildiği sırada 32 KB'lik parçalar halinde sıkıştırmasıdır. Dosya verilerini küçük parçalara bölerek ve bunları ayrı ayrı sıkıştırarak, arşivdeki her şeyi açmak zorunda kalmadan belirli dosyaları veya dosya bölümlerini çıkarmanıza olanak tanır. Ayrıca, kompresörün yeniden başlatılmadan önce çok büyük bir sözlük oluşturmasını önler. Bu, sıkıştırma işleminin daha hızlı gideceği, ancak her şeyi daha büyük bir sözlük boyutuyla sıkıştırma kadar iyi bir sonuç vermeyeceği anlamına gelir.

İkinci dosyanın ilk 500 baytının ilk dosyanın son 500 baytıyla aynı olduğu iki dosyayı düşünerek görselleştirebilirsiniz. Bu zipyöntemle, kompresör ikinci dosya için yeniden başlatılır, bu nedenle ilk dosyanın aynı verilerde sona erdiğini hatırlamaz, bu nedenle kopyalanan verileri ikinci dosyadan çıkaramaz.

Popülerlik

Üzerinde birçok avantaj olan birçok başka format var tar. 7-Zip , Unix dosya izinlerini saklamamaktadır, ancak her ikisi de hızlı tarama, dosyaların bir alt kümesinin çıkarılmasına ve arşiv içindeki dosyaların güncellenmesine izin veren bir dizini saklar darve zipyapabilir. Sıkıştırma için çok çekirdekli CPU'ları da kullanabilirler.

Herkesin hala kullanmasının tarnedeni herkesin hala Windows kullanmasıyla aynı nedendir ve Flash : insanlar değişiklik yapmayı sevmezler. Değişmek için güçlü bir neden olmadan, insanlar bildikleri şeylere sadık kalırlar. darZaten çoğu kişi tarkurulu olduğunda ve çok az şey bildiğinden, dosya formatını doğrulamak için yeterince yarar sağlamıyor dar, bu yüzden basit atalet bizi eski standartta tutuyor.


2
zip, Unix izinlerini saklayabilir ve geri yükleyebilir. Unix sistemiyle birlikte dağıtılan InfoZIP'ten zip ve unzip programları bunu yapar.
Mark Adler,

3
zip, dosyayı 32K boyutunda sıkıştırmaz. Sıkıştırma işleminin 32K kayar pencere boyutunu karıştırıyorsunuz.
Mark Adler,

1
gzip -9, 900 kB sözlüğüne sahip değil. Tüm gzip seviyeleri 32K sözlüğünü kullanır. Bzip2'yi düşünüyor olabilirsiniz.
Mark Adler,

Bir cevapta çok fazla yanlış bilgi var.
Mark Adler,

1
Cevabınızda düzeltmeler yapmanız veya cevabınızı silmeniz gerekir.
Mark Adler,

7

Tar sadece dosya aktarımı için değil, dosya sisteminizin tam kaliteli yedeklerini yapmak için oluşturulmuştur. Bu nedenle, tar yardımcı programı, dosya sistemi yapınızla ilgili önemli olan her şeyi koruyan bir arşiv oluşturmak için en eksiksiz yardımcı programdır.

Bu, bir veya daha fazla rakip araçta eksik olan tüm bu özellikleri içerir:

  • dosya sahipliği
  • dosya izinleri
  • daha az yaygın dosya izinleri (örneğin, setuid, yapışkan bit)
  • sembolik bağlantılar
  • sert bağlantılar
  • cihaz girişleri (yani karakter ve blok aygıtları)
  • seyrek dosyalar
  • ACL girişleri ( tüm sürümler tarafından desteklenmiyor )
  • genişletilmiş / kullanıcı özellikleri ( tüm sürümler tarafından desteklenmiyor )
  • SElinux etiketleri ( tüm sürümler tarafından desteklenmez )

Ayrıca --one-file-systemyedekleme yaparken olağanüstü kullanışlı olan bir seçeneğe sahiptir.

Dosya sistemlerine yeni bir özellik eklendiğinde, destek tarilk önce (hatta yalnızca) eklenir . Böylece dosya kaydetmenin en uyumlu yolu olmaya devam ediyor.


Bu cevap mantıklı olan tek cevap. Gönderdiğiniz için teşekkür ederiz.
gaborous

5

Bugün etrafta dolaşan çok sayıda sıkıştırılmış dosyamız var, MP3'ler, JPG'ler, Videolar, tar.gz dosyaları, JAR paketleri, RPM'ler, DEB'ler ve diğerleri. Bunlardan bir demetini aktarım için tek bir dosyaya paketlemeniz gerekiyorsa, dosyaları sıkıştırmaya çalışmadan paketleyen bir 'tar' yardımcı programına sahip olmanız yararlı olacaktır.

Sıkıştırılmış bir dosyayı sıkıştırmayı denemek sadece zaman ve elektrik harcamakla kalmaz, aynı zamanda orijinalinden daha büyük bir dosyayla sonuçlanır.

Bunun bir başka kullanımı sıkıştırma oranlarını iyileştirmektir. Örneğin, bir günlük dosyaları demetini tar 'tarıyorsanız ve ardından sonucu gzip ediyorsanız, önce sıkıştırıp, sonra' tar 'ile paketlenmiş olandan daha küçük bir dosya elde edersiniz. Ve elbette, tar kullanarak, istediğiniz sıkıştırma algoritmasını seçebilir ve özel kullanım durumunuz için sıkıştırmayı optimize etmek için seçenekler belirleyebilirsiniz.

Tar'ın bugün çok alakalı olduğunu ve ZIP kullanımını tercih ettim. Büromuzda Windows işletim sistemi olan herkes 7 fermuarlı olduğundan bizim için tar dosyaları tamamen platformlar arası uyumludur.


Pratik olarak hiç sıkıştırılmamış tardosyaları görmezsiniz ve bunun bir nedeni vardır. tarçok büyük parçalar kullanır, bu da dosyaların sonunda çok miktarda dolgu elde edeceğiniz anlamına gelir. Tüm bu sıfırlardan kurtulmak için, neredeyse her zaman sadece gzipikinci bir düşünce vermeden kullanmak için öder .
Christian

Eğlenceli bir istisna, gzip kaynak kodunun açık nedenlerden dolayı çıplak bir katran olarak mevcut olmasıdır.
Mark Adler

4

Belki de neden bu kadar "yeni" dosya biçimlerinin hem sıkıştırma hem de toplama (ve ben şifreleme ekleyeyim) gerçekleştirmesini istemiyorum ki burada, tamamen farklı araçlar yerine tar üzerine inşa edilmedi.

Anladığım kadarıyla tarihsel nedenler var (işletim sistemi geçmişi, patentler "koruma", yazılım satıcısının araç satması vb. İle ilgili).

Şimdi, diğer yanıtın işaret ettiği gibi, şimdi bile katran diğer çözümlerden açıkça daha düşük değildir ve akışlarda çalışabilme veya Unix hakları yönetimi gibi diğer konularda daha iyi olabilir.

Katranla ilgili wikipedia makalesini okursanız başka bir ilginç gerçeği görebilirsiniz. Makale tar'nın bazı eksikliklerini kabul ediyor ... ama bunun yerine zip kullanılmasını önermiyor (gerçekten zip formatı bu eksiklikleri çözmüyor) ama DAR.

Kişisel bir dokunuşla biteceğim. Bazı zamanlar şifrelenmiş verileri depolamak için bir dosya formatı oluşturmak zorunda kaldım. Tar'ı baz olarak kullanmak kullanışlıydı (diğerleri aynı seçimi yaptı; örneğin tar .deb paketleri için dahili toplama formatıydı). Şifrelemeden sonra verileri sıkıştırmaya çalışmak tamamen işe yaramazdı, şifrelemeden önce bağımsız bir adım olarak sıkıştırma yapmak zorunda kaldım ve ya zip şifrelemeyi kullanmaya hazır değildim (ortak ve özel anahtarlarla iki anahtar şifreleme istedim) . Katran kullanarak bir esinti çalıştı.


3

Kimsenin bundan bahsetmediğine şaşırdım, ancak nedenlerinden biri - gerçekten bir avantaj değil, bir zorunluluk - geriye dönük uyumluluk için. Yıllarca süren, tararşivleme gerektirebilecek yazılımı çalıştıran sistemler var . Eski sistemleri "düzeltmek" için birini işe almanın maliyeti düşük değildir.


3

tar UNIX olduğu gibi UNIX tar olduğu gibi

Kanımca, bugün hala kullanmanın nedeni tar, UNIX yaklaşımının en başından beri tam anlamıyla doğru bir şekilde gerçekleştirdiği (muhtemelen nadir) durumlardan biridir.

Arşiv oluşturma sürecine daha yakından bakınca, farklı görevlerin ayrılmasının burada en iyi şekilde gerçekleştiğinin UNIX felsefesi olduğu konusunda hemfikirsiniz :

  • bir alet ( tardönüşümü konusunda uzmanlaşmış bir ad burada vermek) herhangi dosyaları, dizinleri ve dahil sembolik bağlantıların seçimini hepsi bir bayt akışı içine alakalı zaman damgaları, sahipleri gibi meta veri ve izinler.

  • ve herhangi bir giriş akımını bayttan başka bir (umarım) daha küçük çıkış akışına gzip bz2 xzdönüştüren, sadece isteğe bağlı olarak değiştirilebilir bir araç ( sadece birkaç seçeneği belirtmek için ).

Bu ve yaklaşımın kullanılması, kullanıcıya ve geliştiriciye bir dizi avantaj sağlar:

  • genişletilebilirlik Zaten var tarolan herhangi bir sıkıştırma algoritması ya da herhangi bir sıkıştırma algoritması ile çiftleşmeye izin vermek, henüz içsel işleyişlerinde hiçbir şeyi değiştirmek zorunda kalmadan hala geliştirilmeye devam etmektedir tar.

    Yepyeni "hyper-zip-utra" ya da whater sıkıştırma aracı çıkar çıkmaz, yeni hizmetçinizi tüm gücüyle kucaklayan kullanmaya hazırsınız tar.

  • tar80'li yılların başından bu yana kararlılık yoğun kullanımda olmuştur ve sayısız işletim sistemi ve makinelerinde çalıştırılmıştır.

    Her yeni arşivleme aracı için mülkiyeti, izinleri, zaman damgalarını ve benzerlerini saklamada yeniden icat etme ihtiyacının önlenmesi, her yeni arşivleme aracı için tekrar tekrar tekrar kullanılmasını sağlamakla kalmaz, aynı zamanda geliştirme sürecinde yalnızca çok fazla (gereksiz yere harcanan) zaman tasarrufu sağlar, aynı zamanda her güvenilirlik için aynı güvenilirliği garanti eder yeni uygulama.

  • tutarlılık Kullanıcı arayüzü her zaman sadece aynı kalır.

    A aracını kullanarak izinleri geri yüklemek için seçeneğin geçmesi gerektiğini --i-hope-you-rember-this-oneve B --this-time-its-another-one aracını kullanarak C aracını kullanırken kullanmanız gerektiğini hatırlamaya gerek yok .

    Oysaki D aracını kullanırken, kullanmasaydınız gerçekten berbat ederdiniz --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now.


3

Çok sayıda iyi cevap var, ancak hepsi önemli bir gerçeği ihmal ediyor. Tar, Unix benzeri dünyadaki köklü bir kullanıcı ve geliştirici ekosistemine sahiptir. Bu, ZIP'in DOS / Windows ekosistemi tarafından tutulduğu gibi devam etmesini sağlar. Böyle bir ekosisteme sahip olmak, teknik avantajlarını değil, teknolojiyi sürdüren şeydir.


Gerçekten iyi yorum, bunu bile düşünmemiştim ve bu gerçekten iyi bir nokta.
Marcus

3

Sebebi "kültürde yerleşme" dir. Sıkıştırılmış bir tar arşivinden başka bir şey işlemesi istendiğinde, Windows dünyasından geldiyse, ara sıra ZIP’ten gözü benden gizlenen benim gibi çok sayıda insan var.

7-Zip, RAR ya da başka bir şey duymak istemiyorum. Dosyanızı açmak için bir program yüklemem gerekirse, bu işe yarar. Bana ödeme yapılması veya içeriğin "sahip olması gereken" bir şey olması ve başka bir şekilde sunulmaması durumunda, bunu yapacağım.

Katranın bir avantajı, eğer birine tarball gönderirseniz, anında tanınır. Alıcı, kas hafıza kullanarak ekstraksiyon komutlarını yazabilir.

Asıl soru şudur: Neden bazı insanlar egzotik bir yardımcı program kurmak ve nasıl kullanacaklarını öğrenmek için zaman ayırmalarını isteyen bir baytlık daha fazla alan harcıyorlar? Ve sonra egzotik sıkıştırma ve arşiv biçimlerinin aptal kullanımları vardır. AAC sesine sahip bir H.264 videosunun gerçekten çok parçalı RAR'a yerleştirilmesi gerekiyor mu?

Tar formatı eski olabilir, ancak alakalı olan her şeyi depolar: dosya içerikleri, yollar, zaman damgaları, izinler ve mülkiyetler. Sadece sembolik linkleri depolamakla kalmaz, aynı zamanda hard link yapısını koruyabilir. Özel dosyaları da saklar, böylece /devönyükleme sırasında kullanılan bir minyatür dizin gibi şeyler için bir bant arşivi kullanılabilir. İkili paket biçimi hiçbir şey içermeyen bir Linux dağıtımını bir araya getirebilirsiniz, ancak dosya sistemi köküne göre sıkıştırılmamış tarball'lar.


Re "Yani takıntılı" ... tek bir sertleştirilmiş dizüstü bilgisayar ile warzone mahsur kaldığınızı ve cılız 20G sabit sürücünün neredeyse dolu olduğunu, belki bir Gig kaldığını ve silah seslerini çok uzaklardan duyduğunuzu hayal edin, gerçekten göz atmak istersiniz cipin nasıl onarılacağını gösteren 100 MB .PDF kılavuzu, ancak dosya 2 Gig .tgz dosyasındadır. Ve dizüstü bilgisayar kapalı kaynak kodlu, garip bir işletim sistemi kullanıyor ve sistem dosyalarını silmek için root erişiminiz yok, arama makinesini veya PDF görüntüleyiciyi bozmadan 4G + 'nın nasıl silineceği açık değil. Eğer sadece 100MB'lık bir dosyayı çıkartabilseydin ...
agc

2

Doğrudan sorduğunuz belirli soruları yanıtlama:

Aynı veri yapısında toplama ve sıkıştırma yapan bir dosya formatı kullanılmasına kıyasla, gzip veya bzip2'de enkapsüle edilmiş katranı kullanmak için toplama / 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).

Genel olarak, tarözellikle yerleşik sıkıştırma kütüphanesini kullanarak ( ikinci bir işlem yerine sıkıştırma kütüphanesinin kullanıldığı stil komut satırlarında tar xvzfveya tar xvjfstil komut satırında) belirli bir performans iyileştirmesi vardır . Bu iki ana nedenden kaynaklanıyor:

  • özellikle yazılım dağıtmada yaygın olarak kullanılanlar olmak üzere çok sayıda görece küçük dosya işlenirken, fazlalık vardır. Birçok dosya üzerinde sıkıştırmak, tek tek dosyaları sıkıştırmaktan daha yüksek genel sıkıştırma sağlar. Ve "sözlük" her giriş için bir kere hesaplanır, her dosya için değil.

  • tarDosya sistemlerini anlar. Çalışan / çalıştırılabilir bir işletim sistemini kaydetmek ve geri yüklemek için tasarlanmıştır. Bir UNIX dosya sisteminde neyin önemli olduğunu tam olarak kavrar ve bunu tam anlamıyla yakalar ve geri yükler. Diğer araçlar ... her zaman değil, özellikle işletim sistemi ailesi arasında dosya paylaşımı için daha iyi tasarlanmış olan zip ailesi, belgenin önemli olduğu yerde, sadık bir işletim sistemi duyarlı kopyası değil.

Tar dosyası biçiminin .7z ve .zip gibi diğer dosya biçimlerinin sahip olmadığı özellikleri var mı?

Seyrek dosya işleme. Doğrudan veritabanı kütüphanelerinin bazıları seyrek dosyalara dayanır - verilerin nominal olarak GB olduğu dosyalar, ancak yazılan ve saklanan gerçek veriler çok daha azdır ve sadece birkaç disk bloğu kullanılır. Eğer habersiz bir araç kullanıyorsanız, ardından açma işleminde, tümü sıfır içeren, büyük bir disk bloğu tüketimine sahip olursunuz. Bunu çok nadir bir dosyaya dönüştürmek ... acı verici. Eğer yapacak odanız bile varsa. Seyrek bir dosyanın ne olduğunu kavrayan ve buna saygı duyan bir araca ihtiyacınız var.

Meta veri. Unix yıllar içinde bazı tuhaf şeyler geliştirmiştir. 14 karakterlik dosya isimleri, uzun dosya isimleri, bağlantılar sym linkleri, yapışkan bitler, süper kullanıcı bitleri, kalıtsal grup erişim izinleri vb. Tar bunları anlar ve yeniden üretir. Dosya paylaşım araçları ... pek değil. Pek çok insan, bağlantıları kullandıkları gibi kullanmıyor ... Bağlantıları kullanan bir yazılımla daha önce çalıştıysanız ve daha sonra yedeklemek ve geri yüklemek için farkında olmayan bir araç kullandıysanız, şimdi çok fazla bağımsız dosyaları, birçok isimle tek bir dosya yerine. Ağrı. Yazılımınız başarısız oluyor ve disk şişirilmiş.

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 diğer UNIX'te bu kadar yaygın olarak kullanılıyor? işletim sistemleri, dosya transferleri, program kaynakları ve ikili indirmeler için ve bazen paket yöneticisi biçiminde?

tarEserleri. İyi tasarlandığı işi yapar. Diğer lanse değiştirmeler (olmuştur cpio, paxvb, vb.) Ancak tar, hemen hemen her şeye kurulur ve kullandığı sıkıştırma kütüphaneleri başka nedenlerden dolayı da oldukça yaygındır. Katran ne yaparsa onu yenecek başka hiçbir şey çıkmadı. Net bir avantajı olmadığı ve toplumda birçok kullanım ve bilginin bulunduğu yerde, hiçbir değişiklik olmayacaktır. Tar yıllar boyunca çok fazla kullandı. Dosya sistemlerini düşünme biçimimizde veya metin olmayan dosyalar bir şekilde kod aktarma biçiminde büyük değişiklikler yaparsak (şu anda nasıl olduğunu hayal edemiyorum, ancak bunu görmezden gelin ...) başka bir araç bulabilirsin. Fakat o zaman şu an kullandığımız işletim sistemi türü olmaz. Farklı düzenlenmiş, farklı organize edilmiş ve kendi araçlarına ihtiyacı olacak.

Bence sormadığın en önemli soru, 'katran' işlerinin neye uygun olmadığıdır.

tarsıkıştırma ile kırılgandır. Tüm arşive ihtiyacınız var, bit için bit. Benim tecrübeme göre, esnek değil. Tek bitlik hatalar yaşadım, çok parçalı arşivlerin kullanılamaz hale gelmesine neden oldum. Hatalara karşı korunmak için fazlalık sağlamaz (bu, sorduğunuz sorulardan birini veri sıkıştırma konusunda yener). Veri bozulma olasılığı varsa, fazlalığı kontrol etmeden hata yapmak istersiniz, böylece verileri yeniden oluşturabilirsiniz. Bu, tanım gereği, maksimum olarak sıkıştırılmadığınız anlamına gelir. Her ikisine de ihtiyaç duyulan ve maksimum anlam değerini (maksimum sıkıştırma) taşıyan her bir veriye sahip olamazsınız ve her veri bitini kaybedip kurtarma yeteneğine sahip olabilirsiniz (yedeklilik ve hata düzeltme). Peki ... arşivinin amacı ne?targüvenilirliği yüksek ortamlarda ve arşivin kaynaktan tekrar üretilebilmesi durumunda harikadır. IME, isimlerinin önerdiği asıl şey aslında daha kötü - teyp arşivleme. Bir kasetteki tek bit hataları (veya daha da kötüsü, kaset kafasındaki tek bit hataları, tüm baytlarda bir bit veya tüm arşivlerde bir bit kaybettiğinizde) verilerin kullanılamaz hale gelmesine neden olur. Yeterli fazlalık ve hata tespiti ve düzeltmesi ile bu sorunlardan herhangi birinde hayatta kalabilirsiniz.

Peki ... bakmakta olduğunuz ortamda ne kadar gürültü ve yolsuzluk var ve kaynak başarısız bir arşivi yeniden oluşturmak için kullanılabilir mi? Verdiğiniz ipuçlarından cevap, sistemin gürültülü olmadığı ve bu kaynağın bir arşivi yeniden oluşturabildiğidir. Bu durumda, taryeterli.

tarSıkıştırma ile de önceden sıkıştırılmış dosyalar ile iyi oynamıyor. Önceden sıkıştırılmış veri gönderiyorsanız ... sadece tar kullanın ve sıkıştırma aşamasına zahmet etmeyin - bu sadece fazla yapmak için CPU döngüleri eklemez. Bu, ne gönderdiğinizi ve nedenini bilmeniz gerektiği anlamına gelir. Eğer umrunda. Eğer bu özel durumlar umurumda değil, o katran sadakatle etrafında veri kopyalamak ve sadakatle edecek sıkıştırır başarısız , küçültmek için çok kullanışlı yapmak. Bazı CPU döngüleri dışında büyük bir problem yok.


-3

TAR, Teyp Arşivi'dir. Onlarca yıldan beri var ve yaygın olarak kullanılıyor ve destekleniyor. Olgun bir üründür ve mevcut ihtiyaçların yanı sıra eski olanları da ilgilenir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.