Maitriser la commande tar
Mise à jour :
Dans un système Linux, savoir manipuler des fichiers et des répertoires
rapidement et efficacement est essentiel pour tout administrateur ou utilisateur
avancé. La commande tar
est l’un des outils les plus utilisés pour archiver,
sauvegarder et transférer des données. Que ce soit pour automatiser une
sauvegarde quotidienne, compresser des logs ou extraire des fichiers d’une
archive distante, maîtriser tar
permet de gagner un temps précieux et d’éviter
bien des erreurs. C’est une compétence de base incontournable pour toute
personne qui gère un serveur ou travaille régulièrement en ligne de commande.
Introduction à tar
La commande tar, diminutif de tape archive, a été conçue à l’origine pour sauvegarder des fichiers sur des bandes magnétiques. Aujourd’hui, elle reste un pilier dans les systèmes Unix/Linux pour regrouper plusieurs fichiers ou répertoires en une seule archive, tout en conservant leurs droits, dates, structures et propriétaires.
Son grand avantage ? Elle permet de travailler avec ou sans compression, de lister ou d’extraire des fichiers spécifiques sans devoir décompresser toute l’archive, et s’utilise dans des scripts, des tâches automatisées, ou des transferts réseau.
Voici quelques cas concrets où tar
est utile :
- Sauvegarder le contenu d’un répertoire avant une mise à jour ;
- Compresser des fichiers journaux trop volumineux ;
- Transférer un projet complet à un autre serveur via SSH ;
- Préparer des dépôts ou packages pour un déploiement.
Elle est donc incontournable dès que l’on parle de gestion de fichiers à grande échelle ou de scripting système.
Syntaxe de base
La commande tar suit une structure simple mais puissante. Elle se compose d’options, du nom de l’archive, et des fichiers ou répertoires à traiter.
tar [options] [nom_archive] [fichiers_ou_dossiers]
Voici les options principales à connaître :
-c
: crée une nouvelle archive (create
)-x
: extrait une archive (extract
)-t
: affiche le contenu d’une archive (list
)-f
: spécifie le fichier d’archive à utiliser (file
) — toujours en dernier parmi les options-v
: mode verbeux, affiche les fichiers traités (verbose
)-z
: utilise gzip pour la compression/décompression-j
: utilise bzip2-J
: utilise xz
Exemples d’utilisation :
-
Créer une archive :
Terminal window tar -cvf archive.tar mon_dossier/ -
Créer une archive compressée avec gzip :
Terminal window tar -czvf archive.tar.gz mon_dossier/ -
Extraire une archive :
Terminal window tar -xvf archive.tar
Remarque : l’ordre des options est important, surtout pour -f
, qui doit
précéder immédiatement le nom du fichier archive.
En maîtrisant cette syntaxe de base, on peut ensuite passer à des cas d’usage plus avancés : exclusion de fichiers, sauvegardes automatiques, transferts, et plus encore.
Création d’archives
Créer une archive avec tar est une opération fréquente, que ce soit pour faire une sauvegarde, transférer un répertoire complet ou simplement regrouper des fichiers. Voici les formes les plus courantes.
Sans compression
Cette commande crée une archive .tar
contenant tous les fichiers d’un dossier
:
tar -cvf archive.tar mon_dossier/
-c
: création-v
: affiche les fichiers archivés-f
: indique le nom de l’archive
Avec compression gzip
Gzip est le format de compression le plus répandu avec tar
. Il est rapide et
bien supporté :
tar -czvf archive.tar.gz mon_dossier/
-z
: compression gzip
Avec compression bzip2
Bzip2 compresse mieux que gzip, mais il est plus lent. Utile pour les archives à long terme.
tar -cjvf archive.tar.bz2 mon_dossier/
-j
: compression bzip2
Avec compression xz
XZ offre la meilleure compression, mais c’est aussi la plus lente.
tar -cJvf archive.tar.xz mon_dossier/
-J
: compression xz
Archiver plusieurs fichiers
Il est aussi possible de cibler plusieurs fichiers à la fois :
tar -czvf mes_fichiers.tar.gz fichier1.txt fichier2.log dossier/
Astuce : pour exclure certains fichiers ou répertoires lors de la création
d’une archive, on peut utiliser l’option --exclude
:
tar --exclude='*.log' -czvf archive.tar.gz mon_dossier/
Créer une archive adaptée à son besoin, avec ou sans compression, est le premier
pas vers une utilisation efficace de tar
.
Extraction d’archives
Extraire une archive est tout aussi important que la créer. Que l’on souhaite récupérer l’intégralité d’un backup ou seulement un fichier précis, tar permet une grande souplesse.
Extraction simple (sans compression)
Pour extraire le contenu d’une archive .tar
:
tar -xvf archive.tar
-x
: extraction-v
: mode verbeux-f
: fichier à extraire
Extraction avec compression
Les options de compression sont nécessaires si l’archive a été compressée :
-
.tar.gz
ou.tgz
:Terminal window tar -xzvf archive.tar.gz -
.tar.bz2
:Terminal window tar -xjvf archive.tar.bz2 -
.tar.xz
:Terminal window tar -xJvf archive.tar.xz
Extraction vers un répertoire spécifique
Plutôt que d’extraire dans le répertoire courant, on peut spécifier un dossier
de destination avec l’option -C
:
tar -xvf archive.tar -C /chemin/vers/dossier/
Extraire un ou plusieurs fichiers spécifiques
Si l’on ne veut pas tout extraire, on peut viser un ou plusieurs fichiers précis :
tar -xvf archive.tar chemin/vers/fichier.txt
Ou plusieurs fichiers à la fois :
tar -xvf archive.tar fichier1.txt fichier2.log
Utilisation des jokers (wildcards)
Pour extraire uniquement certains types de fichiers :
tar -xvf archive.tar --wildcards '*.jpg'
Cela est très pratique pour récupérer uniquement les images, les scripts .sh
,
ou tout autre format spécifique.
Avec ces commandes, on gagne un vrai contrôle sur ce que l’on extrait, où, et comment. C’est fondamental en environnement de production ou en cas de récupération ciblée de données.
Manipulation des archives
Tar ne se limite pas à créer ou extraire : on peut aussi analyser, modifier, ou compléter une archive existante. Ces fonctions avancées permettent d’ajuster une archive sans repartir de zéro.
Lister le contenu d’une archive
Avant d’extraire, il est souvent utile de voir ce qu’elle contient :
tar -tvf archive.tar
-t
: liste le contenu sans extraire-v
: affiche les droits, tailles, dates, etc.
Avec une archive compressée :
tar -tzvf archive.tar.gz
Ajouter des fichiers à une archive
On peut ajouter des fichiers, mais seulement si l’archive n’est pas compressée :
tar -rvf archive.tar nouveau_fichier.txt
-r
: append, ajoute à l’archive
Ajouter un dossier complet :
tar -rvf archive.tar nouveau_dossier/
Supprimer des fichiers d’une archive (via --delete
)
Attention : cette fonction ne marche que sur les archives non compressées :
tar --delete -f archive.tar chemin/vers/fichier
Extraire des fichiers en fonction de motifs
Pour extraire uniquement certains types de fichiers :
tar -xvf archive.tar --wildcards '*.sh'
On peut aussi combiner avec un répertoire :
tar -xvf archive.tar --wildcards 'logs/*.log'
Réparer une archive endommagée
Il est possible de récupérer partiellement une archive incomplète :
tar -xvf archive.tar --ignore-zeros
Cela permet parfois d’extraire une partie des fichiers même si l’archive est corrompue en fin de fichier.
Cas pratiques
Pour vraiment maîtriser la commande tar
, rien ne vaut quelques scénarios
concrets. Voici des exemples d’usage courant dans un environnement système ou
DevOps.
Sauvegarde complète d’un répertoire
Pour archiver tout un répertoire, y compris ses sous-dossiers et permissions :
tar -czvf sauvegarde_$(date +%Y%m%d).tar.gz /etc/
Cela crée une archive nommée avec la date du jour, utile pour les sauvegardes journalières.
Sauvegarde incrémentale (avec --listed-incremental
)
Créer un fichier d’état pour sauvegarder seulement ce qui a changé depuis la dernière sauvegarde :
tar --listed-incremental=etat.snar -czvf backup.tar.gz /home/user/
À répéter régulièrement avec le même fichier etat.snar
.
Transfert d’un dossier via SSH
Pour envoyer un dossier à un serveur distant sans le stocker localement :
tar -czf - mon_dossier/ | ssh user@serveur 'tar -xzf - -C /destination/'
Cette méthode est rapide et évite les fichiers temporaires.
Compression et nettoyage de logs
Archiver et supprimer les fichiers .log
vieux de plus de 7 jours :
find /var/log -name "*.log" -mtime +7 -print | tar -czvf logs_ancien.tar.gz -T - --remove-files
Automatiser une sauvegarde avec cron
Exemple de ligne à insérer dans une crontab pour faire une sauvegarde chaque nuit à 2h :
0 2 * * * tar -czf /sauvegardes/backup_$(date +\%Y\%m\%d).tar.gz /home/utilisateur/
Cette commande peut aussi être intégrée à un script avec envoi par email, upload vers un cloud, etc.
Intégration avec find
pour cibler des fichiers
Créer une archive avec tous les fichiers modifiés les 2 derniers jours :
find . -type f -mtime -2 -print | tar -czvf modifs.tar.gz -T -
Ces cas d’usage permettent de passer d’une utilisation ponctuelle à une automatisation robuste, adaptée à un usage professionnel.
Bonnes pratiques
Maîtriser la commande tar, c’est aussi adopter des habitudes fiables pour éviter les erreurs, améliorer la lisibilité et faciliter la maintenance.
Toujours vérifier le contenu avant extraction
Avant d’extraire une archive, surtout si elle est volumineuse ou inconnue :
tar -tvf archive.tar.gz
Cela permet d’éviter d’écraser des fichiers importants ou de polluer un répertoire avec des fichiers inattendus.
Utiliser des répertoires dédiés
Une archive qui extrait des fichiers directement dans le répertoire courant est appelée une tarbomb. Pour éviter ça, archivez toujours un répertoire racine :
tar -czvf mon_projet.tar.gz mon_projet/
Et pour l’extraction :
mkdir test && tar -xvf archive.tar -C test/
Choisir la bonne compression
- gzip : rapide, supporté partout, bon compromis
- bzip2 : plus de compression, mais plus lent
- xz : compression maximale, très lent, idéal pour l’archivage long terme
Adaptez selon votre contexte : vitesse ou taille minimale ?
Inclure la date dans le nom des archives
C’est indispensable pour s’y retrouver dans les sauvegardes :
tar -czvf backup_$(date +%Y%m%d).tar.gz /etc/
Toujours utiliser -f
en dernier dans les options
L’ordre des options est important. Mettez toujours -f
juste avant le nom de
l’archive :
tar -czvf archive.tar.gz dossier/
Éviter les erreurs courantes
- Oublier
-f
et avoir un message d’erreur confus - Essayer de modifier une archive compressée
- Extraire une archive à la racine sans vérifier son contenu
En suivant ces pratiques, on évite la plupart des pièges classiques. On gagne aussi en lisibilité, en sécurité, et en efficacité, surtout dans des scripts automatisés.
Conclusion
Maîtriser la commande tar, c’est s’offrir un outil polyvalent pour gérer
efficacement les fichiers sous Linux : sauvegarder, compresser,
transférer ou restaurer en quelques lignes de commande. Que ce soit pour
un usage ponctuel ou intégré dans des scripts d’automatisation, tar
reste une
compétence indispensable pour tout administrateur système ou utilisateur avancé.