64 votes

Comment écraser un fichier zip existant au lieu de le mettre à jour dans Info-Zip ?

Pour obtenir un nouveau fichier zip comme le fait tar, dois-je effectuer les opérations suivantes ? rm foo.zip avant d'exécuter zip ?

$ mkdir foo; touch foo/bar
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/bar (stored 0%)
$ rm foo/bar; touch foo/baz
$ zip -r foo.zip foo
  adding: foo/ (stored 0%)
  adding: foo/baz (stored 0%)
$ unzip -l foo.zip
Archive:  foo.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2011-10-27 07:49   foo/
        0  2011-10-27 07:49   foo/bar
        0  2011-10-27 07:49   foo/baz
---------                     -------
        0                     3 files

67voto

Oliver Points 125

Utilisez l'option -FS pour "synchroniser les fichiers"

zip -FSr foo.zip foo

Cela ajoutera tous les nouveaux fichiers du dossier au fichier zip et supprimera tous les fichiers du fichier zip qui ne se trouvent pas dans le dossier.

17voto

mxxk Points 251

Une alternative à l'utilisation de l'option -FS (ou de supprimer l'ancien fichier ZIP), consiste à écraser le fichier ZIP existant en ayant zip écrire sur stdout et la rediriger vers le fichier désigné :

zip -r - foo >foo.zip

-r       : Add directory and its contents
-        : Instead of writing ZIP to a file, write to stdout
foo      : The directory to be zipped
>foo.zip : Redirect stdout to file foo.zip

Si foo.zip existe, il sera écrasé par la redirection Shell, ce qui signifie que vous obtiendrez un nouveau fichier ZIP 100% du temps, à chaque fois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X