Ich habe zwei ZIP- Dateien desselben Verzeichnisses erstellt. Eine mit der GUI, die andere mit:
$ zip -r alpha_cmd.zip Alpha
Das Alpha- Verzeichnis ist 33,640 MB groß und umfasst 164 Elemente.
Die von der GUI erstellte ZIP-Datei ist 2.100 Byte größer als die in der Befehlszeile erstellte ZIP-Datei.
Warum ist die mit der GUI erstellte ZIP-Datei größer?
Hinweis : Auch wenn die ZIP-Dateien beim Entpacken unterschiedlich groß sind, hat jedes Verzeichnis genau die gleiche Anzahl von Bytes. Grundsätzlich bin ich sehr vorsichtig mit möglichen Inkonsistenzen, die durch die Verwaltung meines Dateisystems mit der GUI und mit Shell-Befehlen entstehen.
ditto -ck --rsrc --sequesterRsrc --keepParent folder folder.zip
Antworten:
Durch das Zippen aus dem Finder wird ein auf Macs unsichtbarer Ordner __MACOSX hinzugefügt, der OS X-Ressourcengabeln wie benutzerdefinierte Symbole und dergleichen enthält. Aus Wikipedia :
quelle
Sogar abgesehen von der Hauptursache in diesem Fall (Finder fügt, wie Empedocle sagt, zusätzliches verstecktes Material hinzu), sind unterschiedliche Größen für ZIPs mit denselben Daten kein Problem, wenn der Größenunterschied ein Bruchteil eines Prozents beträgt.
Verschiedene ZIP-Implementierungen haben möglicherweise eine andere Standardkomprimierungsstufe (Kompromiss zwischen gespeicherter CPU-Zeit und gespeicherter Größe) oder nur einen anderen Code, der mehr oder weniger Übereinstimmungen speichert und mehr oder weniger Bytes auf der Standardkomprimierungsstufe speichert.
Beispielsweise erstellt 7-Zip normalerweise kleinere
.zip
Dateien als andere ZIP-Programme. (Und nein, ich spreche nicht über ein eigenes.7z
Dateiformat. Es hat auch einen besseren reinen ZIP-Kompressor.)zipcmp ist ein cmdline-Programm, das ZIP-Dateien vergleichen kann. Standardmäßig wird nur das ZIP-Verzeichnis verglichen, um sicherzustellen, dass alle Dateien denselben Namen, dieselbe Größe und dieselbe CRC haben . In diesem Fall haben beide ZIP-Dateien mit ziemlicher Sicherheit den gleichen Inhalt, werden jedoch unterschiedlich komprimiert (wenn die komprimierte Größe unterschiedlich ist). Solange die ZIP-Dateien nicht beschädigt sind, ist dies selbstverständlich. Verwenden Sie
unzip -t foo.zip
eine ZIP - Datei zum Dekomprimierungsfehlern zu testen, nicht passenden CRCs usw.quelle
/usr/bin/zip
eine andere Version zu ersetzen, wäreln /usr/bin/zip /usr/bin/zip.standard; mv new_zip /usr/bin/zip
. Auf diese Weise haben Sie immer eine/usr/bin/zip
, weil Sie die Systemimplementierung atomar ersetzen. Außerdem wird die alte Version nur umbenannt und nicht verschoben/tmp
(möglicherweise auf einem anderen Dateisystem). Um sie zu deaktivieren, benenne ich sie einfach in um und überprüfezip.disab
, ob Finder nicht funktioniert. Benenne sie dann wieder um. Funktionen zur Erstellung von Zip-Bibliotheken sind jedoch weit verbreitet. Finder gibt / exec mit ziemlicher Sicherheit nicht auf/usr/bin/zip
.