Tüm farklı .tar arşiv türlerinin farkı nedir?


16

Birisi bana bu kadar çok arşivin ne olduğunu ve nasıl farklı olduklarını söyleyebilir mi?

Aklıma o en az beş var, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

Hangi uygulamalar için hangisi en iyisidir? Aynı dosyanın birçok varyasyonunu yapmak aptalca görünüyor ama eminim bir nedeni var.

Yanıtlar:


18

.gz, .xz, .bz2, .7z, .lz, .zEkleri dosya adı geçen sıkıştırma algoritması ile sıkıştırılmış olduğunu açıklığa kavuşturmak için kullanılır. Kullanımı sadece .tardosyalarla sınırlı değildir , ayrıca initrd.gz(sıkıştırılmış ilk ramdisk) veya manual.txt.gz(sıkıştırılmış metin belgesi için ) gibi dosyaları da görürsünüz . Ayrıca file.tgzhangisinin gzip sıkıştırılmış tarball (gibi file.tar.gz) olduğunu da görebilirsiniz .

Dosya uzantısı bir kuraldır, dosya içeriğini mutlaka tanımlaması gerekmez. Ne tür bir dosya kullandığınızı kontrol etmek için filekomutu kullanın. Misal:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)

Deneyimlerime göre, gzip-sıkıştırılmış dosyalar ( .gz) en yaygın olanlarıdır. Sıkıştırma ve açma işlemlerinde hızlıdır, ancak daha iyi sıkıştırma oranları sağlayan diğer algoritmalar da vardır.


8

@Lekensteyn cevabına ek olarak, bu davranışın bir şey yap ve iyi yap felsefesine dayandığını eklemek isterim - tarprogram birden fazla dosyayı tek bir akışa ( .taruzantıyla) nasıl koyacağını , gzipnasıl sıkıştırılacağını bilir tek dosya ( .gzuzantı ekleme ) *. Bu araçları birleştirerek, birden çok dosyayı tek bir .tag.gzdosyaya sıkıştıran bir komut oluşturabilirsiniz .

Bu yaklaşım çok esnektir - her türlü şeyi yapmak için birkaç standart Unix komutunu birleştirebilirsiniz. Örneğin, dosyaları sıkıştırmak için daha iyi bir program yazarsanız , dosya taroluşturmasını sağlamak için değiştirmeniz gerekmez; .tar.mymegazipbunun yerine, tarçıktısını kompresörünüze aktarırsınız.

Benzer şekilde, tarSSH hakkında hiçbir şey bilmez, ancak komutları birleştirerek dosyaları arşivleyen, SSH aracılığıyla uzak bir makineye yükleyen ve orada arşivlerini kaldıran bir komut dosyası oluşturabilirsiniz.

Bunu zipUnix kaynaklı olmayan komutla karşılaştırın - tüm dizinleri sıkıştırmak, dosyaları şifrelemek, arşivi daha küçük zip dosyalarına bölmek için yerleşik araçlara sahiptir.


(dipnot) - evet, tardosyaları -zve -janahtarları kullanarak gzip veya bzip yapabilir , kolaylık sağlamak için eklenmiştir ve GNU tar aslında yumurtlama gzipveya bzip2yeni bir süreçtir.


Örnek: komutlar tar c dir/ | gzip > dir.tar.gzve tar czf dir.tar.gz dir/komutlar aynı şeyi yapar. Bir örnek tarSSH ile birleştirilir tar(tekrar): tar cz Documents/ | ssh user@host 'tar xz(rsync eşdeğer olacaktır: rsync -a Documents user@host:)
Lekensteyn
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.