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.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 :
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 :
tar -xvf projets.tar
Vous pouvez aussi extraire un fichier spécifique sans tout décompresser :
tar -xvf projets.tar dossier1/fichier1.txt
Et 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.txt
De même, vous pouvez supprimer des fichiers avec l’option --delete
:
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 :
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 :
gzip fichier.log
Cela produit un fichier fichier.log.gz
et supprime le fichier original par
défaut. Pour conserver l’original, utilisez :
gzip -k fichier.log
Vous pouvez aussi ajuster le niveau de compression (1 = rapide, 9 = maximal) :
gzip -9 fichier.log
Décompression avec gunzip
Pour décompresser un fichier .gz
:
gunzip fichier.log.gz
Ou, avec gzip -d
:
gzip -d fichier.log.gz
Compression avec bzip2
bzip2
offre une meilleure compression que gzip
mais est généralement
plus lent. Pour compresser :
bzip2 fichier.log
Cela crée fichier.log.bz2
. Pour conserver le fichier original :
bzip2 -k fichier.log
Vous pouvez aussi définir le niveau de compression (par défaut 9) :
bzip2 -1 fichier.log
Décompression avec bunzip2
Pour décompresser :
bunzip2 fichier.log.bz2
Ou bien :
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 :
xz fichier.log
Ce qui crée fichier.log.xz
. Pour conserver le fichier original :
xz -k fichier.log
Vous pouvez ajuster la compression avec :
xz -9 fichier.log
Décompression avec unxz
Pour décompresser :
unxz fichier.log.xz
Ou bien :
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 :
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.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) :
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
:
zip archive.zip fichier1.txt fichier2.txt
Pour 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.txt
Protéger une archive par mot de passe
Il est possible de chiffrer l’archive avec l’option -e :
zip -e archive.zip fichier1.txt
Cette commande vous demandera un mot de passe.
Extraire une archive ZIP
Pour décompresser une archive ZIP :
unzip archive.zip
Vous 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.zip
Ré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.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
:
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.7z
L’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.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 :
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.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/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
7z
outar + 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
et7z
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.