Scroll to navigation

ZIP(1) Manuel de l'utilisateur Linux ZIP(1)

NOM

zip, zipcloak, zipnote, zipsplit - Empaqueter et compacter (archiver) des fichiers

SYNOPSIS

zip [-aABcdDeEfFghjklLmoqrRSTuvVwXyz!@$] [-b path] [-n suffixes] [-t mmddyyyy] [-tt mmddyyyy] [ zipfile [ file1 file2 ...]] [-xi list]

zipcloak [-dhL] [-b path] zipfile

zipnote [-hwL] [-b path] zipfile

zipsplit [-hiLpst] [-n size] [-b path] zipfile

DESCRIPTION

zip est un utilitaire d'empaquetage et de compactage des fichiers pour Unix, VMS, MSDOS, OS/2, Windows NT, Minix, Atari, Macintosh, Amiga et Acorn RISC OS.

Il est analogue à la combinaison des commandes UNIX tar(1) et compress(1) et est compatible avec PKZIP (le ZIP de Phil Katz pour systèmes MSDOS).

Un programme jumeau (unzip(1L)), désarchive les archives zip. Les programmes zip et unzip(1L) peuvent travailler avec des archives produites par PKZIP, et PKZIP et PKUNZIP peuvent travailler avec des archives produites par zip. zip version 2.3 est compatible avec PKZIP 2.04. Notez que PKUNZIP 1.10 ne peut pas extraire des fichiers produits par PKZIP 2.04 ou zip 2.3. Vous devez utiliser PKUNZIP 2.04g ou unzip 5.0p1 (ou une version ultérieure) pour les extraire.

Pour obtenir une aide brève sur zip et unzip, lancez-le sans spécifier de paramètre sur la ligne de commande.

Le programme est utile pour empaqueter plusieurs fichiers afin de les distribuer, les archiver et pour économiser de l'espace disque en compactant temporairement des fichiers ou dossiers inutilisés.

Le programme zip met un ou plusieurs fichiers compactés dans une seule archive zip, ainsi que diverses informations sur les fichiers (nom, chemin, date, heure de la dernière modification, protection, et données de contrôle pour vérifier l'intégrité de l'archive). Une structure complète de dossiers peut être empaquetée dans une archive zip en une seule commande. Des niveaux de compactage de 2 :1 à 3 :1 sont courants pour des fichiers texte. zip a une méthode de compactage (déflation) et peut aussi empaqueter des fichiers sans les compacter. zip choisit automatiquement la meilleure des deux méthodes pour chaque fichier à compacter.

Quand le nom d'une archive zip existante est fourni, zip remplacera les entrées de même nom dans l'archive zip et ajoutera des entrées pour les nouveaux noms. Par exemple, si foo.zip existe et contient foo/file1 et foo/file2, et le dossier foo contient les fichiers foo/file1 et foo/file3, alors :

zip -r foo foo

va remplacer foo/file1 dans foo.zip et ajouter foo/file3 à foo.zip. Après cela, foo.zip contiendra foo/file1, foo/file2, et foo/file3, avec foo/file2 inchangé entretemps.

Si la liste des fichiers est spécifiée comme -@, [Pas sur MacOS] zip prend la liste des fichiers en entrée à partir de l'entrée standard. Sous UNIX, cette option est très puissante en conjonction avec la commande find(1). Par exemple, pour archiver tous les fichiers source C dans le dossier courant et tous les sous-dossiers :

find . -name "*.[ch]" -print | zip source -@

