Maîtriser la commande zip sous Ubuntu : compression et extraction

Introduction

Sous Linux, le format ZIP demeure une solution universelle pour regrouper, compacter et transférer des données en toute simplicité. Cet article passe en revue l’utilitaire zip et son pendant unzip, en détaillant les commutateurs essentiels en environnement de production : mise en place des paquets, traitement récursif d’arborescences, ajustement du taux de compression, extraction ciblée et exclusion sélective de fichiers via le shell.

Déploiement des paquets et création d’une première archive

Avant de manipuler des archives, il convient de s’assurer de la présence des utilitaires nécessaires sur votre distribution Ubuntu à l’aide du gestionnaire APT : apt-get update -qq && apt-get install -y zip unzip.

Installation des utilitaires zip et unzip via apt

Afin de travailler dans un cadre isolé et propre, initialisez un répertoire d’expérimentation avec la commande mkdir -p ~/zip_demo && cd ~/zip_demo.

Création du dossier de travail zip_demo

Générez un premier fichier texte servant d’échantillon grâce à echo "Sample text file 1" > file1.txt.

Génération du fichier file1.txt

Ajoutez un second fichier témoin en exécutant echo "Sample text file 2" > file2.txt.

Génération du fichier file2.txt

L’utilitaire zip rassemble plusieurs entités au sein d’une archive unique au format .zip.
La syntaxe élémentaire prend en premier argument le nom du fichier de sortie (archive.zip), suivi de la liste des éléments à y intégrer (file1.txt et file2.txt).
⚙️ [Options incontournables]

-r : Parcourt et inclut l’intégralité des sous-dossiers et fichiers de manière récursive.
-e : Chiffre le contenu de l’archive en sollicitant un mot de passe à la création.
-u : Met à jour l’archive existante en ne traitant que les fichiers modifiés ou récents.
-m : Supprime automatiquement les fichiers sources une fois la compression terminée (déplacement).
-d : Retire un fichier spécifique directement depuis l’archive sans avoir à tout décompresser.
-q : Exécute l’opération en mode silencieux en masquant les messages verbeux du terminal.
-0 à -9 : Règle le niveau de compression, de 0 (simple stockage sans compression) à 9 (taux maximal).

Création de archive.zip regroupant file1.txt et file2.txt

Pour inspecter la taille ainsi que les métadonnées de l’archive générée, lancez ls -lh archive.zip.

Vérification des propriétés de archive.zip

Compression récursive de répertoires et optimisation du taux (-9)

Reprenez place à la racine du dossier d’expérimentation via cd ~/zip_demo.

Navigation vers ~/zip_demo

Construisez une arborescence représentative d’un projet réel comprenant des dossiers de sources et de journaux système : mkdir -p project/src project/logs.

Création de l’arborescence project/src et project/logs

Créez un composant fictif au sein du dossier applicatif à l’aide de la commande echo "console.log('App running');" > project/src/app.js.

Création du fichier source app.js

Instanciez également un fichier de logs représentatif : echo "System initialized" > project/logs/app.log.

Création du fichier app.log

Lorsqu’il s’agit d’archiver un dossier complet, l’indicateur -r est obligatoire afin de descendre dans l’ensemble de la hiérarchie. La commande zip -r project.zip project intègre récursivement tous les sous-dossiers et fichiers sans omission.

Exécution de la compression récursive sur project

Pour réduire au maximum l’espace disque consommé par l’archive, combinez l’option récursive avec le drapeau d’optimisation maximale -9 : zip -9 -r project_max.zip project. Bien que ce traitement demande davantage de cycles processeur, il offre le volume final le plus compact.

Compression récursive au niveau maximal -9

Comparez l’empreinte disque obtenue entre la méthode standard project.zip et l’archive hautement compressée project_max.zip en exécutant ls -lh project*.zip.

Comparaison des tailles de fichiers project*.zip

Inspection du contenu sans décompression (-l) et extraction ciblée (-d)

Assurez-vous d’être positionné dans l’espace de démonstration : cd ~/zip_demo.

Retour au répertoire ~/zip_demo

L’utilitaire unzip muni du paramètre -l permet d’auditer l’arborescence interne, les tailles de fichiers et les dates sans pour autant extraire le moindre octet sur le disque dur : unzip -l project.zip.

Visualisation du contenu de project.zip avec l’option -l

Préparez un répertoire d’accueil dédié à la décompression : mkdir -p ~/zip_demo/extracted.

Création du répertoire de destination extracted

Afin d’éviter d’éparpiller les fichiers dans le dossier de travail courant, utilisez le commutateur -d pour rediriger l’extraction : unzip project.zip -d ~/zip_demo/extracted. Les fichiers et répertoires sont ainsi restitués fidèlement dans l’emplacement ciblé.

Extraction de project.zip dans le sous-dossier extracted

Validez la structure arborescente restaurée en déployant un listing récursif via ls -R ~/zip_demo/extracted.

Contrôle de la hiérarchie extraite avec ls -R

Exclusion sélective de fichiers (-x) et archivage sécurisé

Repositionnez-vous dans le répertoire de travail principal : cd ~/zip_demo.

Navigation dans ~/zip_demo

Dans un scénario de packaging, ignorer certains fichiers temporaires ou volumineux s’avère fréquent. Grâce au paramètre -x, vous pouvez appliquer un filtre d’exclusion (par exemple "*.log") lors de la création de l’archive : zip -r project_no_logs.zip project -x "*.log".

Création de project_no_logs.zip en excluant les fichiers de log

Passez en revue le contenu de project_no_logs.zip via unzip -l project_no_logs.zip pour certifier que le journal app.log a bien été écarté de l’archive.

Vérification de l’exclusion des logs avec unzip -l

Pour protéger des données sensibles lors d’un transfert, zip propose le commutateur -P permettant d’affecter un mot de passe directement en ligne de commande : zip -P SecurePass123! -r project_encrypted.zip project/src. Les sources se retrouvent ainsi chiffrées au sein du package résultant.

Compression chiffrée avec mot de passe via l’option -P

Listez enfin l’ensemble des archives générées et comparez leurs caractéristiques avec ls -lh project_*.zip.

Inventaire récapitulatif des archives créées

Ce tour d’horizon des commandes zip et unzip sous Ubuntu vous offre les bases nécessaires pour gérer vos flux d’archivage au quotidien. En intégrant ces options dans vos routines terminal et vos scripts Bash, vous gagnerez en rigueur et en rapidité dans l’administration de vos serveurs Linux.