Aller au contenu
Administration Linux medium

Commandes Linux pour archiver et compresser

14 min de lecture

Sur un système Linux, la gestion des archives fait partie des compétences de base pour tout administrateur ou utilisateur avancé. Pourquoi ? Parce que manipuler des fichiers volumineux ou des répertoires entiers devient vite compliqué sans outils dédiés. Imaginez devoir transférer des centaines de fichiers un par un : fastidieux, non ? C’est là qu’interviennent des commandes comme tar, gzip, ou encore zip.

L’archivage permet de regrouper plusieurs fichiers dans un seul conteneur, tandis que la compression réduit leur taille pour gagner de l’espace disque ou accélérer les transferts. Bien souvent, ces deux opérations sont combinées : on archive d’abord avec tar, puis on compresse le tout avec gzip, bzip2 ou xz. Cette approche conserve la structure des répertoires et les permissions des fichiers, ce qui est indispensable pour les sauvegardes ou les déploiements.

Utilisation de tar : l’outil d’archivage standard

Section intitulée « Utilisation de tar : l’outil d’archivage standard »

La commande tar (abréviation de Tape Archive) est historiquement conçue pour rassembler plusieurs fichiers en une seule archive. Son principal atout est de préserver l’intégrité des répertoires : arborescence, droits d’accès, dates de modification… tout est conservé. C’est cette caractéristique qui explique pourquoi tar reste incontournable, même à l’ère des solutions modernes.

Prenons un cas concret : vous souhaitez archiver le répertoire /home/user/projets sous le nom projets.tar. La commande est simple :

Fenêtre de terminal
tar -cvf projets.tar /home/user/projets
  • -c : crée une archive
  • -v : affiche la progression
  • -f : indique le fichier d’archive en sortie

Vous pouvez également archiver plusieurs fichiers ou répertoires en même temps :

Fenêtre de terminal
tar -cvf sauvegarde.tar fichier1.txt dossier1/ fichier2.log

Par défaut, tar enregistre les chemins relatifs des fichiers ajoutés. Cela signifie que lorsque vous extrayez l’archive, les fichiers se replacent par rapport au dossier actuel. Si vous archivez avec un chemin absolu, il est recommandé d’utiliser l’option --absolute-names si vous souhaitez restaurer à l’identique, ou d’éviter cette option pour ne pas écraser des fichiers critiques en cas d’extraction imprudente.

Avant d’extraire ou d’envoyer une archive, il est souvent utile de contrôler son contenu. Cela se fait avec :

Fenêtre de terminal
tar -tvf projets.tar

Vous obtenez la liste détaillée de tous les fichiers contenus dans l’archive : taille, permissions, date, chemin.

Pour extraire une archive dans le répertoire actuel :

Fenêtre de terminal
tar -xvf projets.tar

Vous pouvez aussi extraire un fichier spécifique sans tout décompresser :

Fenêtre de terminal
tar -xvf projets.tar dossier1/fichier1.txt

Et pour extraire tout en précisant le répertoire cible :

Fenêtre de terminal
tar -xvf projets.tar -C /chemin/vers/destination/

Un autre avantage de tar est de permettre d’ajouter des fichiers à une archive existante avec l’option -r (append). Cela fonctionne uniquement sur des archives non compressées :

Fenêtre de terminal
tar -rvf projets.tar nouveau_fichier.txt

De même, vous pouvez supprimer des fichiers avec l’option --delete :

Fenêtre de terminal
tar --delete -f projets.tar fichier_a_supprimer.txt

Pour des sauvegardes plus sophistiquées, tar permet également de réaliser des archives différentielles ou incrémentielles en utilisant l’option --listed-incremental. Cela permet de n’archiver que les fichiers modifiés depuis la dernière sauvegarde. Exemple basique :

Fenêtre de terminal
tar --listed-incremental=sauvegarde.snar -cvf sauvegarde_incr.tar /home/user/projets

Cette fonctionnalité est particulièrement utile pour automatiser des sauvegardes régulières tout en économisant de l’espace disque.

Une fois vos fichiers archivés avec tar, vous pouvez les compresser pour réduire leur taille et optimiser le stockage ou les transferts. Vous pouvez aussi avoir besoin de compresser des fichiers individuels sans les archiver. Je pense en particulier à des fichiers journaux ou des fichiers de donnée.

Trois outils principaux sont disponibles sous Linux : gzip, bzip2 et xz. Chacun présente des caractéristiques spécifiques en termes de vitesse et de taux de compression.

gzip est l’outil de compression le plus courant. Il est rapide et largement compatible. Pour compresser un fichier :

Fenêtre de terminal
gzip fichier.log