(remarquez les guillemets pour éviter que l'environnement ne développe le *). zip accepte aussi un seul tiret (« - ») comme nom de fichier zip, auquel cas le fichier zip sera écrit vers la sortie standard, permettant de le renvoyer vers un autre programme. Par exemple :

zip -r - . | dd of=/dev/nrst0 obs=16k

écrirait le fichier zip directement sur une bande avec la taille de bloc spécifiée dans le but de faire une copie de sauvegarde du dossier courant.

zip accepte aussi un seul tiret (« - ») comme nom du fichier à compacter, auquel cas le fichier sera lu depuis l'entrée standard, permettant à zip de recevoir les données depuis un autre programme. Par exemple :

tar cf - . | zip backup -

compacterait la sortie de la commande tar dans le but d'archiver le dossier courant. Ceci permet généralement une meilleure compactage que l'exemple précédent qui utilisait l'option -r, car zip utilise la redondance entre différents fichiers. L'archive peut être restaurée en utilisant la commande

unzip -p backup | tar xf -

Quand aucun fichier zip n'est donné et si stdout n'est pas un terminal, zip agit comme un filtre, compactant l'entrée standard vers la sortie standard. Par exemple,

tar cf - . | zip | dd of=/dev/nrst0 obs=16k

équivaut à

tar cf - . | zip - - | dd of=/dev/nrst0 obs=16k

Les archives zip créées de cette façon peuvent être extraites avec le programme funzip qui est fourni par le paquetage unzip, ou par gunzip qui est fourni par le paquetage gzip. Par exemple :

dd if=/dev/nrst0 ibs=16k | funzip | tar xvf -

quand il modifie une archive zip existante, zip va écrire un fichier temporaire avec le nouveau contenu, et ne remplacera l'ancien que quand le processus de création de la nouvelle version est terminé sans erreur.

Si le nom de l'archive zip ne contient pas d'extension, une extension .zip est ajoutée. Si le nom contient déjà une extension autre que .zip l'extension est conservée sans changement.

OPTIONS

[Pour les systèmes utilisant EBCDIC] Traduit le fichier en format ASCII.
Crée une archive auto-extractible. Une archive auto-extractible est créée en préfixant avec le code SFX une archive existante. L'option -A dit à zip d'ajuster les points d'entrée stockés dans l'archive pour prendre en compte ces données précédentes.

Remarque : les archives auto-extractibles pour les Amiga sont un cas particulier. A ce jour, seul le port de Zip pour Amiga peut faire et mettre à jour ces ajustements correctement sans corruption. -J peut être utilisé pour enlever le code SFX si d'autres mises à jour doivent être faites.

[VM/CMS et MVS] force une lecture binaire des fichiers (texte par défaut).
[TANDEM] règle les options de formatage Edit/Enscribe avec n défini comme
bit 0 : Ne pas ajouter de délimiteur (Edit/Enscribe)
bit 1 : Utiliser LF plutôt que CR/LF comme délimiteur (Edit/Enscribe)
bit 2 : Ajouter des espaces aux enregistrements jusqu'à la longueur maximale d'enregistrement (Enscribe)
bit 3 : Enlève les espaces (Enscribe)
bit 8 : Force une lecture grande de 30K (Expand) sur les fichiers non structurés.
Utilise le chemin spécifié path comme archive zip temporaire. Par exemple :
zip -b /tmp stuff *
mettra l'archive temporaire zip dans le dossier /tmp, écrasant stuff.zip dans le dossier courant à la fin de l'opération. Cette option n'est utile que lors de la mise à jour d'une archive existante, et que le système de fichiers qui la contient n'a pas assez d'espace pour contenir à la fois l'ancienne et la nouvelle archive en même temps.
Ajoute une ligne de commentaire à chaque fichier. Les opérations (ajout, mise à jour) sont d'abord faites, puis le prompt demande une ligne de commentaire pour chaque fichier. entrez le commentaire suivi d'Entrée, ou seulement Entrée pour ne pas mettre de commentaire.
Efface des entrées d'une archive zip. Par exemple :
zip -d foo foo/tom/junk foo/harry/\* \*.o
supprimera les entrées foo/tom/junk, tous les fichiers commençant par foo/harry/, et tous les fichiers finissant par .o (dans tous les chemins). Remarquez que l'expansion du chemin par l'environnement à été inhibée avec des anti-slash, de manière que zip puisse voir les astérisques, permettant à zip de chercher dans le contenu de l'archive zip plutôt que dans celui du dossier courant.
Sous MSDOS, -d respecte la casse quand il cherche des noms dans l'archive zip. Ceci exige que les noms de fichiers soient saisis en majuscules si ils ont été archivés par PKZIP sur un système MSDOS.
[MacOS] Inclut seulement le zone données des fichiers zippés dans l'archive. C'est utile pour exporter des fichiers vers d'autres systèmes d'exploitation. Les zones de ressource seront complètement ignorées.
Ne crée pas d'entrées dans l'archive zip pour les dossiers. Des entrées pour les dossiers sont créées par défaut afin de sauvegarder leurs attributs dans l'archive. La variable d'environnement ZIPOPT peut être utilisée pour changer les options par défaut. Par exemple sous Unix avec sh :
ZIPOPT="-D"; export ZIPOPT
(La variable ZIPOPT peut être utilisée pour toutes les options sauf -i et -x et peut comporter plusieurs options.) L'option -D est un raccourci pour -x "*/" mais cette dernière ne peut être mise dans la variable ZIPOPT.
Crypte le contenu de l'archive zip en utilisant un mot de passe qui est saisi en ligne de commande par un prompt (ceci n'est pas renvoyé ; si l'erreur standard n'est pas une tty, zip va s'arrêter avec une erreur). Le mot de passe est demandé deux fois pour éviter les erreurs de frappe.
[OS/2] Utilise l'attribut étendu .LONGNAME (s'il existe) comme nom de fichier.
Remplace (rafraîchit) une entrée existante dans l'archive zip seulement s'il a été modifié plus récemment que la version contenue dans l'archive zip ; contrairement à l'option (-u) celle-ci n'ajoutera pas de fichiers qui ne sont pas encore dans l'archive zip. Par exemple :
zip -f foo
Cette commande devrait être lancée à partir du même dossier que celui d'où la commande zip originelle a été lancée, puisque les chemin stockés dans les archives zip sont toujours relatifs.
Remarquez que la variable d'environnement de fuseau horaire TZ doit être réglée en accord avec le fuseau horaire local afin que les options -f , -u et -o fonctionnent correctement.
Les raisons à ceci sont un peu subtiles mais ont un rapport avec les différences entre le format des dates Unix (toujours en GMT) et la plupart des autres systèmes d'exploitation (toujours en temps local) et la nécessité de comparer les deux. Une valeur typique de TZ est « MET-1MEST » (fuseau Europe Centrale avec ajustement automatique des heures d'été/hiver).
Répare l'archive zip. Cette option peut être utilisée si certains morceaux de l'archive manquent. Le résultat n'étant pas garanti, vous DEVEZ faire une copie de sauvegarde de l'archive d'origine avant.
Quand l'option est répétée comme ceci -FF les tailles de compactage données par l'archives ne sont pas prises en compte et zip scanne à la recherche de marques spéciales pour identifier les limites des membres de l'archive. L'option seule -F est plus fiable si l'archive n'est pas très endommagée, par exemple si elle a seulement été tronquée, donc essayez cette option d'abord.
Aucune de ces options ne va récupérer des archives qui ont été incorrectement transférées en mode ASCII au lieu de binaire. Après la réparation, l'option -t de unzip peut afficher que quelques fichiers ont un mauvais CRC. De tels fichiers ne peuvent être restaurés ; vous pouvez les supprimer de l'archive en utilisant l'option -d de zip.
Ajoute à l'archive zip spécifiée, plutôt que de créer une nouvelle. Si cette opération échoue, zip tente de remettre l'archive dans son état d'origine. Si la restauration échoue, l'archive peut être corrompue. Cette option est ignorée quand il n'existe pas d'archive ou quand au moins un membre de l'archive doit être mis à jour ou supprimé.
Affiche l'aide sur zip (ceci apparaît aussi si zip est lancé sans paramètres)
Inclut seulement les fichiers spécifiés, exemple :
zip -r foo . -i \*.c
qui va seulement inclure les fichiers se terminant par .c dans le dossier courant et ses sous-dossiers. (remarque pour les utilisateurs de PKZIP : la commande équivalente est
pkzip -rP foo *.c
PKZIP ne permet pas la récursion dans d'autres dossiers que le courant.) L'antislash inhibe la substitution du nom de fichier par l'environnement, de manière que la recherche de noms soit faite par zip dans tous les niveaux de dossier.
Aussi possible :
zip -r foo . -i@include.lst
qui va seulement inclure les fichiers dans le dossier courant et ses sous-dossiers qui correspondent aux types dans le fichier include.lst.
[Acorn RISC OS] Ne scanne pas les fichiers Image. Quand utilisé, zip ne va pas considérer les fichiers Image (ex. partitions DOS ou archives Spark quand SparkFS est chargé) comme des dossiers. Il les stockés comme un seul fichier.

Par exemple, si SparkFS est chargé, le zippage d'une archive Spark donnera un fichier zip contenant un dossier (et son contenu), tandis qu'un utilisant l'option « I » donnera un fichier zip contenant une archive Spark. De fait ce second cas sera aussi obtenu si SparkFS n'est pas chargé.

Ne stocke que le nom du fichier sauvé (jette le chemin), et ne stocke pas les noms de dossiers. Par défaut, zip stocke le chemin complet (relatif au dossier courant).
[MacOS] stocke le chemin complet (+ le nom de volume). Le chemin complet incluant le nom de volume sera stocké. Par défaut seul le chemin relatif est stocké.
Enlève toute donnée préfixée à l'archive (ex. du code SFX).
Tente de convertir les noms et chemins en conformité avec MSDOS, stocke seulement les attributs MSDOS (seulement le droit d'écriture utilisateur sur UNIX), et marque les entrées comme faites sous MSDOS (même si ce n'est pas le cas) ; pour une compatibilité avec PKUNZIP qui ne peut gérer certains noms comme ceux avec deux points.
Traduit le caractère de fin de ligne Unix LF dans la convention MSDOS CR LF. Cette option ne doit pas être utilisée sur des fichiers binaires. Cette option peut être utilisée sous Unix si le fichier zip est destiné à PKUNZIP sous MSDOS. Si les fichiers ont déjà des CR LF, cette option ajoute un CR supplémentaire. Ceci assure que unzip -a sous Unix restaure une copie exacte du fichier originel, pour annuler l'effet de zip -l.
Traduit le caractère de fin de ligne MSDOS CR LF dans celui d'Unix LF. Cette option ne doit pas être utilisée sur des fichiers binaires. Cette option peut être utilisée sous MSDOS si le fichier zip est destiné à unzip sous Unix.
Affiche la licence de zip.
Déplace les fichiers spécifiés dans l'archive zip  ; de fait, ceci supprime les fichiers et dossier archivés à la fin de la création de l'archive zip spécifiée. Si un dossier devient vide à la suite de la suppression de fichiers, il est lui aussi supprimé. Aucune suppression n'est effectuée tant que l'archive zip n'a pas été créée sans erreur. Cette option est utile pour économiser l'espace disque mais est potentiellement dangereuse, il est par conséquent recommandé de l'utiliser en combinaison avec -T afin de tester l'archive avant de supprimer tous les fichiers en entrée.
Ne compacte pas les fichiers nommés avec les suffixes donnés. Ces fichiers sont simplement stockés (0% compactage) dans le fichier zip résultant, afin que zip ne perde pas de temps à essayer de les compacter. Les suffixes sont séparés par des : ou des ;. Par exemple :
zip -rn .Z :.zip :.tiff :.gif :.snd foo foo
va copier tout foo dans foo.zip, mais stockera tous les fichiers finissant par .Z, .zip, .tiff, .gif, ou .snd sans essayer de les compacter (les fichiers image et son ont souvent leur propre méthode spéciale de compactage). Par défaut, zip ne compacte pas les fichiers dont les extensions sont dans la liste .Z :.zip :.zoo :.arc :.lzh :.arj. De tels fichiers sont stockés directement dans l'archive. La variable d'environnement ZIPOPT peut être utilisée pour changer les options par défaut. Par exemple sous Unix avec csh :
setenv ZIPOPT "-n .gif :.zip"
Pour essayer de compacter tous les fichiers, utilisez :
zip -n  : foo
L'option de compactage maximal -9 tente aussi de compacter tous les fichiers sans tenir compte de l'extension.
Sur les systèmes Acorn RISC OS les suffixes sont réellement de types de fichiers (au format 3 digits hexadécimaux). Par défaut, zip ne compacte pas les fichiers dont les types sont dans la liste DDC :D96 :68E (cad. Archives, fichiers CFS et fichiers PackDir).
[Amiga, MacOS] Sauve les notes de fichier Amiga ou MacOS comme commentaires de l'archive zip. Elles peuvent être restaurées en utilisant l'option -N de unzip. si -c est aussi utilisé, le prompt de saisie de commentaires ne sera proposé que pour les fichiers n'ayant pas de notes.
Met la date de dernière modification de l'archive zip à la plus ancienne des dates trouvées dans les entrées composant l'archive zip. Ceci peut être fait sans aucune autre opération, si désiré. Par exemple :
zip -o foo
va changer la date de dernière modification de l'archive foo.zip à la plus ancienne des dates trouvées dans les entrées composant foo.zip.
utilise password pour encrypter les entrées du fichier zip (s'il y en a) CECI N'EST PAS SÛR ! Beaucoup de systèmes d'exploitation multi-utilisateurs fournissent des outils pour qu'un utilisateur voie la ligne de commande courante d'un autre utilisateur ; même sur un système mono-utilisateur il y a toujours le risque qu'on lise par-dessus votre épaule. Stocker le mot de passe dans la ligne de commande d'un script automatisé est encore pire. quand c'est possible, utilisez toujours le prompt interactif pour entrer les mots de passe. (Et si la sécurité est vraiment importante, utilisez un cryptage fort comme PGP (NDT : ou GnuPG) plutôt que le cryptage relativement faible fourni dans les outils zip standard.)
Mode silencieux ; élimine les messages d'information et les prompts pour commentaires. (Utile, par exemple, dans les scripts et les tâches d'arrière-plan).
[QDOS] stocke l'information sur le fichier dans son en-tête avec n défini comme ceci
bit 0 : N'ajoute pas d'en-têtes aux fichiers
bit 1 : Ajoute des en-têtes à tous les fichiers
bit 2 : N'attend pas d'appuyer sur une touche pour terminer
Parcourt la structure de dossiers récursivement ; par exemple :
zip -r foo foo
Dans ce cas, tous les fichiers et dossiers dans foo sont sauvegardés dans une archive zip nommée foo.zip, incluant les fichiers dont les noms commencent par ".", puisque la récursion n'utilise pas le mécanisme de substitution de l'environnement. Si vous ne voulez inclure qu'un sous-groupe de fichiers dans le dossier foo et ses sous-dossiers, utilisez l'option -i pour spécifier le motif des fichiers à inclure. Vous ne devriez pas utiliser -r avec le nom ".*", puisqu'il correspond à ".." ce qui fera zipper le contenu du dossier parent (ce qui n'est probablement pas le but recherché).
Parcourt la structure de dossiers récursivement à partir du dossier courant ; par exemple :
zip -R foo '*.c'
Dans ce cas, tous les fichiers de type *.c dans l'arborescence commençant dans le dossier courant sont archivés dans une archive zip nommée foo.zip. Remarque pour le utilisateurs de PKZIP : la commande équivalente est
pkzip -rP foo *.c
[MSDOS, OS/2, WIN32 et ATARI] Inclut les fichier système et cachés.
[MacOS] Inclut les fichiers invisibles pour le finder, qui sont normalement ignorés.
Ignore les fichiers modifiés avant la date spécifiée, où mm est le mois (0-12), dd est le jour du mois (1-31), et yyyy est l'année. Le format ISO 8601 de date yyyy-mm-dd est aussi accepté. Par exemple :
zip -rt 12071991 infamy foo

