Compresser et décompresser des fichiers ZIP sous Linux, avec les commandes zip et unzip
Sommaire
- I. Présentation
- II. Installation des paquets ZIP et UNZIP
- III. Compresser des fichiers en archive ZIP
- A. Premiers pas avec la commande ZIP sous Linux
- B. Compresser un répertoire complet en archive ZIP
- C. Ajouter uniquement les fichiers d'un certain type
- D. Exclure des fichiers lors de la création du ZIP
- E. Comment protéger par mot de passe l'archive ZIP ?
- F. Ajuster le niveau de compression
- G. Ajouter un fichier à une archive ZIP existante
- IV. Décompresser une archive ZIP
- V. Conclusion
I. Présentation
Dans ce tutoriel, nous allons apprendre à compresser et décompresser des fichiers ZIP sous Linux. Bien qu'il existe d'autres formats d'archives, comme TAR, le format ZIP reste le format le plus populaire lorsque l'on cherche à compresser des fichiers et des dossiers.
Que ce soit sur Windows ou sur Linux, le format ZIP est pris en charge et en tant qu'administrateur système, vous devez être capable de compresser et décompresser une archive ZIP sous Linux. C'est ce que nous allons voir aujourd'hui ! Une machine Debian sera utilisée, mais vous pouvez utiliser une autre distribution.
Version initiale de l'article : 14 février 2012
II. Installation des paquets ZIP et UNZIP
Afin de pouvoir compresser et décompresser des archives ZIP sous Linux, vous devez commencer par installer les bons paquets ! Autrement dit, vous devez installer les paquets "zip" et "unzip", comme ceci :
sudo apt-get update
sudo apt-get install zip unzip
Une fois que c'est fait, vous pouvez passer à la suite.
III. Compresser des fichiers en archive ZIP
A. Premiers pas avec la commande ZIP sous Linux
Commençons par étudier le fonctionnement de la commande "zip", dont voici la syntaxe :
zip <option> <nom du fichier ZIP à créer> <fichiers sources à ajouter>
Afin d'effectuer un test, nous allons générer 10 fichiers : document1.txt, document2.txt, etc... jusqu'à document10.txt. Ces fichiers seront ensuite ajoutés à une archive ZIP.
Nous pouvons utiliser cette commande pour créer les fichiers :
touch document{1..10}.txt
Voilà, 10 fichiers viennent d'être créés dans le répertoire courant.
Désormais, nous allons créer une archive ZIP nommée "documents" qui va contenir ces 10 fichiers :
zip documents document1.txt document2.txt document3.txt document4.txt <etc...> document10.txt
# Que l'on peut aussi raccourcir de cette façon :
zip documents document*.txt
Cette commande nous permet bien d'obtenir le fichier "documents.zip" :
D'ailleurs, nous pourrions afficher le contenu de l'archive "documents.zip", ceci permettrait de voir réellement ce qu'elle contient. Ceci peut s'avérer utile pour regarder le contenu d'une archive ZIP avant de la décompresser. Dans ce cas, nous allons utiliser l'option "-sf" pour Show Files :
zip -sf documents.zip
Une autre façon de faire, c'est d'utiliser la commande "zipinfo" fournie avec le paquet zip :
zipinfo documents.zip
B. Compresser un répertoire complet en archive ZIP
Nous allons continuer à apprendre à utiliser la commande zip avec d'autres exemples. Plutôt que d'ajouter des fichiers à une archive ZIP, parfois, il est plus rapide et plus simple d'ajouter tout un dossier.
Si l'on souhaite compresser tout le répertoire "/home/flo/zip" afin d'obtenir le fichier "dossier.zip", nous allons utiliser la commande suivante :
zip -r dossier /home/flo/zip/
Il est à noter que l'option "-r" indique la récursivité, cela signifie que l'archive ZIP va contenir tous les fichiers et dossiers présents dans "/home/flo/zip/".
C. Ajouter uniquement les fichiers d'un certain type
L'utilisation du caractère "*" (wildcard) peut s'avérer très utile pour ajouter à une archive ZIP uniquement les fichiers correspondant à un certain type. Le caractère "*" sera remplacé par tous les caractères (pour 1 ou plusieurs caractères).
Par exemple, si l'on souhaite ajouter à l'archive ZIP tous les fichiers ".txt", nous utiliserons cette syntaxe :
zip -r fichierstxt *.txt
Pour l'exemple précédent basé sur l'ajout de 10 fichiers à une archive ZIP, ceci peut aussi s'avérer utile :
zip documents document*.txt
D. Exclure des fichiers lors de la création du ZIP
A l'inverse, nous pourrions chercher à exclure certains fichiers lors de la création de l'archive ZIP. Par exemple, si l'on a un fichier "document.docx" aux côtés de nos fichiers "document.txt", nous pouvons l'exclure grâce à l'option "-x". L'objectif sera d'exclure tous les fichiers ".docx".
Voici la syntaxe à utiliser (avec le symbole *, on cible le contenu du répertoire "/home/flo/zip/".
zip documentstxt /home/flo/zip/* -x \*.docx
Le résultat ci-dessous montre bien que le fichier n'a pas été ajouté à l'archive ZIP :
E. Comment protéger par mot de passe l'archive ZIP ?
Par défaut, les archives ZIP ne sont pas protégées par un mot de passe, donc n'importe qui peut accéder au contenu de l'archive compressée. Sachez que l'option "-e" peut nous permettra de chiffrer l'archive ZIP et d'ajouter une protection par mot de passe.
zip -e documents document1.txt document2.txt document3.txt
Ce qui donne le résultat suivant :
Nous pouvons toujours lister le contenu de l'archive ZIP, mais, il sera impossible de décompresser l'archive ZIP sans connaître le mot de passe.
F. Ajuster le niveau de compression
Lorsque l'on crée une archive ZIP, nous pouvons ajuster le niveau de compression. Le fait d'utiliser un niveau de compression plus élevé, va permettre de réduire la taille du fichier ZIP obtenu en sortie. Ceci sera également plus gourmand en ressources et en temps pour générer l'archive ZIP.
ZIP prend en charge 9 niveaux de compression, de 1 à 9. Le niveau de compression "9" étant le plus élevé. La valeur "0" est aussi acceptée, mais pour stocker uniquement du contenu, sans aucune compression. Ainsi, si l'on veut utiliser un niveau de compression spécifique, il suffira de le préciser de cette façon :
zip -<0-9> documents document1.txt document2.txt
Par exemple, pour utiliser le niveau de compression maximal :
zip -9 documents document1.txt document2.txt
G. Ajouter un fichier à une archive ZIP existante
Pour finir, nous allons utiliser l'option "-u" pour ajouter un fichier à une archive ZIP existante, sans avoir besoin de "casser" l'archive ZIP pour la refaire. Par exemple, voici comment ajouter le fichier "document.docx" à l'archive ZIP "documentstxt.zip" :
zip -u documentstxt.zip document.docx
IV. Décompresser une archive ZIP
A. Premiers pas avec la commande UNZIP sous Linux
Vous avez téléchargé une archive ZIP d'un projet disponible sur GitHub, et vous ignorez comment décompresser le contenu de cette archive ZIP ? C'est un cas fréquent ! Nous allons voir comment utiliser la commande "unzip" pour décompresser une archive ZIP.
Pour décompresser un fichier, utilisez simplement la commande suivante :
unzip <nom fichier ZIP>
unzip documentstxt.zip
Cette commande décompresse "documentstxt.zip" dans le répertoire courant (vis-à-vis de votre shell).
Sachez qu'avant de décompresser une archive ZIP, vous pouvez lister son contenu, au même titre que l'on peut le faire avec les commandes "zip" et "zipinfo".
unzip -l documentstxt.zip
Nous pouvons visualiser le contenu de l'archive ZIP, avec le poids de chaque fichier, la date et l'heure, ainsi que le nom du fichier. Nous avons aussi une information intéressante : le nombre de fichiers présents dans l'archive ZIP.
B. Décompresser une archive ZIP dans un répertoire spécifique
Si vous souhaitez décompresser une archive ZIP dans un répertoire spécifique de votre machine, plutôt que dans le répertoire courant, utilisez cette syntaxe :
unzip documentstxt.zip -d /chemin/vers/repertoire
Par exemple, nous pouvons décompresser l'archive dans "/tmp" :
unzip documentstxt.zip -d /tmp
C. Décompresser une archive ZIP protégée par mot de passe
Pour décompresser une archive ZIP qui est chiffrée et protéger par un mot de passe, vous avez plusieurs options :
- Utiliser unzip sans option spécifique, et il faudra saisir le mot de passe de l'archive ZIP de façon interactive.
- Utiliser unzip avec l'option "-P" pour spécifier le mot de passe directement dans la console
Au cas où l'archive ZIP "documents.zip" est protégée par le mot de passe "Azerty123", il conviendra d'utiliser cette commande :
unzip -P Azerty123 documents.zip
Décompresser une archive zip protégée par mot de passe :
D. Extraire un fichier spécifique d'une archive ZIP
Si vous souhaitez extraire un fichier d'une archive ZIP sans décompresser toute l'archive ZIP, sachez que c'est possible ! Dans ce cas, il n'y a pas d'option spécifique à utiliser. Vous devez simplement préciser le nom du fichier à extraire (ceci ne le retire pas de l'archive ZIP !).
Par exemple, pour extraire le fichier "document.docx" de l'archive ZIP "documentstxt.zip", voici la commande à exécuter :
unzip documentstxt.zip document.docx
La commande retournera la phrase "extracting: document.docx".
E. Décompresser en masse des archives ZIP
Si vous souhaitez décompresser un ensemble d'archives ZIP en une fois, sachez que c'est possible grâce à l'utilisation du caractère "*" (wildcard). Utilisez seulement la commande suivante :
unzip "*.zip"
Ceci permet de gagner du temps si vous avez beaucoup d'archives ZIP à décompresser. Sinon, vous pouvez spécifier leurs noms de cette façon :
unzip archive1.zip archive2.zip archive3.zip
Vous pouvez aussi coupler cette commande avec l'option "-d" pour spécifier un répertoire de destination.
V. Conclusion
Voilà, nous venons de voir comment compresser et décompresser des archives ZIP sous Linux ! J'espère que ces exemples vous aideront à comprendre comment utiliser les commandes "zip" et "unzip" de manière plus efficace sous Linux !