Cela produit un fichier fichier.log.gz et supprime le fichier original par défaut. Pour conserver l’original, utilisez :

Fenêtre de terminal
gzip -k fichier.log

Vous pouvez aussi ajuster le niveau de compression (1 = rapide, 9 = maximal) :

Fenêtre de terminal
gzip -9 fichier.log

Pour décompresser un fichier .gz :

Fenêtre de terminal
gunzip fichier.log.gz

Ou, avec gzip -d :

Fenêtre de terminal
gzip -d fichier.log.gz

bzip2 offre une meilleure compression que gzip mais est généralement plus lent. Pour compresser :

Fenêtre de terminal
bzip2 fichier.log

Cela crée fichier.log.bz2. Pour conserver le fichier original :

Fenêtre de terminal
bzip2 -k fichier.log

Vous pouvez aussi définir le niveau de compression (par défaut 9) :

Fenêtre de terminal
bzip2 -1 fichier.log

Pour décompresser :

Fenêtre de terminal
bunzip2 fichier.log.bz2

Ou bien :

Fenêtre de terminal
bzip2 -d fichier.log.bz2

xz est réputé pour son taux de compression très élevé, au prix d’une vitesse plus faible. Pour compresser :

Fenêtre de terminal
xz fichier.log

Ce qui crée fichier.log.xz. Pour conserver le fichier original :

Fenêtre de terminal
xz -k fichier.log

Vous pouvez ajuster la compression avec :

Fenêtre de terminal
xz -9 fichier.log

Pour décompresser :

Fenêtre de terminal
unxz fichier.log.xz

Ou bien :

Fenêtre de terminal
xz -d fichier.log.xz

Pour simplifier la gestion des fichiers et optimiser l’espace disque, il est très courant sous Linux d’associer archivage et compression en une seule commande. C’est ici que la combinaison de tar avec des outils comme gzip, bzip2 ou xz prend tout son sens : vous obtenez un seul fichier, à la fois structuré et compressé.

Le format le plus classique est le .tar.gz, qui combine tar et gzip. Pour créer cette archive en une commande :

Fenêtre de terminal
tar -czvf archive.tar.gz dossier/
  • -c : crée l’archive
  • -z : compresse avec gzip
  • -v : affiche les fichiers traités
  • -f : indique le fichier cible

Pour une compression plus poussée grâce à bzip2, utilisez :

Fenêtre de terminal
tar -cjvf archive.tar.bz2 dossier/
  • -j : compresse avec bzip2

Pour obtenir la meilleure compression possible avec xz :

Fenêtre de terminal
tar -cJvf archive.tar.xz dossier/
  • -J : compresse avec xz

L’extraction dépend du format :

  • Pour .tar.gz :
Fenêtre de terminal
tar -xzvf archive.tar.gz
  • Pour .tar.bz2 :
Fenêtre de terminal
tar -xjvf archive.tar.bz2
  • Pour .tar.xz :
Fenêtre de terminal
tar -xJvf archive.tar.xz

Vous pouvez vérifier l’intégrité d’une archive compressée sans tout extraire en ajoutant l’option -t (test) :

Fenêtre de terminal
tar -tzvf archive.tar.gz

Cette commande liste simplement le contenu pour s’assurer qu’il n’y a pas d’erreurs.

Utilisation de zip et unzip pour la compatibilité multiplateforme

Section intitulée « Utilisation de zip et unzip pour la compatibilité multiplateforme »

Contrairement à tar, qui est surtout utilisé dans les environnements Unix/Linux, le format ZIP est universellement reconnu sur toutes les plateformes : Windows, macOS, Linux. C’est la solution idéale pour partager des fichiers avec des utilisateurs n’ayant pas d’outils Unix natifs.

La commande zip permet de compresser un ou plusieurs fichiers en une archive .zip :

Fenêtre de terminal
zip archive.zip fichier1.txt fichier2.txt

Pour archiver tout un dossier de manière récursive :

Fenêtre de terminal
zip -r archive.zip dossier/

Vous pouvez exclure certains fichiers ou motifs (par exemple, tous les fichiers .bak) :

Fenêtre de terminal
zip -r archive.zip dossier/ -x "*.bak"

Pour ajouter un fichier à une archive déjà créée :

Fenêtre de terminal
zip archive.zip nouveau_fichier.txt

Il est possible de chiffrer l’archive avec l’option -e :

Fenêtre de terminal
zip -e archive.zip fichier1.txt

Cette commande vous demandera un mot de passe.

Pour décompresser une archive ZIP :

Fenêtre de terminal
unzip archive.zip

Vous pouvez extraire dans un répertoire spécifique avec :

Fenêtre de terminal
unzip archive.zip -d /chemin/vers/dossier/

Pour lister le contenu de l’archive sans extraction :

