Apakah tar benar-benar memampatkan file, atau hanya mengelompokkannya?

37

Saya biasanya berasumsi itu taradalah utilitas kompresi, tetapi saya tidak yakin, apakah ini benar-benar mengkompres file, atau hanya seperti file ISO, file untuk menyimpan file?

Dokter
sumber
Juga di SuperUser .
allquixotic

Jawaban:

49

Tar adalah alat pengarsipan (Tape ARchive), ia hanya mengumpulkan file dan metadata mereka bersama-sama dan menghasilkan satu file. Jika Anda ingin mengompres file itu nanti, Anda dapat menggunakan gzip / bzip2 / xz. Untuk kenyamanan, tar memberikan argumen untuk mengompresi arsip secara otomatis untuk Anda. Lihat halaman manual tar untuk lebih jelasnya.

0xAF
sumber
9
Sedikit klarifikasi pada jawabannya. GNU tar yang menyediakan argumen kompresi tambahan itu. Misalnya, Solaris tar tidak memberikan argumen untuk kompresi.
Tero Kilkanen
5
oooh, itu sebabnya saya terus melihatthing.tar.7z
Mooing Duck
Tar BSD juga menyediakan argumen untuk kompresi, meskipun hanya menerima zdan menentukan metode kompresi berdasarkan ekstensi, sedangkan tar GNU memiliki zZjJargumen terpisah untuk metode kompresi yang berbeda.
wingedsubmariner
2
Baru saja membaca manual tar BSD, dan ternyata saya salah, tar BSD menggunakan terpisah zZjJuntuk kompresi seperti GNU tar. Namun, ia secara otomatis mendeteksi kompresi ketika melakukan dekompresi, sedangkan tar GNU zZjJjuga mengharapkannya .
wingedsubmariner
5
@wingedsubmariner: no; versi modern GNU tardekompresi secara otomatis tanpa memerlukan -zZjJopsi.
Jonathan Leffler
17

tarmenghasilkan arsip; kompresi adalah fungsi yang terpisah. Namun tar sendirian dapat mengurangi penggunaan ruang ketika digunakan pada sejumlah besar file kecil yang lebih kecil dari ukuran cluster filesystem. Jika sistem file menggunakan kluster 1kb, bahkan file yang berisi satu byte akan mengkonsumsi 1kb (plus inode). Sebuah tararsip tidak memiliki overhead ini.

BTW, file ISO tidak benar-benar "file untuk menyimpan file" - itu sebenarnya adalah gambar dari seluruh sistem file (yang awalnya dirancang untuk digunakan pada CD) dan dengan demikian strukturnya jauh lebih kompleks.

Michael Borgwardt
sumber
3
Sebenarnya file kosong tidak akan mengkonsumsi 1kb. Sebuah file 1-1023 byte akan.
psusi
@psusi jadi untuk file byte 1-1023 akan mengkonsumsi 1024 selalu yang menghasilkan pemborosan 1023-1 byte.
Shiplu Mokaddim
2

Perintah tar UNIX asli tidak memampatkan arsip. Seperti yang disebutkan dalam komentar, Solaris tar tidak kompres. Juga tidak HP-UX, atau AIX, FWIW. Dengan konvensi, arsip yang tidak terkompresi berakhir di .tar.

Dengan GNU / Linux Anda mendapatkan tar GNU. (Anda dapat menginstal tar GNU pada sistem UNIX lain.) Secara default tidak tar; Namun, hal itu tidak kompres arsip yang dihasilkan dengan gzip (juga oleh GNU) jika Anda pasokan -z. Akhiran konvensional untuk file gzip adalah .gz, jadi Anda akan sering melihat tarbal (gaul untuk arsip tar, biasanya menyiratkan itu telah dikompresi) yang berakhiran .tar.gz. Akhiran itu menyiratkan tar dijalankan, diikuti oleh gzip, misalnya tar cf - .|gzip -9v > archive.tar.gz. Anda juga akan menemukan arsip yang diakhiri .tgz, misalnya tar czf archive.tgz ..

Sunting: www.linfo.org/tar.html mengingatkan saya bahwa GNU tar mendukung lebih banyak fungsi daripada sekadar mengompres dengan gzip, dan mengingatkan saya bahwa sufiks lebih dari sekadar konvensi biasa. Mereka memiliki semantik bawaan. Ini juga mendukung bzip2 ( -juntuk .bz2) dan kompres lama ( -Zuntuk .Z). Kemudian saya melihat halaman manual dan diingatkan bahwa -asecara otomatis memetakan metode kompresi yang Anda inginkan berdasarkan akhiran.

Satu nit lainnya. Seperti yang dikatakan halaman manual tar Linux, GNU menghasilkan halaman info, bukan halaman manual, jadi untuk mempelajari semua tentang tar GNU, jalankan info tar.

tbc0
sumber
GNU tar masih tidak menangani kompresi dengan sendirinya, itu hanya pipa ke / dari gzip, bzip2, kompres, dan lainnya.
ott--
Saya telah melihat sumbernya . Tar GNU menangani kompresi! Implementasi mengambil keuntungan dari penggunaan kembali kode dan suara prinsip arsitektur ruang pengguna UNIX. "Hanya pipa" mengecilkan cara kompresi terintegrasi ke dalam alat. Fakta bahwa hal itu terjadi pada program pertolongan garpu adalah teknis. Jika Anda ingin mempertahankan "hanya pipa," mengutip nama file dan nomor baris dan mari kita lihat sisi mana yang diambil komunitas.
tbc0
Butuh beberapa hari sebelum saya dapat memeriksa sumber itu.
ott--
1

Utilitas tar tidak dikompres sampai Anda memberikan argumen untuk melakukannya [tar -z file name].

AJ
sumber