Selain jawaban @Lekensteyn, saya ingin menambahkan bahwa perilaku ini didasarkan pada Do one thing and do it filosofi dengan baik - tar
program tahu bagaimana menempatkan beberapa file ke dalam satu aliran (dengan .tar
ekstensi), gzip
tahu cara mengompres file tunggal (menambahkan .gz
ekstensi) *. Dengan menggabungkan alat-alat itu, Anda dapat membuat perintah yang memampatkan banyak file menjadi satu .tag.gz
file.
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 tar
untuk mengaktifkannya untuk membuat .tar.mymegazip
file - sebagai gantinya, Anda hanya mem tar
- pipe output ke kompresor Anda.
Demikian pula, tar
tidak 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 zip
perintah, 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, tar
bisa gzip atau bzip file itu sendiri menggunakan -z
dan -j
switch, mereka ditambahkan untuk kenyamanan, dan tar GNU sebenarnya memijah gzip
atau bzip2
sebagai proses baru.
tar c dir/ | gzip > dir.tar.gz
dantar czf dir.tar.gz dir/
perintah melakukan hal yang sama. Contoh di manatar
dikombinasikan dengan SSH dantar
(lagi):tar cz Documents/ | ssh user@host 'tar xz
(rsync setara akan menjadi:rsync -a Documents user@host:
)