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 :
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 :
tar -cvf sauvegarde.tar fichier1.txt dossier1/ fichier2.logArchivage 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 :
tar -tvf projets.tarVous 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 :
tar -xvf projets.tarVous pouvez aussi extraire un fichier spécifique sans tout décompresser :
tar -xvf projets.tar dossier1/fichier1.txtEt pour extraire tout en précisant le répertoire cible :
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 :
tar -rvf projets.tar nouveau_fichier.txtDe même, vous pouvez supprimer des fichiers avec l’option --delete :
tar --delete -f projets.tar fichier_a_supprimer.txtArchivage 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 :
tar --listed-incremental=sauvegarde.snar -cvf sauvegarde_incr.tar /home/user/projetsCette 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 :
gzip fichier.logCela produit un fichier fichier.log.gz et supprime le fichier original par
défaut. Pour conserver l’original, utilisez :
gzip -k fichier.logVous pouvez aussi ajuster le niveau de compression (1 = rapide, 9 = maximal) :
gzip -9 fichier.logDécompression avec gunzip
Pour décompresser un fichier .gz :
gunzip fichier.log.gzOu, avec gzip -d :
gzip -d fichier.log.gzCompression avec bzip2
bzip2 offre une meilleure compression que gzip mais est généralement
plus lent. Pour compresser :
bzip2 fichier.logCela crée fichier.log.bz2. Pour conserver le fichier original :
bzip2 -k fichier.logVous pouvez aussi définir le niveau de compression (par défaut 9) :
bzip2 -1 fichier.logDécompression avec bunzip2
Pour décompresser :
bunzip2 fichier.log.bz2Ou bien :
bzip2 -d fichier.log.bz2Compression avec xz
xz est réputé pour son taux de compression très élevé, au prix d’une
vitesse plus faible. Pour compresser :
xz fichier.logCe qui crée fichier.log.xz. Pour conserver le fichier original :
xz -k fichier.logVous pouvez ajuster la compression avec :
xz -9 fichier.logDécompression avec unxz
Pour décompresser :
unxz fichier.log.xzOu bien :
xz -d fichier.log.xzCré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 :
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 :
tar -cjvf archive.tar.bz2 dossier/- -j : compresse avec
bzip2
Créer une archive .tar.xz
Pour obtenir la meilleure compression possible avec xz :
tar -cJvf archive.tar.xz dossier/- -J : compresse avec
xz
Extraction d’archives compressées
L’extraction dépend du format :
- Pour
.tar.gz:
tar -xzvf archive.tar.gz- Pour
.tar.bz2:
tar -xjvf archive.tar.bz2- Pour
.tar.xz:
tar -xJvf archive.tar.xzTester 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) :
tar -tzvf archive.tar.gzCette 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 :
zip archive.zip fichier1.txt fichier2.txtPour archiver tout un dossier de manière récursive :
zip -r archive.zip dossier/Exclure des fichiers
Vous pouvez exclure certains fichiers ou motifs (par exemple, tous les
fichiers .bak) :
zip -r archive.zip dossier/ -x "*.bak"Ajouter des fichiers à une archive existante
Pour ajouter un fichier à une archive déjà créée :
zip archive.zip nouveau_fichier.txtProtéger une archive par mot de passe
Il est possible de chiffrer l’archive avec l’option -e :
zip -e archive.zip fichier1.txtCette commande vous demandera un mot de passe.
Extraire une archive ZIP
Pour décompresser une archive ZIP :
unzip archive.zipVous pouvez extraire dans un répertoire spécifique avec :
unzip archive.zip -d /chemin/vers/dossier/Vérifier le contenu sans extraire
Pour lister le contenu de l’archive sans extraction :
unzip -l archive.zipRéparer une archive corrompue
Une fonctionnalité intéressante de unzip : tenter de réparer une archive
endommagée avec l’option -FF :
unzip -FF archive.zipUtilisation 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 :
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) :
7z a -mx=9 archive.7z dossier/Extraire une archive .7z
Pour extraire tout le contenu d’une archive .7z :
7z x archive.7zL’option x préserve la structure des répertoires. Vous pouvez extraire dans un répertoire spécifique :
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 :
7z l archive.7zChiffrer une archive
La commande 7z permet d’ajouter un mot de passe pour sécuriser vos
archives. L’option -p active le chiffrement :
7z a -p archive.7z dossier/Pour chiffrer également les noms des fichiers (et non seulement leur contenu) :
7z a -p -mhe archive.7z dossier/Tester l’intégrité d’une archive
Pour vérifier qu’une archive n’est pas corrompue :
7z t archive.7zComparaison 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/Format | Type | Taux de compression | Vitesse | Compatibilité | Chiffrement possible |
|---|---|---|---|---|---|
| tar | Archivage uniquement | Aucun | Très rapide | Universel (Linux/Unix) | Non |
| tar + gzip | Archivage + compression | Moyen | Rapide | Très élevé | Non |
| tar + bzip2 | Archivage + compression | Élevé | Plus lent | Élevée | Non |
| tar + xz | Archivage + compression | Très élevé | Lent | Bonne | Non |
| zip | Archivage + compression | Moyen | Rapide | Universel (toutes plateformes) | Oui (basique) |
| 7z | Archivage + compression | Très élevé | Plus lent | Large (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
7zoutar + xz. - Vous souhaitez juste archiver sans compression :
tarest le plus simple. - Vous réalisez des sauvegardes fréquentes :
tar + gzipoffre un bon compromis entre vitesse et taux de compression.
Autres critères à considérer
- Support des métadonnées :
tarconserve les permissions, les propriétaires, les dates et l’arborescence des fichiers, ce qui est essentiel pour les sauvegardes système. - Simplicité des commandes :
zipet7zoffrent des commandes tout-en-un, pratiques pour des usages ponctuels ou non-techniques. - Chiffrement : si la sécurité est un enjeu,
7zest 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.