Di Linux / Unix, apakah .tar.gz versus .zip penting?

69

Program lintas platform terkadang didistribusikan sebagai .tar.gz untuk versi Unix dan .zip untuk versi Windows. Ini masuk akal ketika konten masing-masing harus berbeda.

Namun, jika isinya akan sama, akan lebih mudah untuk hanya memiliki satu unduhan. Windows lebih suka .zip karena itulah format yang bisa ditangani. Apakah itu penting di Unix? Yaitu, hari ini saya mencoba membuka ritsleting file di Ubuntu Linux, dan itu berfungsi dengan baik; apakah ada masalah dengan ini pada sistem operasi mirip Unix saat ini, atau apakah boleh untuk hanya menyediakan file zip di seluruh papan?

rwallace
sumber

Jawaban:

28

Necromancing.
Ya itu penting.
Sebenarnya itu tergantung.

tar.gz

  • Menyimpan atribut file unix : uid, gid, izin (terutama yang dapat dieksekusi). Standarnya mungkin tergantung pada distribusi Anda, dan dapat diaktifkan dengan opsi.
  • Menggabungkan semua file yang akan diarsipkan dalam satu file ("Tape ARchive").
  • Kompresi aktual dilakukan oleh GZIP, pada file .tar satu

zip

  • Menyimpan atribut MSDOS . (Arsip, Hanya Baca, Tersembunyi, Sistem)
  • Kompres setiap file satu per satu, lalu gabungkan file yang dikompresi satu per satu dalam satu file
  • Termasuk tabel file di akhir file

Karena zip mengkompres file secara individual, zip-arsip kemungkinan besar akan memiliki ukuran yang lebih besar (terutama dengan banyak file yang lebih kecil - pikirkan file config).

Jadi Anda lihat, mulai dari ukuran file, jika Anda zip sekelompok file di Linux / Unix, dan kemudian unzip, atribut file akan hilang (setidaknya yang tidak didukung oleh MS-DOS - tergantung pada apa ZIP -Perangkat lunak yang Anda gunakan). Ini mungkin penting, atau mungkin tidak, dalam hal ini tidak masalah (karena perbedaan ukuran file dalam banyak kasus diabaikan).

Kebingungan
sumber
10
distro standar zip pada sistem seperti unix (info-zip) juga menyimpan atribut file unix.
Erik Aronesty
35

tar gz lebih baik untuk Linux / Unix karena mempertahankan izin, seperti "dieksekusi" pada skrip.

Zam
sumber
8
Utilitas Arsip OS X dan izin zip / unzip mempertahankan, tetapi mungkin ada utilitas lain yang tidak.
Lri
4
Alat zip / unzip standar (info-zip) mempertahankan izin di linux, dan cap waktu di windows. lihat: en.wikipedia.org/wiki/Info-ZIP untuk kemampuan khas ... yang mengatasi masalah izin dan batasan ukuran file sambil tetap mempertahankan akses acak yang diinginkan dan properti arsip yang dapat diedit.
Erik Aronesty
33

Distro Linux paling populer hari ini secara default dilengkapi dengan zipkompatibilitas. Tetapi seperti yang dinyatakan oleh nc3b, tardan gziplebih umum pada sistem Linux / Unix. Jika Anda memerlukan kompatibilitas 95% pada sistem ini, pertimbangkan untuk menggunakan tardan gzip. Jika Anda hanya membutuhkan 85%, zipakan baik-baik saja.

