J'ai créé deux fichiers ZIP du même répertoire. L'un avec l'interface graphique, l'autre avec:
$ zip -r alpha_cmd.zip Alpha
Le répertoire Alpha fait 33,640 Mo avec 164 éléments.
Le fichier ZIP créé par l'interface graphique est plus grand de 2 100 octets que le fichier ZIP créé sur la ligne de commande.
Pourquoi le fichier ZIP est-il créé avec l'interface graphique plus grande?
Remarque : Même si les fichiers ZIP ont des tailles différentes, lorsqu'ils sont décompressés, le répertoire de chacun a exactement le même nombre d'octets. Fondamentalement, je suis très méfiant des éventuelles incohérences introduites par la gestion de mon système de fichiers avec l'interface graphique et avec les commandes shell.
ditto -ck --rsrc --sequesterRsrc --keepParent folder folder.zip
Réponses:
La fermeture éclair à partir du Finder ajoute un dossier __MACOSX, invisible sur Mac, qui contient des fourchettes de ressources OS X comme des icônes personnalisées et autres. De Wikipédia :
la source
Même en dehors de la cause principale dans ce cas (le Finder ajoutant des éléments cachés supplémentaires, comme le dit l'empedocle), différentes tailles pour les ZIP des mêmes données n'indiquent pas de problème, lorsque la différence de taille est d'une fraction d'un pour cent.
Différentes implémentations ZIP peuvent avoir un niveau de compression par défaut différent (compromis entre le temps CPU et la taille enregistrée), ou simplement avoir un code différent qui enregistre plus ou moins de correspondances, économisant plus ou moins d'octets au niveau de compression par défaut.
Par exemple, 7-Zip crée généralement des
.zip
fichiers plus petits que les autres programmes ZIP. (Et non, je ne parle pas de son propre.7z
format de fichier. Il a aussi un meilleur compresseur plain-ZIP.)zipcmp est un programme cmdline qui peut comparer des fichiers ZIP. Par défaut, il compare uniquement le répertoire ZIP, pour vérifier que tous les fichiers ont le même nom, la même taille et le même CRC . Si tel est le cas, les deux fichiers ZIP sont presque certains d'avoir le même contenu, mais simplement compressés différemment (si la taille compressée diffère.) Tant que les fichiers ZIP ne sont pas endommagés, bien sûr. Utilisez
unzip -t foo.zip
pour tester un fichier ZIP pour les erreurs de décompression, les CRC non correspondants, etc.la source
/usr/bin/zip
par une autre version seraitln /usr/bin/zip /usr/bin/zip.standard; mv new_zip /usr/bin/zip
. De cette façon, vous en avez toujours un/usr/bin/zip
, car vous remplacez atomiquement l'implémentation du système. De plus, l'ancienne version est juste renommée, pas déplacée vers/tmp
(qui pourrait éventuellement être sur un système de fichiers différent.) Pour la désactiver, je la renommerais justezip.disab
, voir si le Finder se casse, puis je la renomme. Mais les fonctions de bibliothèque de création de zip sont courantes. Le Finder ne fait certainement pas de fork / exec/usr/bin/zip
.