Apa bedanya dengan semua jenis arsip .tar yang berbeda?

16

Adakah yang bisa memberitahuku ada apa dengan begitu banyak arsip, dan apa bedanya?

Ada setidaknya lima yang bisa saya pikirkan, .tar.tz, .tar.gz, .tar.bz2, .tar.lz,.tar.z

Yang mana yang terbaik untuk aplikasi apa? Kelihatannya konyol membuat begitu banyak variasi file yang sama, tetapi saya yakin ada alasannya.

Trevor Gross
sumber

Jawaban:

18

The .gz, .xz, .bz2, .7z, .lz, .zakhiran digunakan untuk membuat jelas bahwa file yang dikompresi dengan algoritma kompresi kata. Penggunaannya tidak terbatas pada .tarfile, Anda juga akan melihat file seperti initrd.gz(ramdisk awal terkompresi) atau manual.txt.gz(untuk dokumen teks terkompresi). Anda juga dapat melihat file.tgzyang juga menunjukkan tarball yang dikompresi gzip (seperti file.tar.gz).

Ekstensi file adalah konvensi, tidak perlu menjelaskan konten file. Untuk memeriksa jenis file apa yang Anda tangani, gunakan fileperintah. Contoh:

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

Dalam pengalaman saya, file yang dikompresi gzip ( .gz) adalah yang paling umum. Cepat dalam mengompresi dan mendekompresi, meskipun ada algoritma lain yang menghasilkan rasio kompresi yang lebih baik.

Lekensteyn
sumber
8

Selain jawaban @Lekensteyn, saya ingin menambahkan bahwa perilaku ini didasarkan pada Do one thing and do it filosofi dengan baik - tarprogram tahu bagaimana menempatkan beberapa file ke dalam satu aliran (dengan .tarekstensi), gziptahu cara mengompres file tunggal (menambahkan .gzekstensi) *. Dengan menggabungkan alat-alat itu, Anda dapat membuat perintah yang memampatkan banyak file menjadi satu .tag.gzfile.

Pendekatan ini sangat fleksibel - Anda dapat menggabungkan beberapa perintah Unix standar untuk melakukan segala macam hal. Sebagai contoh, jika Anda menulis program yang lebih baik untuk mengkompres file Anda tidak perlu memodifikasi taruntuk mengaktifkannya untuk membuat .tar.mymegazipfile - sebagai gantinya, Anda hanya mem tar- pipe output ke kompresor Anda.

Demikian pula, tartidak tahu apa-apa tentang SSH, tetapi dengan menggabungkan perintah, Anda dapat membuat skrip yang mengarsipkan file, mengunggahnya ke mesin jarak jauh melalui SSH dan menghapus arsip di sana.

Bandingkan ini dengan zipperintah, yang tidak berasal dari Unix - ia memiliki alat bawaan untuk mengompres seluruh direktori, mengenkripsi file, membagi arsip menjadi zipfiles yang lebih kecil, dll.


(catatan kaki) - ya, tarbisa gzip atau bzip file itu sendiri menggunakan -zdan -jswitch, mereka ditambahkan untuk kenyamanan, dan tar GNU sebenarnya memijah gzipatau bzip2sebagai proses baru.

Sergey
sumber
Contoh: perintah tar c dir/ | gzip > dir.tar.gzdan tar czf dir.tar.gz dir/perintah melakukan hal yang sama. Contoh di mana tardikombinasikan dengan SSH dan tar(lagi): tar cz Documents/ | ssh user@host 'tar xz(rsync setara akan menjadi: rsync -a Documents user@host:)
Lekensteyn