zip -rt 1991-12-07 infamy foo

ajoute tous les fichiers dans foo et ses sous-dossiers qui ont été modifiés le 7 Décembre 1991 ou postérieurement, dans l'archive zip infamy.zip.
Ignore les fichiers modifiés avant ou à la date spécifiée, où mm est le mois (0-12), dd est le jour du mois (1-31), et yyyy est l'année. Le format ISO 8601 de date yyyy-mm-dd est aussi accepté. Par exemple :
zip -rtt 11301995 infamy foo

zip -rtt 1995-11-30 infamy foo

ajoute tous les fichiers dans foo et ses sous-dossiers qui ont été modifiés avant le 30 Novembre 1995, dans l'archive zip infamy.zip.
Teste l'intégrité du nouveau fichier zip. Si le test échoue, l'ancien fichier est inchangé et (avec l'option -m ) aucun fichier en entrée n'est supprimé.
Remplace (met à jour) une entrée existante dans l'archive zip seulement si elle a été modifiée plus récemment que la version qui est déjà dans l'archive zip. Par exemple :
zip -u stuff *
ajoute tout nouveau fichier dans le dossier courant, et met à jour tout fichier modifié depuis la dernière création/modification de l'archive zip stuff.zip (remarquez que zip ne va pas essayer de mettre stuff.zip dans lui-même qui vous faites ceci).
Remarquez que l'option -u sans paramètres agit comme l'option -f (rafraîchir).
Mode bavard ou affichage du diagnostic des informations de version.
Normalement, quand utilisée pour de vraies opérations, cette option active l'affichage d'un indicateur de progression pendant la compactage et demande les détails sur des problèmes de structure du fichier zip.
Quand -v est le seul paramètre de la ligne de commande, et que stdout n'est pas redirigé vers un fichier, un écran de diagnostic est affiché. En plus de l'en-tête de l'écran d'aide avec le nom du programme, la version, et la date de sortie, quelques adresses de la page mère de Info-ZIP et de sites de distribution sont donnés. Puis des informations sur l'environnement sont affichées (type de compilateur et version, système d'exploitation, date de compilation et paramètres optionnels utilisés pour créer l'exécutable zip.
[VMS] Sauve les attributs de fichier VMS. Les archives zip créées avec cette option ne sont généralement pas utilisables sur d'autres systèmes.
[VMS] Ajoute le numéro de version des fichiers au nom, incluant ainsi de multiples versions des fichiers. (Par défaut : utilise seulement la version la plus récente des fichiers spécifiés).
Exclut les fichiers spécifiés, comme ceci :
zip -r foo foo -x \*.o
va inclure le contenu de foo dans foo.zip en excluant tous les fichiers qui finissent par .o. L'antislash évite la substitution de noms par l'environnement, de manière que la recherche de noms soit faite par zip à tous les niveaux de dossier.
Aussi possible :
zip -r foo foo -x@exclude.lst
qui va inclure le contenu de foo dans foo.zip en excluant tous les fichiers dont le motif est dans le fichier exclude.lst.
N'enregistre pas les attributs de fichier supplémentaires (EA sous OS/2, uid/gid et temps de fichiers sous Unix).
Stocke les liens symboliques en tant que tels dans l'archive zip, plutôt que de compacter et stocker le fichier reféré par le lien (UNIX seulement).
Prompte la saisie d'un commentaire multi-ligne pour l'archive zip entière. Ce commentaire se termine par une ligne contenant seulement un point, ou une condition de fin de fichier (^D sous UNIX, ^Z sous MSDOS, OS/2, et VAX/VMS). Le commentaire peut être lu depuis un fichier :
zip -z foo < foowhat
-#
Ajuste la vitesse de compactage à partir du chiffre spécifié #, où -0 indique aucun compactage (archivage de tous les fichiers), -1 indique la méthode de compactage la plus rapide (compactage plus faible) et -9 indique la méthode de compactage la plus lente (compactage optimal, ignore la liste des suffixes). Le niveau de compactage par défaut est -6.
-!
[WIN32] Utilise les droits (si obtenus) pour gérer tous les aspects de la sécurité de WinNT.
-@
Prend la liste des fichiers à archiver à partie de l'entrée standard. Un nom de fichier par ligne seulement.
-$
[MSDOS, OS/2, WIN32] Inclut le nom de volume pour le lecteur contenant le premier fichier à compacter. Si vous voulez seulement inclure le nom 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 (si elle n'existe pas) et archive tous les fichiers du dossier courant dedans, en les compactant (le suffixe .zip est ajouté automatiquement, sauf si le nom de l'archive contient déjà un point ; ceci permet la spécification explicite d'autres suffixes).

de par la manière dont l'environnement fait la substitution de caractères, les fichiers commençant par « . » ne sont pas inclus ; pour les inclure :

zip stuff .* *

Même ceci ne va pas inclure les sous-dossiers à partir du dossier courant.

Pour zipper un dossier entier, la commande :

zip -r foo foo

crée l'archive foo.zip, contenant tous les fichiers et dossiers du dossier foo qui est dans le dossier courant.

Vous pouvez vouloir faire une archive zip qui contient les fichiers dans foo, sans enregistrer le nom du dossier, foo. Vous pouvez utiliser l'option -j pour abandonner les chemins, comme ceci :

zip -j foo foo/*

Si vous avez peu d'espace disque, il se peut qu'il n'y en ait pas assez pour contenir à la fois le dossier à compacter et son archive zip. Dans ce cas, vous pouvez créer l'archive par étapes en utilisant le paramètre -m. Si foo contient les sous-dossiers 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 lui ajoutent des entrées. À la fin de chaque commande zip, la dernière archive créée est supprimée, libérant de la place pour l'exécution de la suivante.

RECHERCHE DE MOTIF

Cette section ne s'applique qu'à UNIX. Regardez cet espace pour des détails sur des opérations MSDOS et VMS.

Les environnements UNIX (sh(1) et csh(1)) font de la substitution de nom de fichier sur les paramètres de commande. Les caractères spéciaux sont :

?
équivaut à tout caractère unique
*
équivaut à tout paquet de caractères (même de taille 0)
[]
équivaut à tout caractère dans la plage indiquée entre les crochets (exemple : [a-f], [0-9]).

Quand ces caractères sont trouvés (sans être protégés avec un antislash ou des guillemets), l'environnement va recherche les fichiers à partir du dossier courant qui correspondent au motif, et remplacer le paramètre avec la liste des noms trouvés.

Le programme zip peut faire la même recherche sur les noms qui sont dans l'archive zip qui va être modifiée ou, dans le cas des paramètres -x (exclure) ou -i (inclure), sur la liste des fichiers à opérer, en utilisant des anti-slashes ou des guillemets pour dire à l'environnement de ne pas faire l'expansion des noms. En général, quand zip rencontre un nom dans la liste des fichiers à archiver, il commence par le chercher dans le système de fichiers. S'il le trouve, il l'ajoute à la liste des fichiers à traiter. Sinon, il le cherche dans l'archive zip en cours de modification (si elle existe), en utilisant les caractères spéciaux décrits ci-dessus s'ils sont présents. Pour chaque fichier trouvé, il l'ajoute à la liste des fichiers à traiter, sauf si le nom est aussi dans ceux listés par le paramètre -x, ou n'est pas dans ceux listés par le paramètre -i.

La recherche de motif inclut le chemin, donc des motifs comme \*.o équivalent à des fichiers finissant par « .o », quel que soit le chemin les préfixant. Remarquez que l'antislash doit précéder tout caractère spécial (ex. ?*[]), ou le paramètre entier être encadré par des guillemets ("").

En général, utilisez antislash pour demander à zip de rechercher un motif avec les options -f (rafraîchir) et -d (supprimer), et parfois après un -x (exclure) quand il est utilisé avec une opération appropriée (ajouter, -u, -f, ou -d).

ENVIRONNEMENT

contient les options par défaut qui seront prises en compte quand vous utilisez zip
[Pas sur RISC OS et VMS] voir ZIPOPT
[RISC OS] voir ZIPOPT
[RISC OS] contient les extensions séparées par un  : qui vont faire que les fichier natifs comportant une de ces extensions sera ajouté à l'archive zip avec le nom de base et l'extension intervertis. zip
[VMS] voir ZIPOPT

VOIR AUSSI

compress(1), shar(1L), tar(1), unzip(1L), gzip(1L)

DIAGNOSTICS

Les valeurs de retour (ou niveau d'erreur) sont proches de celles définies par PKWARE et prennent les valeurs suivantes, sauf sous VMS :

0
normal ; aucune erreur ou avertissement détecté.
2
fin inattendue du fichier zip.
3
une erreur générique dans le fichier zip a été détectée. L'opération peut cependant s'être terminée correctement ; quelques fichiers zip créés avec d'autres archiveurs et abîmés peuvent être simplement corrigés.
4
zip n'a pas pu allouer de la mémoire pour un ou plusieurs tampons pendant son initialisation.
5
une erreur grave dans le fichier zip a été détectée. L'opération a probablement immédiatement échoué.
6
l'entrée est trop grande pour être morcelé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ématurement avec Contrôle-C (ou similaire)
10
zip a trouvé une erreur en utilisant un fichier temporaire
11
erreur de lecture ou de recherche
12
zip n'a rien à faire
13
le fichier zip n'existe pas ou est vide
14
erreur lors de l'écriture d'un fichier
15
zip n'a pas réussi à créer le fichier de sortie
16
mauvais paramètre dans le ligne de commande
18
zip n'a pas pu ouvrir un fichier spécifié en entrée

VMS interprète les valeurs de retour standard Unix (ou PC) comme d'autres choses, qui n'ont aucun rapport, donc zip les remplace par des codes de statut du style VMS. Le remplacement se fait de manière suivante : 1 (succès) pour une sortie normale,
et (0x7fff000? + 16*code_de_retour_normal_de_zip) pour toutes les erreurs, où le « ? » est 0 (avertissement) pour la valeur zip de 12, 2 (erreur) pour les valeurs zip de 3, 6, 7, 9, 13, 16, 18, et 4 (erreur fatale) pour les restantes.

BOGUES

zip 2.3 n'est pas compatible avec PKUNZIP 1.10. Utilisez zip 1.1 pour produire des archives zip pouvant être extraites par PKUNZIP 1.10.

Les archives zip faites avec zip 2.3 ne doivent pas être mises à jour par zip 1.1 ou PKZIP 1.10, si elles contiennent des membres cryptés ou si elles ont été produites à travers un tube (NDT:pipe) ou un périphérique à accès continu. Les anciennes versions de zip ou PKZIP auraient créé une archive de format incorrect. Les anciennes versions peuvent lister le contenu d'un fichier zip mais ne peuvent en aucune façon l'extraire (de par le nouveau algorithme de compactage). Si vous n'utilisez pas le cryptage et utilisez des fichiers normaux sur disques, vous n'avez pas besoin de vous occuper de ce problème.

Sous VMS, tous les formats de fichiers étranges ne sont pas traités correctement. Seules les archives zip au format stream-LF sont censées fonctionner avec zip. Les autres peuvent être converties en utilisant le programme BILF de Rahul Dhesi. Cette version de zip gèrent une partie de la conversion de manière interne. Quand vous utilisez Kermit pour transférer des fichiers zip depuis Vax vers MSDOS, saisissez « set file type block » sur le Vax. quand vous transférez depuis MSDOS vers Vax, saisissez « set file type fixed » sur le Vax. Dans les deux cas, saisissez « set file type binary » sous MSDOS.

Sous VMS, zip bloque sur des spécifications de fichiers qui utilisent la syntaxe DECnet foo : :*.*.

Sous OS/2, zip ne peut pas trouver certains noms, comme ceux qui comprennent un point d'exclamation ou un dièse. Ceci est un bug de OS/2 lui-même : le programme 32-bit DosFindFirst/Next ne trouve pas ces noms. D'autres programmes comme GNU tar sont aussi affectés par ce bug.

Sous OS/2, la quantité d'Attributs Étendus affichés par DIR est (pour des raisons de compatibilité) celle retournée par la version 16-bit de DosQueryPathInfo(). Sinon OS/2 1.3 et 2.0 auraient rapporté des tailles de EA différentes lors d'un DIR. Cependant, la structure retournée par la version 32-bit de DosQueryPathInfo() est un peu différente, elle utilise des octets de remplissage et des pointeurs de liens (c'est une liste chaînée) pour avoir tous les champs en frontière de 4 octets afin d'être portable vers les futures versions RISC OS/2. Donc la valeur donnée par zip (qui utilise la taille de ce mode 32-bit) diffère de celle donnée par DIR. zip stocke le format 32-bit pour être portable, même la version compilée en 16-bit avec MS-C sous OS/2 1.3, donc même cette version donne la taille du mode 32-bit.

AUTEURS

Copyright (C) 1990-1997 Mark Adler, Richard B. Wales, Jean-loup Gailly, Onno van der Linden, Kai Uwe Rommel, Igor Mandrichenko, John Bush and Paul Kienitz. Permission est donnée à tout individu ou institution d'utiliser, copier, ou redistribuer ce logiciel dès lors que tous les fichiers d'origine sont inclus, que ce n'est pas vendu pour des bénéfices, et que cette notice sur le copyright est incluse.

COMME TOUT CE QUI EST LIBRE, ZIP ET SES UTILITAIRES ASSOCIÉS SONT FOURNIS EN L'ÉTAT ET SANS AUCUNE GARANTIE DE QUELQUE SORTE, NI IMPLICITE NI EXPLICITE. DANS AUCUN CAS LES PROPRIÉTAIRES DU COPYRIGHT NE PEUVENT ÊTRE POURSUIVIS POUR QUELQUE DOMMAGE RÉSULTANT DE L'UTILISATION DE CE LOGICIEL.

Veuillez envoyer les rapports de bogues et commentaires par email à : zip-bugs@lists.wku.edu. Pour les rapports de bogues, merci d'inclure la version de zip (voir zip-h ), les options utilisées pour le compiler (voir zip-v ), la machine et le système d'exploitation utilisés, et autant de compléments d'information que possible.

REMERCIEMENTS

Merci à R. P. Byrne pour son programme Shrink.Pas, qui a inspiré ce projet, et auquel l'algorithme de ratatinage à été volé ; à Phil Katz pour avoir mis dans le domaine public le format de fichier zip, le format de compactage, et l'extension de nom .ZIP, et pour avoir accepté des changements mineurs dans le format du fichier ; à Steve Burg pour ses clarifications sur le format deflate ; à Haruhiko Okumura et Leonid Broukhis pour avoir donné des idées utiles pour l'algorithme de compactage ; à Keith Petersen, Rich Wales, Hunter Goatley et Mark Adler pour la mise à disposition d'une liste de diffusion et d'un site ftp pour l'utilisation du groupe Info-ZIP ; et plus particulièrement, au groupe Info-ZIP lui-même (listé dans le fichier infozip.who) sans les efforts duquel tester et corriger des bogues d'une version portable de zip n'aurait pas été possible. Enfin nous devrions remercier (blâmer) le premier modérateur de Info-ZIP, David Kirschbaum, pour nous avoir mis dans ce guêpier. Cette page de manuel a été réécrite pour UNIX par R. P. C. Rodgers. Elle a été traduite en 2001 par José JORGE <jose.jorge@oreka.com>.

14 août 1999 Info-ZIP (v2.3)