Aneh bahwa tidak ada orang lain yang menyebutkan bahwa versi GNU modern tarmemungkinkan 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 gzipatau bzip2memampatkan file, GNU secara tarotomatis 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 gzipyang berputar mengelilingi kedua pendahulunya, dan sepenuhnya kompetitif zip(yang telah di-porting ke Unix, tetapi tidak asli di sana), dan sekarang bzip2yang, menurut pengalaman saya, biasanya memiliki keunggulan 10-20% gzip.
[ Ditambahkan : seseorang mencatat dalam jawaban mereka yang cpiomemiliki konvensi lucu. Itu benar, tetapi sampai GNU tarmendapatkan opsi yang relevan (' -T -'), cpioadalah 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 cpioadalah Anda tidak hanya dapat memilih file - Anda harus memilihnya. Masih ada satu tempat di mana cpioskor; 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 findpenting 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 -depthopsi tersebut, cpioperintah 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). ]