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.
tar c dir/ | gzip > dir.tar.gzdantar czf dir.tar.gz dir/perintah melakukan hal yang sama. Contoh di manatardikombinasikan dengan SSH dantar(lagi):tar cz Documents/ | ssh user@host 'tar xz(rsync setara akan menjadi:rsync -a Documents user@host:)