Jawaban:
tar
hanya membuat satu file dari banyak file, itu tidak melakukan kompresi kecuali jika menggabungkan program kompresi seperti gzip
atau bzip2
(yang dapat Anda panggil dari dalam tar
dengan menggunakan opsi -z
atau -j
, masing-masing). zip
menggabungkan pengarsipan dan kompresi dalam satu program.
ter
zip
Fakta bahwa zip mengkompres file secara terpisah akan berdampak pada rasio kompresi, terutama pada banyak file kecil yang serupa.
(Setidaknya ini benar tepat satu dekade yang lalu.)
Tar mempertahankan lebih banyak metadata daripada Zip, lihat perbandingan saya (sedikit ketinggalan jaman):
(Klik untuk memperbesar)
Tar lulus 65% dari tes, di mana Zip hanya melewati 17%. Saya telah membuat test suite tersedia di github di bawah lisensi BSD sehingga Anda dapat mencoba sendiri jika Anda memiliki Mac. Untuk linux di sana saya tidak yakin apakah ada metadata, jadi tes ini mungkin tidak relevan.
Efisiensi dapat diukur dengan berbagai cara:
Ada juga pertanyaan lain, seperti "Seberapa umum alat untuk memanipulasi arsip yang dihasilkan?"
Jadi, misalnya, bzip2
membuat file lebih kecil daripada gzip
, tetapi bisa memakan waktu lebih lama. Juga, dalam pengalaman saya gzip
bersifat universal pada sistem mirip Unix, tetapi bzip2
masih belum (meskipun sangat umum dan biasanya mudah didapat).
Seperti yang dicatat Wim, tar itu sendiri tidak bisa dikompres. Jika Anda menambahkan kompres tar (mis. Untuk mendapatkan .tar.gz atau .tar.bz2), Anda mengompres seluruh file tar sekaligus. Sebaliknya, zip mengkompres setiap file secara individual.
Efisiensi tergantung pada beban kerja. Secara khusus, zip memungkinkan Anda untuk mengakses file individual secara langsung. Dengan tar, Anda harus mencari terlebih dahulu melalui file yang tidak diinginkan (dikompresi) sebelumnya. Kinerja kompresi tergantung pada apa yang Anda kompres. tar
dengan bzip2
sering lebih baik untuk sejumlah besar file yang serupa (misalnya direktori sumber). zip
bisa lebih baik jika setiap file memiliki konten yang sangat berbeda.
Arsip Zip berisi direktori pusat dari isinya di akhir (kemungkinan besar untuk menghindari harus membuat direktori sebelumnya, di mana Anda belum tahu apa yang akan ada di dalamnya). Ini memungkinkan untuk mengekstrak file tunggal dengan cepat tanpa harus membongkar seluruh arsip: Cukup baca direktori arsip dan ekstrak hanya yang diperlukan. Namun, ini mengharuskan seluruh arsip dapat diakses, dan memerlukan akses acak yang hanya tersedia pada perangkat blok (floppy disk, hard drive). Selain itu, direktori arsip rentan: Jika arsip terpotong karena beberapa alasan, itu membutuhkan sihir yang giat untuk mengekstrak apa pun yang berguna dari arsip.
Arsip zip dibuat untuk penggunaan BBS, di mana penting untuk dapat menggabungkan isi direktori menjadi satu file tunggal (dan terkompresi) --- daripada harus mengunduh kemungkinan ribuan file tunggal. Sama seperti sebagian besar situs web menggabungkan unduhan mereka bahkan hari ini, untuk alasan yang sama.
Arsip tar dirancang untuk membundelkan cadangan yang akan digunakan untuk drive tape, karenanya untuk akses berurutan . Tidak ada direktori pusat; alih-alih, arsip berisi blok tajuk secara berkala yang menunjukkan file mana yang akan mengikuti dalam beberapa blok berikutnya. Arsip tar dimaksudkan untuk dibaca dalam satu gerakan; jika hanya satu file yang akan diekstraksi, arsip dibaca secara berurutan, mulai dari awal sampai file yang diminta ditemukan (yang mungkin juga di bagian paling akhir). Kompresi diterapkan di atas itu; masing-masing dari berbagai program kompresi yang diterapkan untuk arsip tar ( compress
, gzip
,bzip2
dll.) adalah kompresor aliran dan tidak mengubah sifat berurutan arsip dalam masalah apa pun. Dalam kasus terburuk, Anda perlu sedikit lebih banyak blok sampai Anda dapat mulai mengekstraksi.
Ini mungkin terdengar seperti perbedaan sepele, tetapi pada kenyataannya merupakan kebalikan dari filosofi. Dengan arsip zip, selalu ada kebutuhan untuk memiliki seluruh file yang ada untuk melakukan sesuatu yang berguna dengannya, sedangkan arsip tar dapat dialirkan ke saluran pipa. Saya dapat mengunduh arsip tar besar dan mulai mengekstraknya langsung dari awal, segera setelah beberapa blok pertama masuk (dan mungkin mengganggu pengunduhan segera setelah saya mendapatkan file yang saya cari). Untuk arsip Zip, saya harus menunggu sampai direktori arsip muncul, yang muncul di bagian paling akhir arsip. Tapi setelah saya lakukan memiliki seluruh file pada tangan, penggalian sebagian isi dari itu akan lebih cepat dari file tar.
Kedua format memiliki satu titik yang sangat kuat untuk mereka, tergantung di mana dan bagaimana mereka digunakan. Karena jaringan pipa (dan dengan demikian gagasan streaming data dari satu proses ke proses lainnya) hanya benar-benar ada di dunia Unix, keuntungan utama arsip tar hilang pada sistem lain, itulah sebabnya arsip Zip jauh lebih populer di sana. Tetapi arsip tar lebih fleksibel, itulah sebabnya saya lebih suka mereka kapan pun saya punya pilihan.
Seperti yang sudah dikatakan, tar membuat "blok" besar dari semua file yang dapat dikompres dengan stream comrpessor seperti gzip atau bzip2.
Kerugiannya adalah Anda harus mendekompres seluruh file untuk mengakses satu file di dalam arsip.
Keuntungan dari ini adalah bahwa rasio kompres biasanya lebih tinggi, terutama ketika file terkompresi sangat mirip.
Packer lain seperti "rar" memiliki "mode blok" (atau serupa) untuk memiliki efek yang sama.