Fenêtre de terminal
unzip -l archive.zip

Une fonctionnalité intéressante de unzip : tenter de réparer une archive endommagée avec l’option -FF :

Fenêtre de terminal
unzip -FF archive.zip

Utilisation de 7z pour des archives hautement compressées

Section intitulée « Utilisation de 7z pour des archives hautement compressées »

La commande 7z, issue de l’outil 7-Zip, est réputée pour son taux de compression supérieur à celui des autres formats classiques. Très utile lorsque vous devez réduire au maximum la taille de vos archives, 7z prend en charge de nombreux formats : .7z, .zip, .tar, entre autres.

Pour compresser un répertoire ou un fichier en format .7z :

Fenêtre de terminal
7z a archive.7z dossier/
  • a : ajoute des fichiers à l’archive (ou crée l’archive si elle n’existe pas)

Par défaut, cette commande applique une compression élevée, mais vous pouvez ajuster le niveau avec l’option -mx=9 (compression maximale) ou -mx=1 (compression rapide) :

Fenêtre de terminal
7z a -mx=9 archive.7z dossier/

Pour extraire tout le contenu d’une archive .7z :

Fenêtre de terminal
7z x archive.7z

L’option x préserve la structure des répertoires. Vous pouvez extraire dans un répertoire spécifique :

Fenêtre de terminal
7z x archive.7z -o/chemin/vers/dossier/

Avant d’extraire, il est souvent utile de consulter la liste des fichiers :

Fenêtre de terminal
7z l archive.7z

La commande 7z permet d’ajouter un mot de passe pour sécuriser vos archives. L’option -p active le chiffrement :

Fenêtre de terminal
7z a -p archive.7z dossier/

Pour chiffrer également les noms des fichiers (et non seulement leur contenu) :

Fenêtre de terminal
7z a -p -mhe archive.7z dossier/

Pour vérifier qu’une archive n’est pas corrompue :

Fenêtre de terminal
7z t archive.7z

Comparaison des outils d’archivage et de compression

Section intitulée « Comparaison des outils d’archivage et de compression »

Face à la diversité des outils disponibles sous Linux, il est essentiel de comprendre leurs forces et faiblesses pour choisir la meilleure solution selon le contexte : rapidité, compatibilité, ou encore taux de compression. Voici un tableau comparatif des principaux formats et commandes que nous avons explorés.

Outil/FormatTypeTaux de compressionVitesseCompatibilitéChiffrement possible
tarArchivage uniquementAucunTrès rapideUniversel (Linux/Unix)Non
tar + gzipArchivage + compressionMoyenRapideTrès élevéNon
tar + bzip2Archivage + compressionÉlevéPlus lentÉlevéeNon
tar + xzArchivage + compressionTrès élevéLentBonneNon
zipArchivage + compressionMoyenRapideUniversel (toutes plateformes)Oui (basique)
7zArchivage + compressionTrès élevéPlus lentLarge (nécessite 7-Zip)Oui (avancé)
  • Vous cherchez la simplicité et la compatibilité : utilisez zip, parfait pour le partage entre différents systèmes (Windows, macOS, Linux).
  • Vous voulez une compression maximale : privilégiez 7z ou tar + xz.
  • Vous souhaitez juste archiver sans compression : tar est le plus simple.
  • Vous réalisez des sauvegardes fréquentes : tar + gzip offre un bon compromis entre vitesse et taux de compression.
  • Support des métadonnées : tar conserve les permissions, les propriétaires, les dates et l’arborescence des fichiers, ce qui est essentiel pour les sauvegardes système.
  • Simplicité des commandes : zip et 7z offrent des commandes tout-en-un, pratiques pour des usages ponctuels ou non-techniques.
  • Chiffrement : si la sécurité est un enjeu, 7z est le plus complet, permettant même de chiffrer les noms des fichiers.

Maîtriser ces outils d’archivage et de compression sous Linux, c’est gagner en efficacité et en sécurité dans la gestion des fichiers. Que ce soit pour des sauvegardes régulières, des transferts rapides ou des archivages à long terme, ces commandes vous offrent une souplesse maximale.

En optimisant l’espace disque avec des outils comme gzip, bzip2, xz ou 7z, vous réduisez l’encombrement de vos serveurs. Grâce aux formats universels comme ZIP, vous facilitez la collaboration avec d’autres systèmes d’exploitation. Et en automatisant vos tâches avec des scripts, vous vous libérez des tâches répétitives, tout en minimisant les risques d’erreur.

En résumé, la maîtrise de ces outils n’est pas seulement une compétence technique : c’est un véritable levier d’efficacité pour toute personne impliquée dans l’administration ou la gestion de systèmes Linux.