GNU/Linux >> Belajar Linux >  >> Linux

Mana yang lebih efisien - kompresi tar atau zip? Apa perbedaan antara tar dan zip?

tar hanya membuat satu file dari banyak file, itu tidak melakukan kompresi kecuali digabungkan dengan program kompresi seperti gzip atau bzip2 (yang dapat Anda panggil dari dalam tar dengan menggunakan -z atau -j pilihan, masing-masing). zip menggabungkan pengarsipan dan kompresi dalam satu program.


tar

  • Diasumsikan Anda akan membaca dari satu ujung ke ujung lainnya - "Tape Archive". (Usia perintah menunjukkan...)
  • Tidak melakukan kompresi, tetapi Anda dapat mengompres seluruh aliran yang dihasilkan dengan menyalurkannya melalui mis. gzip dan bzip2 (dilakukan secara internal dengan -z atau -j)
  • Menyimpan atribut file unix :uid, gid, izin (terutama dapat dieksekusi). Default mungkin bergantung pada distribusi Anda, dan dapat diubah dengan opsi.

zip

  • Menyimpan atribut MSDOS . (Arsipkan, Hanya Baca, Tersembunyi, Sistem)
  • Mengompresi setiap file, lalu menambahkannya ke arsip
  • Termasuk tabel file di akhir file
  • dan sebagai hasil dari dua yang sebelumnya, hanya memungkinkan membaca bagian yang tepat tentang file yang Anda perlukan.

Fakta bahwa zip mengompresi file secara terpisah akan memengaruhi rasio kompresi, terutama pada banyak file kecil yang serupa.

(Setidaknya ini benar satu dekade lalu.)


Tar menyimpan lebih banyak metadata daripada Zip, lihat perbandingan saya (agak ketinggalan jaman):

(Klik untuk memperbesar)

Tar melewati 65% tes, di mana Zip hanya melewati 17%. Saya telah menyediakan test suite di github di bawah lisensi BSD sehingga Anda dapat mencobanya sendiri jika Anda memiliki Mac. Untuk linux di sana saya tidak yakin apakah ada metadata, jadi pengujian ini mungkin tidak relevan.


Linux
  1. Apa perbedaan antara menulis ke file dan memori yang dipetakan?

  2. Apa perbedaan antara fsync dan syncfs?

  3. Apa perbedaan antara fsck dan e2fsck?

  1. Apa perbedaan antara InnoDB dan MyISAM?

  2. Apa perbedaan antara `su -` dan` su --login`?

  3. Apa perbedaan antara unlink dan rm?

  1. Apa perbedaan antara strtok_r dan strtok_s di C?

  2. Apa perbedaan antara adduser dan useradd?

  3. Apa perbedaan antara ls dan l?