Aller au contenu

Commandes Linux pour archiver et compresser

Mise à jour :

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.

Qu’est-ce qu’une archive ?

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

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 :

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

Archivage multiple

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

Terminal window
tar -cvf sauvegarde.tar fichier1.txt dossier1/ fichier2.log

Archivage relatif vs. absolu

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.

Vérification du contenu d’une archive

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

Terminal window
tar -tvf projets.tar

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

Extraction d’archives

Pour extraire une archive dans le répertoire actuel :

Terminal window
tar -xvf projets.tar

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

Terminal window
tar -xvf projets.tar dossier1/fichier1.txt

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

Terminal window
tar -xvf projets.tar -C /chemin/vers/destination/

Mettre à jour ou ajouter des fichiers

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 :

Terminal window
tar -rvf projets.tar nouveau_fichier.txt

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

Terminal window
tar --delete -f projets.tar fichier_a_supprimer.txt

Archivage incrémentiel

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 :

Terminal window
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.

Compression avec gzip, bzip2 et xz

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.

Compression avec gzip

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

Terminal window
gzip fichier.log

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

Terminal window
gzip -k fichier.log

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

Terminal window
gzip -9 fichier.log

Décompression avec gunzip

Pour décompresser un fichier .gz :

Terminal window
gunzip fichier.log.gz

Ou, avec gzip -d :

Terminal window
gzip -d fichier.log.gz

Compression avec bzip2

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

Terminal window
bzip2 fichier.log

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

Terminal window
bzip2 -k fichier.log

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

Terminal window
bzip2 -1 fichier.log

Décompression avec bunzip2

Pour décompresser :

Terminal window
bunzip2 fichier.log.bz2

Ou bien :

Terminal window
bzip2 -d fichier.log.bz2

Compression avec xz

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

Terminal window
xz fichier.log

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

Terminal window
xz -k fichier.log

Vous pouvez ajuster la compression avec :

Terminal window
xz -9 fichier.log

Décompression avec unxz

Pour décompresser :

Terminal window
unxz fichier.log.xz

Ou bien :

Terminal window
xz -d fichier.log.xz

Création d’archives compressées combinées

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é.

Créer une archive .tar.gz

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

Terminal window
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

Créer une archive .tar.bz2

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

Terminal window
tar -cjvf archive.tar.bz2 dossier/
  • -j : compresse avec bzip2

Créer une archive .tar.xz

Pour obtenir la meilleure compression possible avec xz :

Terminal window
tar -cJvf archive.tar.xz dossier/
  • -J : compresse avec xz

Extraction d’archives compressées

L’extraction dépend du format :

  • Pour .tar.gz :
Terminal window
tar -xzvf archive.tar.gz
  • Pour .tar.bz2 :
Terminal window
tar -xjvf archive.tar.bz2
  • Pour .tar.xz :
Terminal window
tar -xJvf archive.tar.xz

Tester une archive sans extraction

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

Terminal window
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

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.

Créer une archive ZIP

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

Terminal window
zip archive.zip fichier1.txt fichier2.txt

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

Terminal window
zip -r archive.zip dossier/

Exclure des fichiers

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

Terminal window
zip -r archive.zip dossier/ -x "*.bak"

Ajouter des fichiers à une archive existante

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

Terminal window
zip archive.zip nouveau_fichier.txt

Protéger une archive par mot de passe

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

Terminal window
zip -e archive.zip fichier1.txt

Cette commande vous demandera un mot de passe.

Extraire une archive ZIP

Pour décompresser une archive ZIP :

Terminal window
unzip archive.zip

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

Terminal window
unzip archive.zip -d /chemin/vers/dossier/

Vérifier le contenu sans extraire

Pour lister le contenu de l’archive sans extraction :

Terminal window
unzip -l archive.zip

Réparer une archive corrompue

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

Terminal window
unzip -FF archive.zip

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.

Créer une archive .7z

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

Terminal window
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) :

Terminal window
7z a -mx=9 archive.7z dossier/

Extraire une archive .7z

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

Terminal window
7z x archive.7z

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

Terminal window
7z x archive.7z -o/chemin/vers/dossier/

Lister le contenu d’une archive

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

Terminal window
7z l archive.7z

Chiffrer une archive

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

Terminal window
7z a -p archive.7z dossier/

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

Terminal window
7z a -p -mhe archive.7z dossier/

Tester l’intégrité d’une archive

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

Terminal window
7z t archive.7z

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é)

En fonction de vos besoins

  • 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.

Autres critères à considérer

  • 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.

Conclusion

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.