Aneh bahwa tidak ada orang lain yang menyebutkan bahwa versi GNU modern tar
memungkinkan Anda mengompres saat Anda membundel:
tar -czf output.tar.gz directory1 ...
tar -cjf output.tar.bz2 directory2 ...
Anda juga dapat menggunakan kompresor pilihan Anda asalkan mendukung opsi ' -c
' (ke stdout, atau dari stdin) dan ' -d
' (dekompresi):
tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...
Ini akan memungkinkan Anda untuk menentukan kompresor alternatif.
[ Ditambahkan : Jika Anda mengekstrak dari gzip
atau bzip2
memampatkan file, GNU secara tar
otomatis mendeteksi ini dan menjalankan program yang sesuai. Artinya, Anda dapat menggunakan:
tar -xf output.tar.gz
tar -xf output.tgz # A synonym for the .tar.gz extension
tar -xf output.tar.bz2
dan ini akan ditangani dengan benar. Jika Anda menggunakan kompresor non-standar, maka Anda perlu menentukannya saat Anda melakukan ekstraksi.]
Alasan pemisahan, seperti dalam jawaban yang dipilih, pemisahan tugas. Antara lain, itu berarti bahwa orang dapat menggunakan program ' cpio
' untuk mengemas file (bukan tar
) dan kemudian menggunakan kompresor pilihan (pada suatu waktu, kompresor yang disukai adalah pack
, kemudian compress
(yang jauh lebih efektif daripada pack
), dan kemudian gzip
yang berputar mengelilingi kedua pendahulunya, dan sepenuhnya kompetitif zip
(yang telah di-porting ke Unix, tetapi tidak asli di sana), dan sekarang bzip2
yang, menurut pengalaman saya, biasanya memiliki keunggulan 10-20% gzip
.
[ Ditambahkan : seseorang mencatat dalam jawaban mereka yang cpio
memiliki konvensi lucu. Itu benar, tetapi sampai GNU tar
mendapatkan opsi yang relevan (' -T -
'), cpio
adalah perintah yang lebih baik ketika Anda tidak ingin mengarsipkan semua yang ada di bawah direktori tertentu - Anda sebenarnya dapat memilih dengan tepat file mana yang diarsipkan. Sisi negatifnya cpio
adalah Anda tidak hanya dapat memilih file - Anda harus memilihnya. Masih ada satu tempat di mana cpio
skor; itu dapat melakukan salinan in-situ dari satu hierarki direktori ke yang lain tanpa penyimpanan perantara:
cd /old/location; find . -depth -print | cpio -pvdumB /new/place
Kebetulan, opsi ' -depth
' aktif find
penting dalam konteks ini - opsi ini menyalin konten direktori sebelum mengatur izin pada direktori itu sendiri. Ketika saya memeriksa perintah sebelum memasukkan penambahan pada jawaban ini, saya menyalin beberapa direktori read-only (izin 555); ketika saya pergi untuk menghapus salinan tersebut, saya harus melonggarkan izin pada direktori sebelum ' rm -fr /new/place
' dapat selesai. Tanpa -depth
opsi tersebut, cpio
perintah tersebut akan gagal. Saya hanya mengingat kembali ini ketika saya pergi untuk melakukan pembersihan - rumus yang dikutip otomatis bagi saya (terutama karena banyak pengulangan selama bertahun-tahun). ]