Saya membuat dua file ZIP dari direktori yang sama. Satu dengan GUI, yang lain dengan:
$ zip -r alpha_cmd.zip Alpha
Direktori Alpha adalah 33,640 MB dengan 164 item.
File ZIP yang dibuat oleh GUI adalah 2,100 byte lebih besar dari file ZIP yang dibuat pada baris perintah.
Mengapa file ZIP dibuat dengan GUI lebih besar?
Catatan : Meskipun file ZIP memiliki ukuran yang berbeda, ketika membuka ritsleting, direktori masing-masing memiliki jumlah byte yang sama persis. Pada dasarnya, saya sangat waspada terhadap kemungkinan inkonsistensi yang diperkenalkan dengan mengelola sistem file saya dengan GUI dan dengan perintah shell.
ditto -ck --rsrc --sequesterRsrc --keepParent folder folder.zip
Jawaban:
Zip dari Finder menambahkan folder __MACOSX, tidak terlihat di Mac, yang berisi garpu sumber daya OS X seperti ikon khusus dan semacamnya. Dari Wikipedia :
sumber
Bahkan terlepas dari penyebab utama dalam kasus ini (Finder menambahkan hal-hal tersembunyi tambahan, seperti kata empedocle), ukuran berbeda untuk ZIP dari data yang sama tidak menunjukkan masalah, ketika perbedaan ukuran adalah sebagian kecil dari persen.
Implementasi ZIP yang berbeda mungkin memiliki tingkat kompresi standar yang berbeda (pertukaran antara waktu dan ukuran CPU disimpan), atau hanya memiliki kode berbeda yang menyimpan lebih banyak atau lebih sedikit kecocokan, menyimpan lebih banyak atau lebih sedikit byte pada tingkat kompresi standar.
Misalnya, 7-Zip biasanya membuat
.zip
file lebih kecil dari program ZIP lainnya. (Dan tidak, saya tidak berbicara tentang.7z
format file sendiri . Ini memiliki kompresor ZIP-polos yang lebih baik juga.)zipcmp adalah program cmdline yang dapat membandingkan file ZIP. Defaultnya adalah membandingkan hanya direktori ZIP, untuk memeriksa apakah semua file memiliki nama, ukuran, dan CRC yang sama . Jika ini masalahnya, kedua file ZIP hampir pasti memiliki konten yang sama, tetapi hanya dikompres secara berbeda (jika ukuran terkompresi berbeda.) Selama file ZIP tidak rusak, tentu saja. Gunakan
unzip -t foo.zip
untuk menguji file ZIP untuk kesalahan dekompresi, CRC yang tidak cocok, dll.sumber
/usr/bin/zip
dengan versi yang berbeda adalahln /usr/bin/zip /usr/bin/zip.standard; mv new_zip /usr/bin/zip
. Dengan begitu, Anda selalu memiliki/usr/bin/zip
, karena Anda secara atom mengganti implementasi sistem. Juga, versi lama hanya diganti namanya, tidak dipindahkan ke/tmp
(yang mungkin berada pada sistem file yang berbeda.) Untuk menonaktifkannya, saya hanya mengubah nama menjadizip.disab
, melihat apakah Finder rusak, lalu ganti nama itu kembali. Tetapi fungsi pustaka zip-penciptaan adalah umum. Finder hampir pasti tidak melakukan fork / exec/usr/bin/zip
.