Selain dari apa yang dikatakan sebelumnya oleh grawity dan Paul :
Sejarah
Dalam "hari tua", cpio (dengan opsi -c
digunakan) adalah yang alat untuk digunakan ketika datang untuk memindahkan file ke turunan lainnya UNIX karena itu lebih portabel dan fleksibel daripada tar . Tapi tar portabilityissues dapat dianggap sebagai diselesaikan sejak akhir 1980-an.
Sayangnya pada saat itu vendor yang berbeda membuat -c
format cpio (lihat saja halaman manual untuk GNU cpio dan opsinya -H
). Pada saat itu tar menjadi lebih portabel daripada cpio ... Butuh hampir satu dekade penuh sampai berbagai vendor UNIX menyelesaikannya. Memiliki GNU tar dan GNU cpio diinstal adalah suatu keharusan untuk semua admin yang harus berurusan dengan kaset dari berbagai sumber saat itu (bahkan saat ini saya kira).
Antarmuka pengguna
tar dapat menggunakan file konfigurasi tape di mana administrator akan mengkonfigurasi drive tape yang terhubung ke sistem. Pengguna kemudian hanya akan mengatakan "Yah saya akan mengambil tape drive 1" daripada harus mengingat simpul perangkat yang tepat untuk rekaman itu (yang bisa sangat membingungkan dan juga tidak standar di berbagai platform UNIX.
Tetapi perbedaan utamanya adalah:
tar dapat mencari direktori sendiri dan mengambil daftar file atau direktori yang akan didukung dari argumen baris perintah.
arsip cpio hanya file atau direktori yang diperintahkan, tetapi tidak mencari subdirektori secara sendiri-sendiri. Juga, cpio mendapatkan daftar item yang akan diarsipkan dari stdin - inilah mengapa hampir selalu digunakan bersama dengan find .
Sebuah cpio perintah sering terlihat menakutkan untuk pemula jika dibandingkan dengan tar :
$ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
$ tar czvf myfiles.tar.gz myfiles
Saya pikir itulah alasan utama mengapa kebanyakan orang menggunakan tar untuk membuat file arsip: Untuk tugas-tugas sederhana seperti menggabungkan direktori lengkap, itu lebih mudah digunakan.
Juga GNU tar menawarkan opsi -z
yang menyebabkan arsip yang akan dikompresi dengan GNU zip on the fly, membuat hal-hal bahkan lebih mudah.
Di sisi lain orang dapat melakukan hal-hal bagus dengan find & cpio . Sebenarnya ini adalah pendekatan yang lebih mirip UNIX: Mengapa menyertakan pencarian pohon direktori ke cpio jika sudah ada alat yang menangani hampir semua yang dapat dipikirkan orang: find . Hal-hal yang terlintas dalam pikiran adalah hanya membuat cadangan file yang lebih baru dari tanggal tertentu, membatasi file kepada file yang berada di sistem file yang sama atau memfilter hasil-cari dengan grep -v
untuk mengecualikan file tertentu ...
Orang-orang GNU tar menghabiskan banyak pekerjaan untuk memasukkan banyak hal yang sebelumnya hanya mungkin dengan cpio . Sebenarnya kedua alat belajar dari satu sama lain - tetapi hanya cpio yang dapat membaca format tar - bukan sebaliknya.
pemrosesan tar dan output
Satu catatan terakhir untuk sesuatu yang Anda katakan:
Saya juga diberitahu bahwa TAR tidak dapat mengompres dari STDOUT. Saya ingin mengarsipkan / mengompresi snapshot ZFS untuk cadangan. Saya bertanya-tanya apakah saya bisa menggabungkan CPIO dengan bzip2 untuk mendapatkan efek ini.
Nah, setiap versi tar (GNU atau tidak) dapat digunakan dalam sebuah pipa. Cukup gunakan tanda minus ( -
) sebagai nama arsip:
$ tar cvf - myfiles | bzip > myfiles.tar.bz
Juga GNU tar penawaran pilihan --to-command
untuk menentukan perintah postprocessor - meskipun saya masih lebih suka pipa. Mungkin itu berguna saat menulis ke perangkat perangkat keras tertentu.
pax
: P