zip - regrouper et compresser (archiver) des fichiers
SYNTAXE
zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [--longoption ...] [-b chemin] [-n suffixes] [-t date]
[-tt date] [fichier_zip [fichier ...]] [-xi liste]
zipcloak (voir la page de manuel séparée)
zipnote (voir la page de manuel séparée)
zipsplit (voir la page de manuel séparée)
Remarque : le traitement de la ligne de commande dans zip a été modifié pour prendre en charge les options longues et gérer tous les indicateurs et arguments de manière plus cohérente. Certaines anciennes lignes de commande qui dépendent des incohérences de la ligne de commande peuvent ne plus fonctionner.
DESCRIPTION
zip est un utilitaire de compression et de regroupement de fichiers pour Unix, VMS, MSDOS, OS/2, Windows 9x/NT/XP,
Minix, Atari, Macintosh, Amiga et Acorn RISC OS. Il est analogue à une combinaison des commandes Unix tar(1) et compress(1) et est compatible avec PKZIP (PKZIP de Phil Katz pour les systèmes MSDOS).
Un programme compagnon (unzip(1)) décompresse les archives zip. Les programmes zip et unzip(1) peuvent fonctionner avec les archives produites par PKZIP (prenant en charge la plupart des fonctionnalités PKZIP jusqu’à la version 4.6), et PKZIP et PKUNZIP peuvent fonctionner avec les archives produites par zip (avec quelques exceptions, notamment les archives transmises en continu, mais les modifications récentes de la norme des fichiers zip peuvent faciliter une meilleure compatibilité). zip version 3.0 est compatible avec PKZIP 2.04 et prend également en charge les extensions Zip64 de PKZIP 4.5 qui permettent aux archives ainsi qu’aux fichiers de dépasser la limite précédente de 2 Go (4 Go dans certains cas). zip prend désormais également en charge la compression bzip2 si la bibliothèque bzip2 est incluse lors de la compilation de zip. Notez que PKUNZIP 1.10 ne peut pas extraire les fichiers produits par PKZIP 2.04 ou zip 3.0. Vous devez utiliser PKUNZIP 2.04g ou unzip 5.0p1 (ou les versions ultérieures) pour les extraire.
Voir la section EXEMPLES en bas de cette page pour des exemples de certaines utilisations typiques de zip.
Grandes archives et Zip64. zip utilise automatiquement les extensions Zip64 lorsque des fichiers de plus de 4 Go sont ajoutés à une archive, une archive contenant des entrées Zip64 est mise à jour (si l’archive résultante a encore besoin d’extensions Zip64), la taille de l’archive dépassera 4 Go, ou lorsque le nombre d’entrées dans l’archive dépassera environ 64 000. Zip64 est également utilisé pour les archives transmises en continu à partir de l’entrée standard, car la taille de ces archives n’est pas connue à l’avance, mais l’option -fz- peut être utilisée pour forcer zip à créer des archives compatibles PKZIP 2 (tant que les extensions Zip64 ne sont pas nécessaires). Vous devez utiliser un unzip compatible PKZIP 4.5, tel qu’unzip 6.0 ou version ultérieure, pour extraire les fichiers utilisant les extensions Zip64.
De plus, les archives transmises en continu, les entrées chiffrées avec un chiffrement standard ou les archives divisées créées avec l’option pause peuvent ne pas être compatibles avec PKZIP, car les descripteurs de données sont utilisés et PKZIP, au moment de la rédaction de ce document, ne prend pas en charge les descripteurs de données (mais les modifications récentes de la norme des fichiers zip publiée par PKWare incluent désormais une certaine prise en charge du format de descripteur de données utilisé par zip).
Mac OS X. Bien que les versions précédentes de Mac disposaient de leur propre port zip, zip prend en charge Mac OS X dans le cadre du port Unix et la plupart des fonctionnalités Unix s'appliquent. Les références à « MacOS » ci-dessous font généralement référence aux versions de MacOS antérieures à OS X. La prise en charge de certaines fonctionnalités de Mac OS dans le port Mac OS X Unix, telles que les branches de ressources, est prévue dans la prochaine version de zip.
Pour obtenir une brève aide sur zip et unzip, exécutez chacun sans spécifier de paramètres sur la ligne de commande.
UTILISATION
Le programme est utile pour empaqueter un ensemble de fichiers pour la distribution ; pour archiver des fichiers ; et pour économiser de l’espace disque en compressant temporairement des fichiers ou des répertoires inutilisés.
Le programme zip place un ou plusieurs fichiers compressés dans une seule archive zip, ainsi que des informations sur les fichiers (nom, chemin, date, heure de la dernière modification, protection et informations de contrôle pour vérifier l’intégrité du fichier). Une structure de répertoire entière peut être empaquetée dans une archive zip avec une seule commande. Les taux de compression de 2:1 à 3:1 sont courants pour les fichiers texte. zip dispose d’une méthode de compression (deflation) et peut également stocker des fichiers sans compression. (Si la prise en charge de bzip2 est ajoutée, zip peut également compresser en utilisant la compression bzip2, mais ces entrées nécessitent un unzip relativement moderne pour être décompressées. Lorsque la compression bzip2 est sélectionnée, elle remplace la déflation en tant que méthode par défaut.) zip choisit automatiquement la meilleure des deux (déflation ou stockage ou, si bzip2 est sélectionné, bzip2 ou stockage) pour chaque fichier à compresser.
Format de commande. Le format de commande de base est
zip options archive inpath inpath ...
où archive est une archive zip nouvelle ou existante et inpath est un chemin de répertoire ou de fichier incluant éventuellement des caractères génériques. Lorsqu’un nom d’archive zip existante est donné, zip remplacera les entrées portant le même nom dans l’archive zip (en faisant correspondre les noms relatifs tels qu’ils sont stockés dans l’archive) ou ajoutera des entrées pour les nouveaux noms. Par exemple, si foo.zip existe et contient foo/file1 et foo/file2, et que le répertoire foo contient les fichiers foo/file1 et foo/file3, alors :
zip -r foo.zip foo
ou plus concise :
zip -r foo foo
remplacera foo/file1 dans foo.zip et ajoutera foo/file3 à foo.zip. Après cela, foo.zip contiendra foo/file1, foo/file2 et foo/file3, foo/file2 n’étant pas modifié par rapport à avant.
Donc, si avant l’exécution de la commande zip, foo.zip contient :
foo/file1 foo/file2
et le répertoire foo contient :
file1 file3
alors foo.zip contiendra :
foo/file1 foo/file2 foo/file3
où foo/file1 est remplacé et foo/file3 est nouveau.
-@ file lists. Si une liste de fichiers est spécifiée sous la forme -@ [Non disponible sur MacOS], zip prend la liste des fichiers d’entrée à partir de l’entrée standard au lieu de la ligne de commande. Par exemple,
zip -@ foo
créera une archive nommée foo.zip contenant les fichiers listés, un par ligne, en provenance de l’entrée standard.
Sous Unix, cette option peut être utilisée de manière très efficace en conjonction avec la commande find (1). Par exemple, pour archiver tous les fichiers source C du répertoire courant et de ses sous-répertoires :
find . -name "*.[ch]" -print | zip source -@
(notez que le motif doit être entre guillemets pour éviter que le shell ne l’interprète).
Entrée et sortie en flux. zip accepte également un simple tiret (« - ») comme nom de fichier zip, auquel cas il écrira le fichier zip sur la sortie standard, ce qui permettra de rediriger la sortie vers un autre programme. Par exemple :
zip -r - . | dd of=/dev/nrst0 obs=16k
écrirait directement la sortie zip sur une bande avec la taille de bloc spécifiée dans le but de sauvegarder le répertoire courant.
zip accepte également un simple tiret (« - ») comme nom de fichier à compresser, auquel cas il lira le fichier à partir de l’entrée standard, ce qui permet à zip de recevoir des données en provenance d’un autre programme. Par exemple :
tar cf - . | zip backup permettrait de compresser la sortie de la commande tar dans le but de sauvegarder le répertoire courant.
Cela produit généralement une meilleure compression que l’exemple précédent utilisant l’option -r, car zip peut exploiter la redondance entre les fichiers. La sauvegarde peut être restaurée à l’aide de la commande
unzip -p backup | tar xf
Lorsque aucun nom de fichier zip n’est spécifié et que la sortie standard n’est pas un terminal, zip agit comme un filtre, compressant l’entrée standard vers la sortie standard. Par exemple :
tar cf - . | zip | dd of=/dev/nrst0 obs=16k
est équivalent à
tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k
Les archives zip créées de cette manière peuvent être extraites avec le programme funzip fourni dans le package unzip, ou par gunzip fourni dans le package gzip (mais certains gunzip ne prennent pas en charge cette fonctionnalité si zip a utilisé les extensions Zip64). Par exemple :
dd if=/dev/nrst0 ibs=16k | funzip | tar xvf
Le flux peut également être enregistré dans un fichier et unzip peut être utilisé.
Si la prise en charge de Zip64 pour les fichiers et archives volumineux est activée et que zip est utilisé comme filtre, zip crée une archive Zip64 qui nécessite un décompresseur compatible PKZIP 4.5 ou version ultérieure pour être lue. Ceci est dû au fait que la structure de fichier zip actuelle (PKWARE AppNote) présente des ambiguïtés, car la décision d’utiliser Zip64 doit être prise avant que les données ne soient écrites pour l’entrée, mais pour un flux, la taille des données n’est pas connue à ce moment-là. Si les données sont connues pour être inférieures à 4 Go, l’option -fz- peut être utilisée pour empêcher l’utilisation de Zip64, mais zip quittera avec une erreur si Zip64 était en fait nécessaire. zip 3 et unzip 6 et versions ultérieures peuvent lire les archives contenant des entrées Zip64. De plus, zip supprime les extensions Zip64 si elles ne sont pas nécessaires lors de la copie des entrées d’archive (voir l’option -U (--copy)).
Lors de la redirection de la sortie vers un autre fichier, notez que toutes les options doivent être placées avant la redirection, y compris -x. Par exemple :
zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile
Fichiers zip. Lorsqu'un fichier zip existant est modifié, zip crée un fichier temporaire avec le nouveau contenu, et ne remplace l'ancien que lorsque le processus de création de la nouvelle version est terminé sans erreur.
Si le nom du fichier zip ne contient pas d'extension, l'extension .zip est ajoutée. Si le nom contient déjà une extension autre que .zip, l'extension existante est conservée. Cependant, les archives divisées (archives réparties sur plusieurs fichiers) nécessitent l'extension .zip sur le dernier fichier.
Analyse et lecture des fichiers. Lorsque zip démarre, il analyse les fichiers à traiter (si nécessaire). Si cette analyse prend plus de 5 secondes, zip affiche un message « Analyse des fichiers » et commence à afficher des points de progression tous les 2 secondes ou après un certain nombre d'entrées traitées, selon ce qui prend le plus de temps. S'il y a plus de 2 secondes entre les points, cela peut indiquer que la recherche de chaque fichier prend du temps et pourrait signifier une connexion réseau lente, par exemple. (En fait, l'analyse initiale des fichiers est un processus en deux étapes où l'analyse du répertoire est suivie d'un tri et ces deux étapes sont séparées par un espace dans les points. Si une archive existante est mise à jour, un espace apparaît également entre l'analyse du fichier existant et l'analyse du nouveau fichier.) Les points d'analyse des fichiers ne sont pas contrôlés par l'option -ds (taille des points), mais les points sont désactivés par l'option -q (mode silencieux). L'option -sf (afficher les fichiers) peut être utilisée pour analyser les fichiers et obtenir la liste des fichiers analysés sans réellement les traiter.
Si zip n'est pas en mesure de lire un fichier, il émet un avertissement mais continue. Voir l'option -MM ci-dessous pour plus d'informations sur la façon dont zip gère les motifs qui ne correspondent pas et les fichiers qui ne sont pas lisibles. Si certains fichiers ont été ignorés, un avertissement est émis à la fin de l'opération zip, indiquant combien de fichiers ont été lus et combien ont été ignorés.
Modes de commande. Zip prend désormais en charge deux types distincts de modes de commande, externes et internes. Les modes externes (add, update et freshen) lisent les fichiers à partir du système de fichiers (ainsi que d'une archive existante), tandis que les modes internes (delete et copy) fonctionnent exclusivement sur les entrées d'une archive existante.
add
Met à jour les entrées existantes et ajoute de nouveaux fichiers. Si l'archive n'existe pas, elle est créée. C'est le mode par défaut.
update (-u)
Met à jour les entrées existantes si elles sont plus récentes dans le système de fichiers et ajoute de nouveaux fichiers. Si l'archive n'existe pas, émet un avertissement, puis crée une nouvelle archive.
freshen (-f)
Met à jour les entrées existantes d'une archive si elles sont plus récentes dans le système de fichiers. N'ajoute pas de nouveaux fichiers à l'archive.
delete (-d)
Sélectionne les entrées dans une archive existante et les supprime.
copy (-U)
Sélectionne les entrées dans une archive existante et les copie dans une nouvelle archive. Ce nouveau mode est similaire à update, mais les motifs de la ligne de commande sélectionnent les entrées dans l'archive existante plutôt que les fichiers du système de fichiers, et il utilise l'option --out pour écrire l'archive résultante dans un nouveau fichier plutôt que de mettre à jour l'archive existante, laissant l'archive d'origine inchangée.
La nouvelle option de synchronisation des fichiers (-FS) est également considérée comme un nouveau mode, bien qu'elle soit similaire à la mise à jour. Ce mode synchronise l'archive avec les fichiers du système d'exploitation, en remplaçant uniquement les fichiers de l'archive si l'heure ou la taille du fichier du système d'exploitation est différente, en ajoutant de nouveaux fichiers et en supprimant les entrées de l'archive lorsque le fichier correspondant n'existe pas. Étant donné que ce mode peut supprimer des entrées de l'archive, envisagez de créer une copie de sauvegarde de l'archive.
Consultez également -DF pour créer des archives de différences.
Consultez la description de chaque option ci-dessous pour plus de détails et la section EXEMPLES ci-dessous pour des exemples.
Archives divisées. La version 3.0 de zip et les versions ultérieures peuvent créer des archives divisées. Une archive divisée est une archive zip standard divisée en plusieurs fichiers. (Notez que les archives divisées ne sont pas simplement des archives divisées en parties, car les décalages des entrées sont désormais basés sur le début de chaque division. La concaténation des parties invalidera ces décalages, mais unzip peut généralement les gérer. Zip refusera généralement de traiter une archive ainsi fusionnée, sauf si l'option de correction -FF est utilisée pour corriger les décalages.)
L'une des utilisations des archives divisées est de stocker une grande archive sur plusieurs supports amovibles. Pour une archive divisée contenant 20 fichiers, les fichiers sont généralement nommés (remplacez ARCHIVE par le nom de votre archive) ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Notez que le dernier fichier est le fichier .zip. En revanche, les archives segmentées sont les archives multi-disques originales, qui utilisent généralement des disquettes et des étiquettes de volume pour stocker les numéros de disque. Zip prend en charge les archives divisées, mais pas les archives segmentées, bien qu'une procédure existe pour convertir les archives divisées de la bonne taille en archives segmentées. L'inverse est également vrai, où chaque fichier d'une archive segmentée peut être copié dans l'ordre pour créer des fichiers avec les noms ci-dessus afin de créer une archive divisée.
Utilisez -s pour définir la taille de la division et créer une archive divisée. La taille est donnée sous forme de nombre, suivie éventuellement de l'une des options k (ko), m (Mo), g (Go) ou t (To) (la valeur par défaut est m). L'option -sp peut être utilisée pour mettre zip en pause entre les divisions afin de permettre de changer de support amovible, par exemple, mais lisez les descriptions et les avertissements pour -s et -sp ci-dessous.
Bien que zip ne mette pas à jour les archives divisées, zip fournit la nouvelle option -O (--output-file ou --out) pour permettre aux archives divisées d'être mises à jour et enregistrées dans une nouvelle archive. Par exemple,
zip inarchive.zip foo.c bar.c --out outarchive.zip
lit l'archive inarchive.zip, même si elle est divisée, ajoute les fichiers foo.c et bar.c, et écrit l'archive résultante dans outarchive.zip. Si inarchive.zip est divisé, alors outarchive.zip utilise par défaut la même taille de division. Sachez que si outarchive.zip et tous les fichiers de division qui sont créés avec celui-ci existent déjà, ceux-ci sont toujours écrasés si nécessaire sans avertissement. Cela pourrait changer à l'avenir.
Unicode. Bien que la norme zip exige que les chemins d'accès soient stockés dans une archive en utilisant un jeu de caractères spécifique, dans la pratique, les archives zip stockent les chemins d'accès dans les archives en utilisant le jeu de caractères local. Cela crée des problèmes lorsqu'une archive est créée ou mise à jour sur un système utilisant un jeu de caractères et qu'elle est ensuite extraite sur un autre système utilisant un jeu de caractères différent. Lorsqu'il est compilé avec la prise en charge d'Unicode activée sur les plateformes qui prennent en charge les caractères larges, zip stocke désormais, en plus du chemin d'accès local standard pour la compatibilité avec les versions précédentes, la traduction UTF-8 du chemin d'accès. Cela fournit un jeu de caractères universel commun pour stocker les chemins d'accès, ce qui permet à ces chemins d'être entièrement extraits sur d'autres systèmes qui prennent en charge Unicode et d'être aussi proches que possible sur les systèmes qui ne le font pas.
Sur les systèmes Win32 où les chemins sont stockés en interne en Unicode mais représentés dans le jeu de caractères local, il est possible que certains chemins soient ignorés lors d'une analyse de répertoire en jeu de caractères local. L'archive zip avec prise en charge d'Unicode peut désormais lire et stocker ces chemins. Notez que les systèmes Win 9x et les systèmes de fichiers FAT ne prennent pas entièrement en charge Unicode.
Soyez conscient que les fenêtres de console sur Win32 et Unix, par exemple, n'affichent parfois pas correctement tous les caractères en raison de la façon dont chaque système d'exploitation bascule entre les jeux de caractères pour l'affichage. Cependant, les outils de navigation de répertoire doivent afficher les chemins corrects si les polices nécessaires sont chargées.
Format de ligne de commande. Cette version de zip a mis à jour le traitement de la ligne de commande et prend en charge les options longues.
Les options courtes ont la forme suivante :
-s[-][s[-]...][value][=value][ value]
où s est une option courte d'un ou deux caractères. Une option courte qui prend une valeur est la dernière d'un argument, et tout ce qui la suit est pris comme la valeur. Si l'option peut être niée et que « - » suit immédiatement l'option, l'option est niée. Les options courtes peuvent également être données sous forme d'arguments distincts :
-s[-][value][=value][ value] -s[-][value][=value][ value] ...
En général, les options courtes prennent des valeurs soit dans le même argument, soit dans l'argument suivant. Un signe « = » est également pris en charge. Ainsi :
-ttmmddyyyy
et
-tt=mmddyyyy
et
-tt mmddyyyy
fonctionnent tous. Les options -x et -i acceptent des listes de valeurs et utilisent un format légèrement différent, comme décrit ci-dessous. Voir les options -x et -i.
Les options longues ont la forme suivante :
--longoption[-][=value][ value]
où l'option commence par « -- », a un nom de plusieurs caractères, peut inclure un tiret final pour nier l'option (si l'option le prend en charge) et peut avoir une valeur (argument de l'option) en la faisant précéder de « = » (sans espaces). Les valeurs peuvent également suivre l'argument. Ainsi :
--before-date=mmddyyyy
et
--before-date mmddyyyy
fonctionnent tous deux.
Les noms des options longues peuvent être abrégés à la plus courte abréviation unique. Consultez les descriptions des options ci-dessous pour savoir quelles options prennent en charge les options longues. Pour éviter toute confusion, évitez d'abréger une option négable avec un tiret intégré (« - ») au niveau du tiret si vous avez l'intention de la nier (l'analyseur considérera un tiret final, comme pour l'option --some-option en utilisant --some- comme l'option, comme faisant partie du nom plutôt que comme un tiret de négation). Cela pourrait être modifié à l'avenir pour forcer le dernier tiret de --someto à être un tiret de négation.
OPTIONS
-a
--ascii
[Systèmes utilisant EBCDIC] Convertit le fichier au format ASCII.
-A
--adjust-sfx
Ajuste l’archive exécutable auto-extractible. Une archive exécutable auto-extractible est créée en ajoutant le stub SFX à une archive existante. L’option -A indique à zip d’ajuster les décalages d’entrée stockés dans l’archive afin de tenir compte de ces données de « préambule ».
Remarque : les archives exécutables auto-extractibles pour Amiga constituent un cas particulier. Actuellement, seule la version Amiga de zip est capable de les ajuster ou de les mettre à jour sans les corrompre. -J peut être utilisé pour supprimer le stub SFX si d’autres mises à jour doivent être effectuées.
-AC
--archive-clear
[WIN32] Une fois l’archive créée (et testée si -T est utilisé, ce qui est recommandé), efface les bits d’archive des fichiers traités. ATTENTION : une fois les bits effacés, ils sont effacés de manière définitive. Vous pouvez utiliser l’option -sf show files pour stocker la liste des fichiers traités au cas où l’opération d’archivage doit être répétée. Envisagez également d’utiliser l’option -MM must match. Vérifiez également -DF comme une meilleure façon de faire des sauvegardes incrémentales.
-AS
--archive-set
[WIN32] N’inclut que les fichiers dont le bit d’archive est défini. Les répertoires ne sont pas stockés lorsque -AS est utilisé, mais par défaut, les chemins d’accès des entrées, y compris les répertoires, sont stockés comme d’habitude et peuvent être utilisés par la plupart des programmes de décompression pour recréer les répertoires.
Le bit d’archive est défini par le système d’exploitation lorsqu’un fichier est modifié et, s’il est utilisé avec -AC, -AS peut fournir une fonctionnalité de sauvegarde incrémentale. Cependant, d’autres applications peuvent modifier le bit d’archive et il n’est peut-être pas un indicateur fiable des fichiers qui ont été modifiés depuis la dernière opération d’archivage. D’autres façons de créer des sauvegardes incrémentales consistent à utiliser -t pour utiliser les dates des fichiers, bien que cela ne permette pas de détecter les anciens fichiers copiés dans les répertoires en cours d’archivage, et -DF pour créer une archive différentielle.
-B
--binary
[VM/CMS et MVS] force le fichier à être lu en binaire (par défaut, il est lu en texte).
-Bn [TANDEM] définit les options de formatage Edit/Enscribe, où n est défini comme :
bit 0 : n’ajoute pas de délimiteur (Edit/Enscribe)
bit 1 : utilise LF plutôt que CR/LF comme délimiteur (Edit/Enscribe)
bit 2 : remplit l’enregistrement avec des espaces jusqu’à la longueur d’enregistrement maximale (Enscribe)
bit 3 : supprime les espaces de fin (Enscribe)
bit 8 : force une lecture étendue de 30 Ko pour les fichiers non structurés
-b chemin
--temp-path chemin
Utilise le chemin spécifié pour l’archive zip temporaire. Par exemple :
zip -b /tmp stuff *
placer l’archive zip temporaire dans le répertoire /tmp, en copiant stuff.zip dans le répertoire courant une fois l’opération terminée. Cette option est utile lorsque vous mettez à jour une archive existante et que le système de fichiers contenant cette ancienne archive ne dispose pas de suffisamment d’espace pour contenir à la fois les anciennes et les nouvelles archives en même temps. Elle peut également être utile dans certains cas de streaming afin d’éviter la nécessité de descripteurs de données. Notez que l’utilisation de cette option peut nécessiter que zip prenne plus de temps pour copier le fichier d’archive vers le système de fichiers de destination une fois l’opération terminée.
-c
--entry-comments
Ajoute des commentaires d'une seule ligne pour chaque fichier. Les opérations sur les fichiers (ajout, mise à jour) sont effectuées en premier, puis l'utilisateur est invité à fournir un commentaire d'une seule ligne pour chaque fichier. Entrez le commentaire suivi de la touche Retour, ou appuyez simplement sur Retour pour ne pas ajouter de commentaire.
-C
--preserve-case
[VMS] Préserve la casse sur VMS. La négation de cette option (-C-) force la casse en minuscules.
-C2
--preserve-case-2
[VMS] Préserve la casse ODS2 sur VMS. La négation de cette option (-C2-) force la casse en minuscules.
-C5
--preserve-case-5
[VMS] Préserve la casse ODS5 sur VMS. La négation de cette option (-C5-) force la casse en minuscules.
-d
--delete
Supprime (efface) des entrées d'une archive zip. Par exemple :
zip -d foo foo/tom/junk foo/harry/\* \*.o
supprimera l'entrée foo/tom/junk, tous les fichiers commençant par foo/harry/ et tous les fichiers se terminant par .o (dans n'importe quel chemin). Notez que l'expansion du chemin d'accès du shell est inhibée à l'aide de barres obliques inverses, afin que zip puisse voir les astérisques, ce qui permet à zip de correspondre au contenu de l'archive zip au lieu du contenu du répertoire actuel. (Les barres obliques inverses ne sont pas utilisées sur les plateformes basées sur MSDOS.) Vous pouvez également utiliser des guillemets pour échapper les astérisques, comme dans :
zip -d foo foo/tom/junk "foo/harry/*" "*.o"
Le fait de ne pas échapper les astérisques sur un système où le shell développe les caractères génériques peut entraîner la conversion des astérisques en une liste de fichiers du répertoire actuel, et cette liste sera utilisée pour supprimer des entrées de l'archive.
Sous MSDOS, -d est sensible à la casse lors de la correspondance des noms dans l'archive zip. Cela nécessite que les noms de fichiers soient entrés en majuscules s'ils ont été compressés par PKZIP sur un système MSDOS. (Nous avons envisagé de rendre cette option insensible à la casse sur les systèmes où les chemins d'accès sont insensibles à la casse, mais il est possible que l'archive provienne d'un système où la casse est importante et que l'archive puisse inclure Bar et bar en tant que fichiers distincts dans l'archive.) Mais voir la nouvelle option -ic pour ignorer la casse dans l'archive.
-db
--display-bytes
Affiche des compteurs d'octets en cours, indiquant le nombre d'octets compressés et le nombre d'octets restants à compresser.
-dc
--display-counts
Affiche un compteur en cours du nombre d'entrées compressées et du nombre d'entrées restantes à compresser.
-dd
--display-dots
Affiche des points pendant la compression de chaque entrée (sauf sur les ports qui ont leur propre indicateur de progression). Voir -ds ci-dessous pour définir la taille des points. Par défaut, un point est affiché tous les 10 Mo de fichier d'entrée traités. L'option -v affiche également des points (précédemment à un rythme beaucoup plus élevé que celui-ci, mais maintenant -v utilise également 10 Mo par défaut), et ce rythme est également contrôlé par -ds.
-df
--datafork
[MacOS] Inclut uniquement la fourchette de données des fichiers compressés dans l'archive. Utile pour exporter des fichiers vers des systèmes d'exploitation étrangers. Les fourchettes de ressources seront complètement ignorées.
-dg
--display-globaldots
Affiche des points de progression pour l'archive au lieu de chaque fichier. La commande
zip -qdgds 10m
désactive la plupart des sorties, à l’exception de points affichés tous les 10 Mo.
-ds taille
--dot-size taille
Définit la quantité de données du fichier d’entrée traitées pour chaque point affiché. Voir -dd pour activer l’affichage des points. Définir cette option implique -dd. La taille est au format nm, où n est un nombre et m est un multiplicateur. Actuellement, m peut être k (Ko), m (Mo), g (Go) ou t (To), donc si n est 100 et m est k, la taille serait de 100 Ko. La valeur par défaut est de 10 Mo.
L’option -v affiche également des points et a maintenant une valeur par défaut de 10 Mo. Ce taux est également contrôlé par cette option. Une taille de 0 désactive les points.
Cette option ne contrôle pas les points du message « Analyse des fichiers » lorsque zip analyse les fichiers d’entrée. La taille des points pour cela est fixée à 2 secondes ou à un nombre fixe d’entrées, selon la valeur la plus longue.
-du
--display-usize
Affiche la taille non compressée de chaque entrée.
-dv
--display-volume
Affiche le numéro de volume (disque) à partir duquel chaque entrée est lue, si la lecture se fait à partir d’une archive existante, et dans lequel elle est écrite.
-D
--no-dir-entries
Ne crée pas d’entrées dans l’archive zip pour les répertoires. Par défaut, les entrées de répertoire sont créées afin que leurs attributs puissent être enregistrés dans l’archive zip. La variable d’environnement ZIPOPT peut être utilisée pour modifier les options par défaut. Par exemple, sous Unix avec sh :
ZIPOPT="-D" ; export ZIPOPT
(La variable ZIPOPT peut être utilisée pour n’importe quelle option, y compris -i et -x en utilisant un nouveau format d’option détaillé ci-dessous, et peut inclure plusieurs options.) L’option -D est un raccourci pour -x "*/" mais cette dernière ne pouvait pas être définie par défaut dans la variable d’environnement ZIPOPT car le contenu de ZIPOPT est inséré près du début de la ligne de commande et que la liste des fichiers doit se terminer à la fin de la ligne.
Cette version de zip autorise les options -x et -i dans ZIPOPT si la forme suivante est utilisée :
-x fichier fichier ... @
où le @ (un argument qui est simplement @) termine la liste.
-DF
--difference-archive
Crée une archive qui contient tous les nouveaux fichiers et fichiers modifiés depuis la création de l’archive d’origine. Pour que cela fonctionne, la liste des fichiers d’entrée et le répertoire actuel doivent être les mêmes que lors de l’opération zip d’origine.
Par exemple, si l’archive existante a été créée à l’aide de
zip -r foofull .
depuis le répertoire bar, alors la commande
zip -r foofull . -DF --out foonew
également depuis le répertoire bar, crée l’archive foonew avec uniquement les fichiers qui ne sont pas dans foofull et les fichiers dont la taille ou l’heure de fichier ne correspondent pas à ceux de foofull.
Notez que la variable d’environnement de fuseau horaire TZ doit être définie en fonction du fuseau horaire local afin que cette option fonctionne correctement. Un changement de fuseau horaire depuis la création de l’archive d’origine pourrait entraîner l’inclusion de tous les fichiers.
Une approche possible pour sauvegarder un répertoire pourrait consister à créer une archive normale du contenu du répertoire comme sauvegarde complète, puis à utiliser cette option pour créer des sauvegardes incrémentales.
-e
--encrypt
Chiffre le contenu de l’archive zip à l’aide d’un mot de passe qui est entré dans le terminal en réponse à une invite (ce mot de passe ne sera pas affiché ; si la sortie standard n’est pas un terminal, zip se terminera avec une erreur). L’invite de mot de passe est répétée pour éviter que l’utilisateur ne fasse des erreurs de frappe.
-E
--longnames
[OS/2] Utilisez l’attribut étendu .LONGNAME (si trouvé) comme nom de fichier.
-f
--freshen
Remplace (actualise) une entrée existante dans l’archive zip uniquement si elle a été modifiée plus récemment que la version déjà présente dans l’archive zip ; contrairement à l’option de mise à jour (-u), cette option n’ajoutera pas les fichiers qui ne sont pas déjà présents dans l’archive zip. Par exemple :
zip -f foo
Cette commande doit être exécutée à partir du même répertoire à partir duquel la commande zip d’origine a été exécutée, car les chemins stockés dans les archives zip sont toujours relatifs.
Veuillez noter que la variable d’environnement TZ doit être définie en fonction du fuseau horaire local afin que les options -f, -u et -o fonctionnent correctement.
Les raisons qui sous-tendent cela sont quelque peu subtiles, mais elles sont liées aux différences entre les heures de fichier au format Unix (toujours en GMT) et la plupart des autres systèmes d’exploitation (toujours en heure locale) et à la nécessité de comparer les deux. Une valeur TZ typique est « MET-1MEST » (heure d’Europe centrale avec ajustement automatique pour l’« heure d’été » ou l’heure d’été).
Le format est TTThhDDD, où TTT est le fuseau horaire tel que MET, hh est la différence entre GMT et l’heure locale, comme -1 ci-dessus, et DDD est le fuseau horaire lorsque l’heure d’été est en vigueur. Omettez DDD s’il n’y a pas d’heure d’été. Pour le fuseau horaire de l’est des États-Unis, EST5EDT.
-F
--fix
-FF
--fixfix
Réparer l’archive zip. L’option -F peut être utilisée si certaines parties de l’archive sont manquantes, mais elle nécessite un répertoire central relativement intact. L’archive d’entrée est analysée comme d’habitude, mais zip ignore certains problèmes. L’archive résultante doit être valide, mais toute entrée incohérente sera supprimée.
Lorsqu’elle est doublée, comme dans -FF, l’archive est analysée à partir du début et zip recherche des signatures spéciales pour identifier les limites entre les membres de l’archive. L’option -F est plus fiable si l’archive n’est pas trop endommagée, essayez donc d’abord cette option.
Si l’archive est trop endommagée ou si la fin a été tronquée, vous devez utiliser -FF. Il s’agit d’une modification par rapport à zip 2.32, où l’option -F était capable de lire une archive tronquée. L’option -F répare désormais plus fiablement les archives présentant des dommages mineurs, et l’option -FF est nécessaire pour réparer les archives pour lesquelles -F aurait pu suffire auparavant.
Aucune de ces options ne permettra de récupérer les archives qui ont été transférées incorrectement en mode ASCII au lieu du mode binaire. Après la réparation, l’option -t de unzip peut indiquer que certains fichiers ont une somme de contrôle CRC incorrecte. Ces fichiers ne peuvent pas être récupérés ; vous pouvez les supprimer de l’archive en utilisant l’option -d de zip.
Veuillez noter que -FF peut avoir des difficultés à réparer les archives qui incluent une archive zip intégrée qui a été stockée (sans compression) dans l’archive et, selon les dommages, elle peut trouver les entrées dans l’archive intégrée plutôt que dans l’archive elle-même. Essayez d’abord -F, car cela ne pose pas de problème.
Le format des commandes de correction a été modifié. Par exemple, pour corriger l’archive endommagée foo.zip,
zip -F foo --out foofix
essaie de lire les entrées normalement, en copiant les entrées valides vers la nouvelle archive foofix.zip.
Si cela ne fonctionne pas, comme lorsque l’archive est tronquée, ou si certaines entrées dont vous savez qu’elles se trouvent dans l’archive sont manquantes, essayez alors :
zip -FF foo --out foofixfix
et comparez l’archive résultante à l’archive créée avec -F. L’option -FF peut créer une archive incohérente. En fonction de ce qui est endommagé, vous pouvez ensuite utiliser l’option -F pour corriger cette archive.
Une archive divisée avec des fichiers divisés manquants peut être corrigée à l’aide de -F si vous disposez du dernier fichier divisé de l’archive (le fichier .zip). Si ce fichier est manquant, vous devez utiliser -FF pour corriger l’archive, ce qui vous demandera les fichiers divisés que vous avez.
Actuellement, les options de correction ne peuvent pas récupérer les entrées qui ont un checksum incorrect ou qui sont autrement endommagées.
-FI
--fifo [Unix] Normalement, zip ignore toute lecture des FIFO (tuyaux nommés) rencontrés, car zip peut se bloquer si le FIFO n’est pas alimenté. Cette option indique à zip de lire le contenu de tout FIFO qu’il trouve.
-FS
--filesync
Synchroniser le contenu d’une archive avec les fichiers du système d’exploitation. Normalement, lorsqu’une archive est mise à jour, les nouveaux fichiers sont ajoutés et les fichiers modifiés sont mis à jour, mais les fichiers qui n’existent plus sur le système d’exploitation ne sont pas supprimés de l’archive. Cette option active un nouveau mode qui vérifie les entrées de l’archive par rapport au système de fichiers. Si l’heure et la taille du fichier de l’entrée correspondent à celles du fichier du système d’exploitation, l’entrée est copiée à partir de l’ancienne archive au lieu d’être lue à partir du système de fichiers et compressée. Si le fichier du système d’exploitation a changé, l’entrée est lue et compressée comme d’habitude. Si l’entrée de l’archive ne correspond pas à un fichier sur le système d’exploitation, l’entrée est supprimée. L’activation de cette option devrait créer des archives identiques aux nouvelles archives, mais comme les entrées existantes sont copiées au lieu d’être compressées, la mise à jour d’une archive existante avec -FS peut être beaucoup plus rapide que la création d’une nouvelle archive. Envisagez également d’utiliser -u pour mettre à jour une archive.
Pour que cette option fonctionne, l’archive doit être mise à jour à partir du même répertoire dans lequel elle a été créée, afin que les chemins relatifs correspondent. Si peu de fichiers sont copiés à partir de l’ancienne archive, il peut être plus rapide de créer une nouvelle archive.
Notez que la variable d’environnement TZ doit être définie en fonction du fuseau horaire local afin que cette option fonctionne correctement. Un changement de fuseau horaire depuis la création de l’archive d’origine pourrait entraîner l’absence de correspondance des heures et la recompression de tous les fichiers.
Cette option supprime des fichiers de l’archive. Si vous devez conserver l’archive d’origine, effectuez d’abord une copie de l’archive ou utilisez l’option --out pour enregistrer l’archive mise à jour dans un nouveau fichier. Même s’il peut être plus lent, la création d’une nouvelle archive avec un nouveau nom d’archive est plus sûre, évite les incohérences entre les chemins d’accès à l’archive et au système d’exploitation et est préférée.
-g
--grow
Ajoute (en annexe) les fichiers spécifiés à l’archive zip, au lieu de créer une nouvelle archive. Si cette opération échoue, zip tente de restaurer l’archive à son état d’origine. Si la restauration échoue, l’archive risque de devenir corrompue. Cette option est ignorée s’il n’y a pas d’archive existante ou si au moins un élément de l’archive doit être mis à jour ou supprimé.
-h
-?
--help
Affiche l’aide de zip (cela s’affiche également si zip est exécuté sans arguments).
-h2
--more-help
Affiche une aide détaillée, comprenant des informations supplémentaires sur le format de la ligne de commande, la correspondance de motifs et les options moins courantes.
-i files
--include files
Inclut uniquement les fichiers spécifiés, comme dans :
zip -r foo . -i \*.c
ce qui inclura uniquement les fichiers se terminant par .c dans le répertoire courant et ses sous-répertoires. (Remarque pour les utilisateurs de PKZIP : la commande équivalente est
pkzip -rP foo *.c
PKZIP n’autorise pas la récursion dans les répertoires autres que le répertoire courant.) La barre oblique inverse (\) évite la substitution du nom de fichier par le shell, de sorte que la correspondance de noms est effectuée par zip à tous les niveaux de répertoire. [Ceci est pour Unix et autres systèmes où \ est un caractère d’échappement. Pour les autres systèmes où le shell ne traite pas *, n’utilisez pas \ et le code ci-dessus devient
zip -r foo . -i *.c
Les exemples sont pour Unix, sauf indication contraire.] Pour inclure dir, un répertoire directement sous le répertoire courant, utilisez
zip -r foo . -i dir/\*
ou
zip -r foo . -i "dir/*"
pour faire correspondre les chemins tels que dir/a et dir/b/file.c [sur les ports sans expansion des caractères génériques dans le shell tels que MSDOS et Windows
zip -r foo . -i dir/*
est utilisé.] Notez que la barre oblique finale est actuellement requise pour les répertoires (comme dans
zip -r foo . -i dir/
pour inclure le répertoire dir).
La forme longue de la première exemple est
zip -r foo . --include \*.c
et elle fait la même chose que la forme courte.
Bien que la syntaxe de commande utilisée exigeait auparavant que -i se trouve à la fin de la ligne de commande, cette version permet en réalité à -i (ou --include) de se trouver n’importe où. La liste des fichiers se termine au niveau du prochain argument commençant par -, à la fin de la ligne de commande ou au terminateur de liste @ (un argument qui est simplement @). Ainsi, ce qui précède peut être donné sous la forme
zip -i \*.c @ -r foo .
par exemple. Il doit y avoir un espace entre l’option et le premier fichier d’une liste. Pour un seul fichier, vous pouvez utiliser la forme de valeur unique
zip -i\*.c -r foo .
(pas d’espace entre l’option et la valeur) ou
zip --include=\*.c -r foo .
comme exemples supplémentaires. Les formes de valeur unique ne sont pas recommandées, car elles peuvent être déroutantes et, en particulier, le format -ifile peut poser des problèmes si la première lettre du fichier se combine avec i pour former une option à deux lettres commençant par i. Utilisez -sc pour voir comment votre ligne de commande sera analysée.
De plus, il est possible :
zip -r foo . -_
ce qui inclura uniquement les fichiers du répertoire courant et de ses sous-répertoires qui correspondent aux motifs du fichier include.lst.
Les fichiers correspondant aux motifs -i et -x correspondent aux chemins internes de l’archive. Voir -R pour plus d’informations sur les motifs.
-I
--no-image
[Acorn RISC OS] Ne pas parcourir les fichiers Image. Lorsque cette option est utilisée, zip ne considérera pas les fichiers Image (par exemple, les partitions DOS ou les archives Spark lorsque SparkFS est chargé) comme des répertoires, mais les stockera comme des fichiers uniques.
Par exemple, si vous avez SparkFS chargé, la compression d’une archive Spark entraînera la création d’un fichier zip contenant un répertoire (et son contenu), tandis que l’utilisation de l’option « I » entraînera la création d’un fichier zip contenant une archive Spark. De toute évidence, le deuxième cas sera également obtenu (sans l’option « I ») si SparkFS n’est pas chargé.
-ic
--ignore-case
[VMS, WIN32] Ignorer la casse lors de la correspondance des entrées d’archive. Cette option n’est disponible que sur les systèmes où la casse des fichiers est ignorée. Sur les systèmes dotés de systèmes de fichiers insensibles à la casse, la casse est normalement ignorée lors de la correspondance des fichiers sur le système de fichiers, mais n’est pas ignorée pour les options -f (freshen), -d (delete), -U (copy) et similaires lors de la correspondance avec les entrées d’archive (actuellement, -f ignore la casse sur VMS), car les entrées d’archive peuvent provenir de systèmes où la casse est importante et des noms qui sont les mêmes, sauf pour la casse, peuvent exister dans une archive. L’option -ic rend toute la correspondance insensible à la casse. Cela peut entraîner la correspondance de plusieurs entrées d’archive avec un motif de ligne de commande.
-j
--junk-paths
Stocker uniquement le nom du fichier enregistré (supprimer le chemin) et ne pas stocker les noms de répertoire. Par défaut, zip stocke le chemin complet (par rapport au répertoire actuel).
-jj
--absolute-path
[MacOS] Enregistrer le chemin complet (+ Volname). Le chemin complet, y compris le volume, sera stocké. Par défaut, le chemin relatif est stocké.
-J
--junk-sfx
Supprimer les données préfixées (par exemple, un stub SFX) de l’archive.
-k
--DOS-names
Tenter de convertir les noms et les chemins pour qu’ils soient conformes à MSDOS, stocker uniquement l’attribut MSDOS (uniquement l’attribut d’écriture utilisateur d’Unix) et marquer l’entrée comme étant créée sous MSDOS (même si ce n’était pas le cas) ; pour la compatibilité avec PKUNZIP sous MSDOS qui ne peut pas gérer certains noms, tels que ceux contenant deux points.
-l
--to-crlf
Traduire le caractère de fin de ligne Unix LF en la convention MSDOS CR LF. Cette option ne doit pas être utilisée sur les fichiers binaires. Cette option peut être utilisée sur Unix si le fichier zip est destiné à PKUNZIP sous MSDOS. Si les fichiers d’entrée contiennent déjà CR LF, cette option ajoute un CR supplémentaire. Ceci permet de garantir que unzip -a sur Unix renverra une copie exacte du fichier d’origine, afin d’annuler l’effet de zip -l. Voir -ll pour savoir comment les fichiers binaires sont traités.
-la
--log-append
Ajouter au fichier journal existant. Par défaut, le fichier est écrasé.
-lf logfilepath
--logfile-path logfilepath
Ouvrir un fichier journal au chemin donné. Par défaut, tout fichier existant à cet emplacement est écrasé, mais l’option -la entraîne l’ouverture d’un fichier existant et l’ajout des nouvelles informations de journal aux informations existantes. Seules les mises en garde et les erreurs sont écrites dans le journal, à moins que l’option -li ne soit également donnée, auquel cas tous les messages d’information sont également écrits dans le journal.
-li
--log-info
Inclure les messages d’information, tels que les noms des fichiers en cours de compression, dans le journal. Par défaut, seuls la ligne de commande, les avertissements et les erreurs, ainsi que l’état final, sont inclus.
-ll
--from-crlf
Convertir les fins de ligne MSDOS CR LF en LF Unix. Cette option ne doit pas être utilisée sur les fichiers binaires. Cette option peut être utilisée sur MSDOS si le fichier zip est destiné à être décompressé sous Unix. Si le fichier est converti et qu’il est ensuite déterminé qu’il s’agit d’un fichier binaire, un avertissement est émis et le fichier est probablement corrompu. Dans cette version, si -ll détecte un fichier binaire lors de la première lecture du fichier, zip émet maintenant un avertissement et saute la conversion des fins de ligne pour ce fichier. Cette vérification semble détecter tous les fichiers binaires testés, mais la vérification d’origine est toujours présente et si un fichier converti est ultérieurement déterminé comme binaire, cet avertissement est toujours émis. Un nouvel algorithme est maintenant utilisé pour la détection de fichiers binaires, ce qui devrait permettre la conversion des fins de ligne des fichiers texte en UTF-8 et dans des encodages similaires.
-L
--license
Afficher la licence zip.
-m
--move
Déplacer les fichiers spécifiés dans l’archive zip ; en réalité, cela supprime les répertoires/fichiers cibles après la création de l’archive zip spécifiée. Si un répertoire devient vide après la suppression des fichiers, le répertoire est également supprimé. Aucune suppression n’est effectuée tant que zip n’a pas créé l’archive sans erreur. Ceci est utile pour économiser de l’espace disque, mais c’est potentiellement dangereux, il est donc recommandé de l’utiliser en combinaison avec -T pour tester l’archive avant de supprimer tous les fichiers d’entrée.
-MM
--must-match
Tous les modèles d’entrée doivent correspondre à au moins un fichier et tous les fichiers d’entrée trouvés doivent être lisibles. Normalement, lorsqu’un modèle d’entrée ne correspond pas à un fichier, l’avertissement « nom non trouvé » est émis et lorsqu’un fichier d’entrée a été trouvé mais est ensuite manquant ou illisible, un avertissement « fichier manquant ou illisible » est émis. Dans les deux cas, zip continue de créer l’archive, les nouveaux fichiers manquants ou illisibles étant ignorés et les fichiers déjà présents dans l’archive restant inchangés. Après la création de l’archive, si des fichiers n’ont pas pu être lus, zip renvoie le code d’erreur OPEN (18 sur la plupart des systèmes) au lieu du code de retour de succès normal (0 sur la plupart des systèmes). Avec -MM activé, zip se termine dès qu’un modèle d’entrée ne correspond pas à un fichier (chaque fois que l’avertissement « nom non trouvé » serait émis) ou lorsqu’un fichier d’entrée n’est pas lisible. Dans les deux cas, zip se termine avec une erreur OPEN et aucune archive n’est créée.
Cette option est utile lorsqu’une liste connue de fichiers doit être compressée, de sorte que tout fichier manquant ou illisible entraînera une erreur. C’est moins utile lorsqu’elle est utilisée avec des caractères génériques, mais zip se terminera toujours avec une erreur si un modèle d’entrée ne correspond pas à au moins un fichier et si l’un des fichiers correspondants n’est pas lisible. Si vous souhaitez créer l’archive de toute façon et que vous avez simplement besoin de savoir si des fichiers ont été ignorés, n’utilisez pas -MM et vérifiez simplement le code de retour. De plus, -lf pourrait être utile.
-n suffixes
--suffixes suffixes
Ne tentez pas de compresser les fichiers dont les noms se terminent par les suffixes donnés. Ces fichiers sont simplement stockés (compression de 0 %) dans le fichier zip de sortie, afin que zip ne perde pas de temps à essayer de les compresser. Les suffixes sont séparés par des deux-points ou des points-virgules. Par exemple :
zip -rn .Z:.zip:.tiff:.gif:.snd foo foo
copiera tout le contenu de foo dans foo.zip, mais stockera tous les fichiers qui se terminent par .Z, .zip, .tiff, .gif ou .snd sans essayer de les compresser (les images et les fichiers audio ont souvent leurs propres méthodes de compression spécialisées). Par défaut, zip ne compresse pas les fichiers dont les extensions figurent dans la liste .Z:.zip:.zoo:.arc:.lzh:.arj. Ces fichiers sont stockés directement dans l’archive de sortie. La variable d’environnement ZIPOPT peut être utilisée pour modifier les options par défaut. Par exemple, sous Unix avec csh :
setenv ZIPOPT "-n .gif:.zip"
Pour tenter de compresser tous les fichiers, utilisez :
zip -n : foo
L’option de compression maximale -9 tente également de compresser tous les fichiers, quel que soit le type de fichier.
Sur les systèmes Acorn RISC OS, les suffixes sont en fait des types de fichiers (format hexadécimal sur 3 chiffres). Par défaut, zip ne compresse pas les fichiers dont les types de fichiers figurent dans la liste DDC:D96:68E (c’est-à-dire les archives, les fichiers CFS et les fichiers PackDir).
-nw
--no-wild
Ne pas effectuer de traitement interne des caractères génériques (le traitement des caractères génériques par le shell est toujours effectué par le shell, sauf si les arguments sont échappés). Utile si une liste de chemins est lue et qu’aucune substitution de caractères génériques n’est souhaitée.
-N
--notes
[Amiga, MacOS] Enregistre les notes de fichier Amiga ou MacOS sous forme de commentaires dans le fichier zip. Ils peuvent être restaurés en utilisant l’option -N de unzip. Si -c est également utilisé, vous serez invité à entrer des commentaires uniquement pour les fichiers qui n’ont pas de notes.
-o
--latest-time
Définir l’heure de « dernière modification » de l’archive zip sur l’heure de « dernière modification » la plus récente (ou la plus ancienne) trouvée parmi les entrées de l’archive zip. Ceci peut être utilisé sans autre opération, si nécessaire. Par exemple :
zip -o foo
modifiera l’heure de dernière modification de foo.zip pour qu’elle corresponde à l’heure la plus récente des entrées de foo.zip.
-O fichier-de-sortie
--output-file fichier-de-sortie
Traitez les modifications de l’archive comme d’habitude, mais au lieu de mettre à jour l’archive existante, enregistrez la nouvelle archive dans fichier-de-sortie. Utile pour mettre à jour une archive sans modifier l’archive existante, et l’archive d’entrée doit être un fichier différent de l’archive de sortie.
Cette option peut être utilisée pour créer des archives fractionnées mises à jour. Elle peut également être utilisée avec -U pour copier les entrées d’une archive existante vers une nouvelle archive. Voir la section EXEMPLES ci-dessous.
Une autre utilisation consiste à convertir des fichiers zip d’une taille de fractionnement à une autre. Par exemple, pour convertir une archive avec des fractions de 700 Mo pour CD en une archive avec des fractions de 2 Go pour DVD, vous pouvez utiliser :
zip -s 2g cd-split.zip --out dvd-split.zip
ce qui utilise le mode copie. Voir -U ci-dessous. De plus :
zip -s 0 split.zip --out unsplit.zip
convertira une archive fractionnée en une archive à fichier unique.
Le mode copie convertira les entrées de flux (en utilisant des descripteurs de données et qui devraient être compatibles avec la plupart des décompresseurs) en entrées normales (qui devraient être compatibles avec tous les décompresseurs), à l’exception de l’utilisation d’un chiffrement standard. Pour les archives avec des entrées chiffrées, zipcloak déchiffrera les entrées et les convertira en entrées normales.
-p
--paths
Inclure les chemins d’accès relatifs aux fichiers dans les noms des fichiers stockés dans l’archive. C’est le comportement par défaut. L’option -j supprime les chemins et stocke uniquement les noms des fichiers.
-P password
--password password
Utiliser le mot de passe pour chiffrer les entrées du fichier zip (le cas échéant). C’EST INSÉCURISÉ ! De nombreux systèmes d’exploitation multiutilisateurs offrent des moyens pour n’importe quel utilisateur de voir la ligne de commande actuelle d’un autre utilisateur ; même sur les systèmes autonomes, il existe toujours la menace d’une personne qui regarde par-dessus votre épaule. Stocker le mot de passe en texte clair dans une ligne de commande dans un script automatisé est encore pire. Dans la mesure du possible, utilisez l’invite interactive sans affichage pour saisir les mots de passe. (Et là où la sécurité est vraiment importante, utilisez un chiffrement fort tel que Pretty Good Privacy au lieu du chiffrement standard relativement faible fourni par les utilitaires de fichiers zip.)
-q
--quiet
Mode silencieux ; supprimer les messages d’information et les invites de commentaires. (Utile, par exemple, dans les scripts shell et les tâches d’arrière-plan).
-Qn
--Q-flag n
[QDOS] stocker les informations sur le fichier dans l’en-tête du fichier avec n défini comme
bit 0 : ne pas ajouter d’en-têtes pour aucun fichier
bit 1 : ajouter des en-têtes pour tous les fichiers
bit 2 : ne pas attendre une pression sur une touche interactive lors de la sortie
-r
--recurse-paths
Parcourir la structure de répertoires de manière récursive ; par exemple :
zip -r foo.zip foo
ou plus concise
zip -r foo foo
Dans ce cas, tous les fichiers et répertoires de foo sont enregistrés dans une archive zip nommée foo.zip, y compris les fichiers dont les noms commencent par « . », car la récursion n’utilise pas le mécanisme de substitution des noms de fichiers du shell. Si vous ne souhaitez inclure qu’un sous-ensemble spécifique des fichiers du répertoire foo et de ses sous-répertoires, utilisez l’option -i pour spécifier le modèle des fichiers à inclure. Vous ne devez pas utiliser -r avec le nom « .* », car cela correspond à « .. », ce qui tentera de compresser le répertoire parent (ce qui n’est probablement pas ce que vous vouliez).
Plusieurs répertoires sources sont autorisés, comme dans
zip -r foo foo1 foo2
ce qui comprime d’abord foo1, puis foo2, en parcourant chaque répertoire.
Notez que, bien que les caractères génériques de -r soient généralement résolus lors de la récursion dans les répertoires du système de fichiers, les caractères génériques -R, -x et -i sont appliqués aux chemins d’accès internes de l’archive une fois que les répertoires ont été analysés. Pour que les caractères génériques s’appliquent aux fichiers des sous-répertoires lors de la récursion sur Unix et des systèmes similaires où le shell effectue une substitution de caractères génériques, soit échappez tous les caractères génériques, soit placez tous les arguments avec des caractères génériques entre guillemets. Cela permet à zip de voir les caractères génériques et de faire correspondre les fichiers des sous-répertoires en les utilisant lors de la récursion.
-R
--recurse-patterns
Parcourt la structure de répertoires de manière récursive en commençant par le répertoire courant ; par exemple :
zip -R foo "*.c"
Dans ce cas, tous les fichiers correspondant à *.c dans l’arborescence à partir du répertoire courant sont
stockés dans une archive zip nommée foo.zip. Notez que *.c correspondra à file.c, a/file.c et
a/b/.c. Plusieurs motifs peuvent être répertoriés en tant qu’arguments distincts. Remarque pour les utilisateurs de PKZIP :
la commande équivalente est
pkzip -rP foo *.c
Les motifs sont des chemins de fichiers relatifs tels qu’ils apparaissent dans l’archive, ou tels qu’ils le seront après la compression, et
peuvent comporter des caractères génériques facultatifs. Par exemple, étant donné que le répertoire courant est foo et
sous celui-ci se trouvent les répertoires foo1 et foo2 et dans foo1 se trouve le fichier bar.c,
zip -R foo/*
compressera foo, foo/foo1, foo/foo1/bar.c et foo/foo2.
zip -R */bar.c
compressera foo/foo1/bar.c. Voir la note sur -r concernant l’échappement des caractères génériques.
-RE
--regex
[WIN32] Avant la version 3.0 de zip, la correspondance de liste d’expressions régulières était activée par défaut sur les plateformes Windows. En raison de la confusion résultant de la nécessité d’échapper les caractères "[" et "]" dans
les noms, elle est maintenant désactivée par défaut pour Windows afin que "[" et "]" soient simplement des caractères normaux dans
les noms. Cette option réactive la correspondance [].
-s splitsize
--split-size splitsize
Permet de créer une archive divisée et de définir la taille de division. Une archive divisée est une archive
qui peut être divisée en plusieurs fichiers. Au fur et à mesure de la création de l’archive, si la taille de l’archive
atteint la taille de division spécifiée, cette division est fermée et la division suivante est ouverte.
En général, toutes les divisions sauf la dernière auront la taille de division et la dernière aura ce qui reste. Si l’archive entière est inférieure à la taille de division, une archive à fichier unique est créée.
Les archives divisées sont stockées dans des fichiers numérotés. Par exemple, si le nom de l’archive de sortie est archive et que trois divisions sont nécessaires, l’archive résultante sera dans les trois fichiers
archive.z01, archive.z02 et archive.zip. Ne modifiez pas la numérotation de ces fichiers, sinon l’archive ne sera pas lisible car ceux-ci sont utilisés pour déterminer l’ordre dans lequel les divisions sont
lues.
La taille de division est un nombre suivi éventuellement d’un multiplicateur. Actuellement, le nombre doit être
un entier. Le multiplicateur peut être actuellement l’un des suivants : k (kilooctets), m (mégaoctets), g (gigaoctets) ou t (téraoctets). Étant donné que 64 ko est la taille de division minimale, les nombres sans multiplicateur
sont par défaut en mégaoctets. Par exemple, pour créer une archive divisée appelée foo avec le contenu
du répertoire bar avec des divisions de 670 Mo qui pourraient être utiles pour la gravure sur des CD, la
commande :
zip -s 670m -r foo bar
pourrait être utilisée.
Actuellement, les anciennes divisions d’une archive divisée ne sont pas exclues d’une nouvelle archive, mais elles
peuvent être spécifiquement exclues. Si possible, conservez les archives d’entrée et de sortie en dehors du
chemin en cours de compression lors de la création d’archives divisées.
-s sans -sp comme ci-dessus crée tous les fichiers lors de l’écriture de foo, dans ce cas, le répertoire courant. Ce mode de division met à jour les fichiers pendant la création de l’archive, ce qui nécessite que tous les fichiers restent accessibles en écriture, mais crée des archives divisées qui peuvent être lues par n’importe quel programme de décompression prenant en charge les archives divisées. Voir -sp ci-dessous pour activer le mode de pause de division, qui permet d’écrire les fichiers directement sur un support amovible.
L’option -sv peut être utilisée pour activer la division détaillée et fournir des informations sur la façon dont la division est effectuée. L’option -sb peut être utilisée pour faire sonner la sonnerie lorsque zip fait une pause pour la prochaine destination de division.
Les archives divisées ne peuvent pas être mises à jour, mais voir l’option -O (--out) pour savoir comment une archive divisée peut être mise à jour lors de sa copie vers une nouvelle archive. Une archive divisée peut également être convertie en une archive à fichier unique en utilisant une taille de division de 0 ou en inversant l’option -s :
zip -s 0 split.zip --out single.zip
Voir également -U (--copy) pour plus d’informations sur l’utilisation du mode de copie.
-sb
--split-bell
Si la division est activée et que le mode de pause de division est utilisé, faites sonner la sonnerie lorsque zip fait une pause pour chaque destination de division.
-sc
--show-command
Affiche la ligne de commande lorsque zip démarre, puis se termine. Le nouveau parseur de commandes permute les arguments, plaçant toutes les options et les valeurs associées avant tous les arguments qui ne sont pas des options. Cela permet à une option d’apparaître n’importe où dans la ligne de commande, à condition que toutes les valeurs qui accompagnent l’option y soient également. Cette option affiche la ligne de commande telle que zip la voit, y compris tous les arguments provenant de l’environnement, comme ceux de la variable ZIPOPT. Dans la mesure du possible, les options qui apparaissent plus tard dans la ligne de commande peuvent remplacer les options qui apparaissent plus tôt.
-sf
--show-files
Affiche les fichiers qui seraient traités, puis se termine. Par exemple, si une nouvelle archive est créée, cette option affichera la liste des fichiers qui seraient ajoutés. Si l’option est inversée, -sf-, la sortie ne sera envoyée que vers un fichier journal ouvert. L’affichage à l’écran n’est pas recommandé pour les longues listes.
-so
--show-options
Affiche toutes les options disponibles prises en charge par zip, telles que compilées sur le système actuel. Comme cette commande lit la table des options, elle doit inclure toutes les options. Chaque ligne comprend l’option courte (si elle est définie), l’option longue (si elle est définie), le format de toute valeur qui accompagne l’option, si l’option peut être inversée et une brève description. Le format de la valeur peut être : aucune valeur, valeur requise, valeur facultative, valeur de caractère unique, valeur numérique ou liste de valeurs. La sortie de cette option ne vise pas à montrer comment utiliser une option, mais uniquement à afficher les options disponibles.
-sp
--split-pause
Si la division est activée avec -s, activez le mode de pause de division. Cela crée des archives divisées comme le fait -s, mais l’écriture en flux est utilisée, de sorte que chaque fichier peut être fermé dès qu’il est écrit, et zip fait une pause entre chaque fichier pour permettre de modifier la destination ou le support du fichier.
Bien que ce mode de fractionnement permette d'écrire directement les fragments sur un support amovible, il utilise un format d'archive en flux qui pourrait ne pas être lisible par certains programmes de décompression. Avant de vous fier aux fragments créés avec l'option -sp, testez un fichier d'archive fragmenté avec le programme de décompression que vous utiliserez.
Pour convertir un fichier d'archive fragmenté en flux (créé avec l'option -sp) en un fichier d'archive standard, utilisez l'option --out.
-su
--show-unicode
Comme -sf, mais affiche également la version Unicode du chemin si elle existe.
-sU
--show-just-unicode
Comme -sf, mais n'affiche que la version Unicode du chemin si elle existe, sinon, affiche la version standard du chemin.
-sv
--split-verbose
Active divers messages détaillés pendant le fractionnement, indiquant comment le fractionnement est effectué.
-S
--system-hidden
[MSDOS, OS/2, WIN32 et ATARI] Inclut les fichiers système et cachés.
[MacOS] Inclut les fichiers invisibles du Finder, qui sont ignorés par défaut.
-t mmjjAAAA
--from-date mmjjAAAA
Ne traite pas les fichiers modifiés avant la date spécifiée, où mm est le mois (00-12), jj est le jour du mois (01-31) et AAAA est l'année. Le format de date ISO 8601 AAAA-mm-jj est également accepté. Par exemple :
zip -rt 12071991 infamy foo
zip -rt 1991-12-07 infamy foo
ajoutera tous les fichiers dans foo et ses sous-répertoires qui ont été modifiés pour la dernière fois le 7 décembre 1991 ou après, dans l'archive zip infamy.zip.
-tt mmjjAAAA
--before-date mmjjAAAA
Ne traite pas les fichiers modifiés après ou à la date spécifiée, où mm est le mois (00-12), jj est le jour du mois (01-31) et AAAA est l'année. Le format de date ISO 8601 AAAA-mm-jj est également accepté. Par exemple :
zip -rtt 11301995 infamy foo
zip -rtt 1995-11-30 infamy foo
ajoutera tous les fichiers dans foo et ses sous-répertoires qui ont été modifiés pour la dernière fois avant le 30 novembre 1995, dans l'archive zip infamy.zip.
-T
--test
Teste l'intégrité du nouveau fichier zip. Si le test échoue, l'ancien fichier zip n'est pas modifié et, avec l'option -m, aucun fichier d'entrée n'est supprimé.
-TT cmd
--unzip-command cmd
Utilise la commande cmd au lieu de 'unzip -tqq' pour tester une archive lorsque l'option -T est utilisée. Sur Unix, pour utiliser une copie du programme unzip dans le répertoire courant au lieu du programme unzip système standard, vous pouvez utiliser :
zip archive file1 file2 -T -TT "./unzip -tqq"
Dans cmd, {} est remplacé par le nom de l'archive temporaire, sinon, le nom de l'archive est ajouté à la fin de la commande. Le code de retour est vérifié pour le succès (0 sur Unix).
-u
--update
Remplace (met à jour) une entrée existante dans l'archive zip uniquement si elle a été modifiée plus récemment que la version déjà présente dans l'archive zip. Par exemple :
zip -u stuff *
ajoutera tous les nouveaux fichiers dans le répertoire courant et mettra à jour tous les fichiers qui ont été modifiés depuis la dernière création/modification de l'archive zip stuff.zip (notez que zip n'essaiera pas d'inclure stuff.zip dans lui-même lorsque vous faites cela).
Notez que l'option -u sans arguments de fichier d'entrée se comporte comme l'option -f (freshen).
`-U`
`--copy-entries`
Copier les entrées d’une archive à une autre. Nécessite l’option --out pour spécifier un fichier de sortie différent du fichier d’entrée. Le mode de copie est l’inverse de -d delete. Lorsque la suppression est utilisée avec --out, les entrées sélectionnées sont supprimées de l’archive et toutes les autres entrées sont copiées dans la nouvelle archive, tandis que le mode de copie sélectionne les fichiers à inclure dans la nouvelle archive. Contrairement à -u update, les modèles d’entrée sur la ligne de commande ne sont mis en correspondance qu’avec les entrées de l’archive, et non avec les fichiers du système de fichiers. Par exemple,
`zip inarchive "*.c" --copy --out outarchive`
copie les entrées dont les noms se terminent par .c de inarchive vers outarchive. Le caractère générique doit être échappé sur certains systèmes pour empêcher le shell de substituer les noms de fichiers du système de fichiers, ce qui pourrait être sans rapport avec les entrées de l’archive.
Si aucun fichier d’entrée n’apparaît sur la ligne de commande et que --out est utilisé, le mode de copie est supposé :
`zip inarchive --out outarchive`
Ceci est utile pour modifier la taille de fractionnement, par exemple. Le chiffrement et le déchiffrement des entrées ne sont pas encore pris en charge en mode de copie. Utilisez zipcloak pour cela.
`-UN v`
`--unicode v`
Détermine ce que zip doit faire avec les noms de fichiers Unicode. La version 3.0 de zip, en plus du chemin de fichier standard, inclut désormais la traduction UTF-8 du chemin si le chemin de l’entrée n’est pas entièrement en ASCII 7 bits. Lorsqu’une entrée ne contient pas le chemin Unicode, zip revient au chemin de fichier standard. Le problème avec l’utilisation du chemin standard est que ce chemin se trouve dans l’ensemble de caractères local de l’archive zip qui l’a créé, ce qui peut contenir des caractères qui ne sont pas valides dans l’ensemble de caractères utilisé par l’outil de décompression. Lorsque zip lit une archive, si une entrée contient également un chemin Unicode, zip utilise désormais par défaut le chemin Unicode pour recréer le chemin standard à l’aide de l’ensemble de caractères local actuel.
Cette option peut être utilisée pour déterminer ce que zip doit faire avec ce chemin s’il existe une incompatibilité entre le chemin standard stocké et le chemin UTF-8 stocké (ce qui peut se produire si le chemin standard a été mis à jour). Dans tous les cas, s’il existe une incompatibilité, on suppose que le chemin standard est plus actuel et zip l’utilise. Les valeurs de v sont :
`q` - quitter si les chemins ne correspondent pas
`w` - avertir, continuer avec le chemin standard
`i` - ignorer, continuer avec le chemin standard
`n` - pas d’Unicode, ne pas utiliser les chemins Unicode
Par défaut, il est configuré pour avertir et continuer.
Les caractères qui ne sont pas valides dans l’ensemble de caractères actuel sont échappés sous la forme \#Uxxxx et #Lxxxxxx, où x est un caractère ASCII pour un chiffre hexadécimal. Le premier est utilisé si un nombre de caractères de 16 bits est suffisant pour représenter le caractère Unicode, et le second si le caractère a besoin de plus de 16 bits pour représenter son code de caractère Unicode. Définir -UN sur
`e` - échapper
comme dans
`zip archive -sU -UN=e`
force zip à échapper tous les caractères qui ne sont pas des caractères ASCII 7 bits imprimables.
Normalement, zip stocke directement UTF-8 dans le champ du chemin standard sur les systèmes où UTF-8 est l’ensemble de caractères actuel et stocke l’UTF-8 dans les nouveaux champs supplémentaires dans le cas contraire. L’option
u - UTF-8
comme dans
archive zip dir -r -UN=UTF8
force zip à stocker UTF-8 en natif dans l'archive. Notez que le stockage direct de UTF-8 est
la valeur par défaut sur les systèmes Unix qui le prennent en charge. Cette option pourrait être utile sur les systèmes Windows où le chemin d'accès échappé est trop long pour être un chemin d'accès valide et la version UTF-8 du
chemin est plus petite, mais le UTF-8 natif n'est pas compatible avec les versions antérieures sur les systèmes Windows.
-v
--verbose
Mode verbeux ou affichage d'informations de diagnostic sur la version.
Normalement, lorsqu'il est appliqué aux opérations réelles, cette option active l'affichage d'une
barre de progression pendant la compression (voir -dd pour plus d'informations sur les points) et demande des informations de diagnostic détaillées sur les particularités de la structure du fichier zip.
Cependant, lorsque -v est le seul argument de la ligne de commande, un écran de diagnostic est affiché.
Cela devrait maintenant fonctionner même si la sortie standard est redirigée vers un fichier, ce qui permet de sauvegarder facilement les informations pour les envoyer avec les rapports de bogues à Info-ZIP. L'écran de version fournit l'en-tête de l'écran d'aide avec le nom du programme, la version et la date de publication, quelques pointeurs vers le
site Web et les sites de distribution d'Info-ZIP, et affiche des informations sur l'environnement cible
(type et version du compilateur, version du système d'exploitation, date de compilation et les fonctionnalités optionnelles utilisées pour créer l'exécutable zip).
-V
--VMS-portable
[VMS] Enregistre les attributs de fichier VMS. (Les fichiers sont tronqués à la fin du fichier). Lorsqu'une archive -V est décompressée sur un système non-VMS, certains types de fichiers (en particulier les fichiers texte Stream_LF et les fichiers binaires purs comme fixed-512) doivent être extraits intacts. Les fichiers indexés et les types de fichiers avec
des tailles d'enregistrement intégrées (en particulier les types d'enregistrement à longueur variable) seront probablement considérés comme corrompus ailleurs.
-VV
--VMS-specific
[VMS] Enregistre les attributs de fichier VMS et tous les blocs alloués dans un fichier, y compris toutes les données
au-delà de la fin du fichier. Utile pour déplacer des fichiers malformés entre les systèmes VMS. Lorsqu'une archive -VV
est décompressée sur un système non-VMS, presque tous les fichiers sembleront corrompus.
-w
--VMS-versions
[VMS] Ajoute le numéro de version des fichiers au nom, y compris les versions multiples des
fichiers. Par défaut, seule la version la plus récente du fichier spécifié est utilisée.
-ww
--VMS-dot-versions
[VMS] Ajoute le numéro de version des fichiers au nom, y compris les versions multiples des
fichiers, en utilisant le format .nnn. Par défaut, seule la version la plus récente du fichier spécifié est utilisée.
-ws
--wild-stop-dirs
Les caractères génériques ne correspondent qu'au niveau d'un répertoire. Normalement, zip traite les chemins en tant que chaînes et compte tenu des chemins suivants
/foo/bar/dir/file1.c
/foo/bar/file2.c
un modèle d'entrée tel que
/foo/bar/*
correspondrait normalement aux deux chemins, l'astérisque correspondant à dir/file1.c et à file2.c. Notez que dans le
premier cas, une limite de répertoire (/) a été franchie dans la correspondance. Avec -ws, aucune limite de répertoire
ne sera incluse dans la correspondance, ce qui rendra les caractères génériques locaux à un niveau de répertoire
spécifique. Ainsi, avec -ws activé, seul le deuxième chemin serait mis en correspondance.
Lors de l'utilisation de -ws, utilisez ** pour faire correspondre les éléments à travers les limites des répertoires, comme * le fait normalement.
-x fichiers
--exclude fichiers
Excluez explicitement les fichiers spécifiés, comme dans :
zip -r foo foo -x \*.o
ce qui inclura le contenu de foo dans foo.zip tout en excluant tous les fichiers se terminant par .o. La barre oblique inverse empêche la substitution de nom de fichier par le shell, de sorte que la correspondance de nom est effectuée par zip à tous les niveaux du répertoire.
Il est également possible d’utiliser :
zip -r foo foo -_
ce qui inclura le contenu de foo dans foo.zip tout en excluant tous les fichiers correspondant aux modèles du fichier exclude.lst.
Les formes longues des options ci-dessus sont :
zip -r foo foo --exclude \*.o
et
zip -r foo foo --exclude @exclude.lst
Plusieurs modèles peuvent être spécifiés, comme dans :
zip -r foo foo -x \*.o \*.c
S’il n’y a pas d’espace entre -x et le modèle, une seule valeur est supposée (pas de liste) :
zip -r foo foo -x\*.o
Pour plus d’informations sur l’inclusion et l’exclusion, consultez -i.
-X
--no-extra
Ne sauvegardez pas les attributs de fichier supplémentaires (Attributs étendus sur OS/2, uid/gid et heures de fichier sur Unix). Le format zip utilise des champs supplémentaires pour inclure des informations supplémentaires pour chaque entrée. Certains champs supplémentaires sont spécifiques à certains systèmes, tandis que d’autres sont applicables à tous les systèmes. Normalement, lorsque zip lit les entrées d’une archive existante, il lit les champs supplémentaires qu’il connaît, supprime le reste et ajoute les champs supplémentaires applicables à ce système. Avec -X, zip supprime tous les anciens champs et n’inclut que les champs supplémentaires Unicode et Zip64 (actuellement, ces deux champs supplémentaires ne peuvent pas être désactivés).
En niant cette option, -X-, tous les champs supplémentaires par défaut sont inclus, mais tous les champs supplémentaires non reconnus sont également copiés.
-y
--symlinks
Pour UNIX et VMS (V8.3 et versions ultérieures), stockez les liens symboliques tels quels dans l’archive zip, au lieu de compresser et de stocker le fichier référencé par le lien. Cela peut éviter que plusieurs copies de fichiers soient incluses dans l’archive lorsque zip parcourt les arborescences de répertoires et accède aux fichiers directement et via des liens.
-z
--archive-comment
Invite à entrer un commentaire multiligne pour l’ensemble de l’archive zip. Le commentaire se termine par une ligne contenant uniquement un point ou par une condition de fin de fichier (^D sur Unix, ^Z sur MSDOS, OS/2 et VMS). Le commentaire peut être extrait d’un fichier :
zip -z foo < foowhat
-Z cm
--compression-method cm
Définit la méthode de compression par défaut. Actuellement, les principales méthodes prises en charge par zip sont store et deflate. La méthode de compression peut être définie sur :
store - Définir la méthode de compression sur store force zip à stocker les entrées sans compression. C’est généralement plus rapide que de compresser les entrées, mais cela n’entraîne aucune économie d’espace. C’est la même chose que d’utiliser -0 (niveau de compression zéro).
deflate - Il s’agit de la méthode par défaut pour zip. Si zip détermine que le stockage est préférable à la déflation, l’entrée sera stockée à la place.
bzip2 - Si la prise en charge de bzip2 est compilée, cette méthode de compression est également disponible. Seuls certains programmes de décompression modernes prennent actuellement en charge la méthode de compression bzip2, alors testez le programme de décompression que vous utiliserez avant de vous fier aux archives utilisant cette méthode (méthode de compression 12).
Par exemple, pour ajouter bar.c à l’archive foo en utilisant la compression bzip2 :
zip -Z bzip2 foo bar.c
La méthode de compression peut être abrégée :
zip -Zb foo bar.c
-#
(-0, -1, -2, -3, -4, -5, -6, -7, -8, -9)
Régule la vitesse de compression en utilisant le chiffre \# spécifié, où -0 indique aucune compression (stocke tous les fichiers), -1 indique la vitesse de compression la plus rapide (moins de compression)
et -9 indique la vitesse de compression la plus lente (compression optimale, ignore la liste des suffixes). Le niveau de compression par défaut est -6.
Bien que toujours en cours de développement, l’intention est que ce paramètre contrôle la vitesse de compression pour toutes les méthodes de compression. Actuellement, seule la déflation est contrôlée.
-!
--use-privileges
[WIN32] Utilise les privilèges (si accordés) pour obtenir tous les aspects de la sécurité WinNT.
-@
--names-stdin
Prend la liste des fichiers d’entrée depuis l’entrée standard. Un seul nom de fichier par ligne.
-$
--volume-label
[MSDOS, OS/2, WIN32] Inclut l’étiquette de volume du lecteur contenant le premier fichier à compresser. Si vous souhaitez inclure uniquement l’étiquette de volume ou forcer un lecteur spécifique, utilisez le nom du lecteur comme premier nom de fichier, comme ceci :
zip -$ foo a: c:bar
EXEMPLES
L’exemple le plus simple :
zip stuff *
crée l’archive stuff.zip (en supposant qu’elle n’existe pas) et y place tous les fichiers du répertoire courant sous forme compressée (le suffixe .zip est ajouté automatiquement, sauf si le nom de l’archive contient déjà un point ; cela permet de spécifier explicitement d’autres suffixes).
En raison de la façon dont le shell Unix effectue la substitution de noms de fichiers, les fichiers commençant par « . » ne sont pas inclus. Pour les inclure également :
zip stuff .* *
Même ainsi, aucun sous-répertoire du répertoire courant ne sera inclus.
Pour compresser un répertoire entier, la commande :
zip -r foo foo
crée l’archive foo.zip, contenant tous les fichiers et répertoires du répertoire foo qui se trouve dans le répertoire courant.
Vous pouvez vouloir créer une archive zip qui contient les fichiers de foo, sans enregistrer le nom du répertoire, foo. Vous pouvez utiliser l’option -j pour omettre les chemins, comme ceci :
zip -j foo foo/*
Si vous manquez d’espace disque, vous pourriez ne pas avoir assez de place pour conserver à la fois le répertoire d’origine et l’archive zip compressée correspondante. Dans ce cas, vous pouvez créer l’archive en plusieurs étapes en utilisant l’option -m. Si foo contient les sous-répertoires tom, dick et harry, vous pouvez :
zip -rm foo foo/tom
zip -rm foo foo/dick
zip -rm foo foo/harry
où la première commande crée foo.zip, et les deux suivantes l’ajoutent. À la fin de chaque commande zip, la dernière archive créée est supprimée, ce qui libère de la place pour que la commande zip suivante fonctionne.
Utilisez -s pour définir la taille de la division et créer une archive divisée. La taille est donnée sous forme de nombre suivi éventuellement de l’un des éléments suivants : k (Ko), m (Mo), g (Go) ou t (To). La commande
zip -s 2g -r split.zip foo
crée une archive fractionnée du répertoire foo, chaque fraction ne dépassant pas 2 Go. Si foo contenait 5 Go de données et que ces données étaient stockées dans l’archive fractionnée sans compression (pour simplifier cet exemple), cela créerait trois fractions : split.z01 de 2 Go, split.z02 de 2 Go et split.zip d’un peu plus de 1 Go.
L’option -sp peut être utilisée pour faire une pause entre les fractions afin de permettre le remplacement des supports amovibles, par exemple, mais lisez les descriptions et les avertissements concernant les options -s et -sp ci-dessous.
Bien que zip ne permette pas de mettre à jour les archives fractionnées, zip propose la nouvelle option -O (--output-file) pour permettre de mettre à jour les archives fractionnées et de les enregistrer dans une nouvelle archive. Par exemple :
zip inarchive.zip foo.c bar.c --out outarchive.zip
lit l’archive inarchive.zip, même si elle est fractionnée, ajoute les fichiers foo.c et bar.c, et enregistre l’archive résultante dans outarchive.zip. Si inarchive.zip est une archive fractionnée, alors outarchive.zip utilise par défaut la même taille de fraction. Sachez qu’outarchive.zip et tous les fichiers de fraction qui sont créés avec elle sont toujours écrasés sans avertissement. Cela pourrait changer à l’avenir.
CORRESPONDANCE DE MOTIFS
Cette section s’applique uniquement à Unix. Des informations sur MSDOS et VMS seront ajoutées ultérieurement. Cependant, les caractères spéciaux génériques * et [] ci-dessous s’appliquent au moins à MSDOS également.
Les shells Unix (sh, csh, bash et autres) effectuent normalement une substitution de nom de fichier (également appelée « globbing ») sur les arguments de commande. Généralement, les caractères spéciaux sont les suivants :
? correspond à n’importe quel caractère unique
* correspond à n’importe quelle séquence de caractères (y compris aucune)
[] correspond à n’importe quel caractère dans la plage indiquée dans les crochets (exemple : [a-f], [0-9]).
Cette forme de correspondance de caractères génériques permet à l’utilisateur de spécifier une liste de caractères entre les crochets et, si l’un des caractères correspond, l’expression correspond. Par exemple :
zip archive "*.[hc]"
créera une archive de tous les fichiers du répertoire actuel qui se terminent par .h ou .c.
Les plages de caractères sont prises en charge :
zip archive "[a-f]*"
ajoutera à l’archive tous les fichiers commençant par « a » à « f ».
La négation est également prise en charge, où tout caractère à cette position qui ne figure pas dans la liste correspond. La négation est prise en charge en ajoutant ! ou ^ au début de la liste :
zip archive "*.[!o]"
correspond aux fichiers qui ne se terminent pas par « .o ».
Sur WIN32, la correspondance [] doit être activée avec l’option -RE pour éviter la confusion que les noms contenant [ ou ] ont causée.
Lorsque ces caractères sont rencontrés (sans être précédés d’une barre oblique inverse ou de guillemets), le shell recherchera les fichiers relatifs au chemin actuel qui correspondent au motif, et remplacera l’argument par une liste des noms qui ont correspondu.
Le programme zip peut effectuer la même correspondance sur les noms qui se trouvent dans l’archive zip en cours de modification ou, dans le cas des options -x (exclure) ou -i (inclure), sur la liste des fichiers à traiter, en utilisant des barres obliques inverses ou des guillemets pour indiquer au shell de ne pas effectuer l’expansion de nom. En général, lorsqu’il rencontre un nom dans la liste des fichiers à traiter, zip recherche d’abord le nom dans le système de fichiers. S’il le trouve, il l’ajoute à la liste des fichiers à traiter. S’il ne le trouve pas, il recherche le nom dans l’archive zip en cours de modification (si elle existe), en utilisant les caractères de correspondance de motifs décrits ci-dessus, si présents. Pour chaque correspondance, il ajoute ce nom à la liste des fichiers à traiter, à moins que ce nom ne corresponde à un nom donné avec l’option -x, ou qu’il ne corresponde à aucun nom donné avec l’option -i.
La correspondance de motifs inclut le chemin, de sorte que les motifs tels que \\*.o correspondent aux noms qui se terminent par ".o", quel que soit le préfixe du chemin. Notez que le caractère antislash doit précéder chaque caractère spécial (c'est-à-dire ?*[]), ou l'argument entier doit être placé entre guillemets ("").
En général, utilisez des antislash ou des guillemets pour les chemins qui contiennent des caractères génériques afin que zip effectue la correspondance de motifs pour les chemins de fichiers, et toujours pour les chemins et les chaînes qui contiennent des espaces ou des caractères génériques pour les options -i, -x, -R, -d et -U et partout où zip doit traiter les caractères génériques.
ENVIRONNEMENT
Les variables d'environnement suivantes sont lues et utilisées par zip comme décrit.
ZIPOPT
contient les options par défaut qui seront utilisées lors de l'exécution de zip. Le contenu de cette variable d'environnement sera ajouté à la ligne de commande juste après la commande zip.
ZIP
[Non disponible sur RISC OS et VMS] voir ZIPOPT
Zip$Options
[RISC OS] voir ZIPOPT
Zip$Exts
[RISC OS] contient des extensions séparées par un : qui feront en sorte que les noms de fichiers natifs avec l'une des extensions spécifiées soient ajoutés au fichier zip avec le nom de base et l'extension inversés.
ZIP_OPTS
[VMS] voir ZIPOPT
VOIR AUSSI
compress(1), shar(1), tar(1), unzip(1), gzip(1)
DIAGNOSTICS
Le code de sortie (ou le niveau d'erreur) correspond approximativement aux codes de sortie définis par PKWARE et prend les valeurs suivantes, sauf sous VMS :
0 normal ; aucune erreur ou aucun avertissement détecté.
2 fin inattendue du fichier zip.
3 une erreur générique dans le format de fichier zip a été détectée. Le traitement peut avoir été effectué avec succès ; certains fichiers zip corrompus créés par d'autres programmes d'archivage ont des solutions simples.
4 zip n'a pas pu allouer de mémoire pour un ou plusieurs tampons pendant l'initialisation du programme.
5 une erreur grave dans le format de fichier zip a été détectée. Le traitement a probablement échoué immédiatement.
6 l'entrée est trop grande pour être traitée (par exemple, les fichiers d'entrée plus grands que 2 Go sans utiliser Zip64 ou en essayant de lire un fichier d'archive existant qui est trop volumineux) ou l'entrée est trop grande pour être divisée avec zipsplit
7 format de commentaire invalide
8 zip -T a échoué ou manque de mémoire
9 l'utilisateur a interrompu zip prématurément avec Ctrl+C (ou similaire)
10 zip a rencontré une erreur lors de l'utilisation d'un fichier temporaire
11 erreur de lecture ou de recherche
12 l'archive zip est vide ou inexistante
13 fichier zip manquant ou vide
14 erreur lors de l'écriture dans un fichier
15 zip n'a pas pu créer un fichier pour écrire
16 paramètres de ligne de commande incorrects
18 zip n'a pas pu ouvrir le fichier spécifié en lecture
19 zip a été compilé avec des options non prises en charge sur ce système
VMS interprète les valeurs de retour Unix (ou PC) standard comme des choses plus effrayantes. Par conséquent, zip mappe ces valeurs dans des codes de statut de type VMS. En général, zip définit Facility = 1955 (0x07A3), Code = 2 * Statut_Unix, et une Gravité appropriée (comme spécifié dans ziperr.h). Plus de détails sont inclus dans la documentation spécifique à VMS. Voir [.vms]NOTES.TXT et [.vms]vms_msg_gen.c.
BUGS
zip 3.0 n'est pas compatible avec PKUNZIP 1.10. Utilisez zip 1.1 pour créer des fichiers zip qui peuvent être extraits par PKUNZIP 1.10.
Les fichiers zip produits par zip 3.0 ne doivent pas être mis à jour par zip 1.1 ou PKZIP 1.10 s'ils contiennent des membres chiffrés ou s'ils ont été produits dans un pipeline ou sur un périphérique non accessible en mode aléatoire. Les anciennes versions de zip ou PKZIP créeraient une archive avec un format incorrect. Les anciennes versions peuvent lister le contenu du fichier zip, mais ne peuvent pas l'extraire (en raison du nouvel algorithme de compression). Si vous n'utilisez pas le chiffrement et que vous utilisez des fichiers disque normaux, vous n'avez pas à vous soucier de ce problème.
Sous VMS, tous les formats de fichiers inhabituels ne sont pas traités correctement. Seuls les fichiers zip au format stream-LF sont censés fonctionner avec zip. Les autres peuvent être convertis à l'aide du programme BILF de Rahul Dhesi. Cette version de zip gère une partie de la conversion en interne. Lorsque vous utilisez Kermit pour transférer des fichiers zip de VMS vers MSDOS, tapez « set file type block » sur VMS. Lorsque vous transférez de MSDOS vers VMS, tapez « set file type fixed » sur VMS. Dans les deux cas, tapez « set file type binary » sur MSDOS.
Sur certaines anciennes versions de VMS, zip peut se bloquer pour les spécifications de fichiers qui utilisent la syntaxe DECnet foo::*.
Sous OS/2, zip ne peut pas faire correspondre certains noms, tels que ceux qui incluent un point d'exclamation ou un signe dièse. Il s'agit d'un bug dans OS/2 lui-même : les fonctions 32 bits DosFindFirst/Next ne trouvent pas ces noms. D'autres programmes, tels que GNU tar, sont également affectés par ce bug.
Sous OS/2, la quantité d'attributs étendus affichée par DIR est (pour la compatibilité) la quantité renvoyée par la version 16 bits de DosQueryPathInfo(). Sinon, OS/2 1.3 et 2.0 afficheraient des tailles d'attributs étendus différentes lors de l'exécution de DIR sur un fichier. Cependant, la disposition de la structure renvoyée par la fonction 32 bits DosQueryPathInfo() est légèrement différente : elle utilise des octets de remplissage supplémentaires et des pointeurs de liaison (il s'agit d'une liste chaînée) pour avoir tous les champs sur des limites de 4 octets pour la portabilité vers les futures versions d'OS/2. Par conséquent, la valeur signalée par zip (qui utilise ce format 32 bits) diffère de celle signalée par DIR. Zip stocke le format 32 bits pour la portabilité, même la version 16 bits compilée en MS-C s'exécutant sur OS/2 1.3, de sorte que même celle-ci affiche la taille du format 32 bits.
AUTEURS
Copyright (C) 1997-2008 Info-ZIP.
Actuellement distribué sous la licence Info-ZIP.
Copyright (C) 1990-1997 Mark Adler, Richard B. Wales, Jean-loup Gailly, Onno van der Linden, Kai Uwe Rommel, Igor Mandrichenko, John Bush et Paul Kienitz.
Copyright original :
Il est accordé à toute personne ou institution le droit d’utiliser, copier ou redistribuer ce logiciel, à condition que tous les fichiers originaux soient inclus, qu’il ne soit pas vendu à des fins lucratives et que cette notice de copyright soit conservée.
COMME TOUT CE QUI EST GRATUIT, ZIP ET SES UTILITAIRES ASSOCIÉS SONT FOURNIS « EN L’ÉTAT » ET SANS
AUCUNE GARANTIE, EXPLICITE OU IMPLICITE. EN AUCUN CAS, LES TITULAIRES DES DROITS D’AUTEUR NE
SERONT RESPONSABLES DES DOMMAGES RÉSULTANT DE L’UTILISATION DE CE LOGICIEL.
Veuillez envoyer les rapports de bogues et les commentaires via la page Web : www.info-zip.org. Pour les rapports de bogues, veuillez inclure la version de zip (voir zip -h), les options de compilation utilisées (voir zip -v), la machine et le système d’exploitation utilisés, ainsi que le plus grand nombre possible d’informations supplémentaires.
REMERCIEMENTS
Merci à R. P. Byrne pour son programme Shrink.Pas, qui a inspiré ce projet et dont l’algorithme de compression a été « volé »; à Phil Katz pour avoir placé dans le domaine public le format de fichier zip, le format de compression et l’extension de nom de fichier .ZIP, et pour avoir accepté des modifications mineures du format de fichier; à Steve Burg pour avoir apporté des éclaircissements sur le format deflate; à Haruhiko Okumura et Leonid Broukhis pour avoir fourni des idées utiles pour l’algorithme de compression; à Keith Petersen, Rich Wales, Hunter Goatley et Mark Adler pour avoir fourni une liste de diffusion et un site FTP que le groupe Info-ZIP peut utiliser; et surtout, au groupe Info-ZIP lui-même (énuméré dans le fichier infozip.who) sans dont les efforts constants de test et de correction de bogues, une version portable de zip n’aurait pas été possible. Enfin, nous devons remercier (ou blâmer) le premier modérateur d’Info-ZIP, David Kirschbaum, de nous avoir mis dans ce pétrin. La page de manuel a été réécrite pour Unix par R. P. C. Rodgers et mise à jour par E. Gordon pour zip 3.0.