BloodPhilia
sumber
2
Oke, 95% lebih baik dari 85% :-) Pertanyaan yang sangat kecil, apakah tidak masalah sama sekali jika ekstensi file .tgz bukan .tar.gz?
rwallace
8
Ekstensi tidak masalah sama sekali, itu hanya digunakan untuk referensi oleh pengguna dan program. Jika ekstensi .XXX dan Anda tahu itu .tar, Anda masih bisa menggunakan tar untuk membukanya. .tgz dan .tar.gz keduanya ekstensi dan file yang sama dengan ekstensi ini akan serupa.
BloodPhilia
2
Di sisi lain, untuk kompatibilitas 100% di Windows Anda harus menggunakan taksi.
kinokijuf
3
tar akan menyimpan uid, gid, dan izin, seperti + x pada sistem unix. arsip zip store, hanya baca, tersembunyi dan sistem di sistem windows.
Andrew De Andrade
1
@mtak Anda selalu bisa menggunakan gunzip --suffix .zip npm-debug.log.zipataugunzip -c < npm-debug.log.zip > npm-debug.log
Iwan Aucamp
19

tar / gzip adalah format yang sangat jelek karena arsip tidak dapat diakses secara acak, diperbarui, diverifikasi atau bahkan ditambahkan ke ... tanpa harus mendekompresi seluruh arsip.

zip jauh lebih baik dalam hal itu .... Anda dapat dengan cepat mendapatkan konten file zip, menambahkannya tanpa mengkompres ulang bagian pertama, dll.

zip memiliki beberapa batasan ukuran ... tergantung pada versi "zip" yang Anda gunakan ... dan ini bisa menjadi masalah. tetapi alat info-zip standar yang datang dengan sebagian besar os'eseperti linux tidak memiliki batasan ukuran dan mempertahankan izin file dengan baik.

lihat: https://en.wikipedia.org/wiki/Info-ZIP untuk kemampuan

Erik Aronesty
sumber
Keterbatasan apa yang Anda bicarakan?
Pacerier
diedit dan memberikan tautan
Erik Aronesty
9

Pemasangan Barebones Unix tidak mengandung unzip (mis. Pemasangan server), tetapi mereka selalu mengandung tar dan gzip . Jika audiens Anda adalah server, saya akan menggunakan gzip .

Juga gzip memiliki kompresi yang lebih besar daripada zip , sehingga file tersebut akan lebih kecil.

Rwky
sumber
1
Saya tidak akan mengatakan kompres gzip lebih baik daripada ZIP. Keduanya menggunakan algoritma DEFLATE yang sama, dan semua perbandingan yang saya lakukan memberikan hasil yang serupa dalam ukuran file.
grawity
4
Nah, tar.gz akan memampatkan seluruh file sekaligus, sedangkan zip mengkompres file secara individual. Untuk banyak file kecil, pendekatan pertama biasanya akan menghasilkan file yang terlihat lebih kecil, karena redundansi dapat digunakan di seluruh file. Perbedaannya tidak besar.
sleske
3

Ya itu penting. Tar adalah pengarsip. Dan di tar.gz, kami mengompresi arsip itu.

Zip adalah pengarsip dan kompresor.

Jika Anda membandingkan kompresi, dari pengalaman saya, gzip jauh lebih baik daripada zip.

Dan perbedaan signifikan lainnya disebutkan dalam jawaban lain . Jika Anda memiliki arsip file yang sangat besar, dan ingin mengekstrak file kecil, Zip memungkinkan Anda melakukannya. Tetapi dengan tar.gz, Anda perlu mengekstrak seluruh arsip.

Rakesh Reddy
sumber
Bukan arsip file yang di-gzip tetapi file yang diarsipkan. Itu sebabnya Anda harus mengekstrak seluruh arsip.
m93a
2

Keputusan pada dasarnya datang ke ini:

  • GZIP menjaga izin file Unix , karena file diizinkan untuk dieksekusi.

  • Di sisi lain ZIP bekerja di luar kotak di Windows.

Alberto Salvia Novella
sumber
1

tardan gzipjauh lebih umum di * nix-es daripada unzip. Misalnya, saat ini di lengkungan saya-2009.08 tidak ada unzip.

nc3b
sumber
6
Tetapi ada bsdtar(bagian dari libarchive), yang menangani ZIP dengan baik.
grawity
Ups: "> Tidak tahu tentang itu. Terima kasih! :-)
nc3b