Aller au contenu

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.

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

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

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

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

Terminal window
tar -cJvf archive.tar.xz mon_dossier/
  • -J : compression xz

Archiver plusieurs fichiers

Il est aussi possible de cibler plusieurs fichiers à la fois :

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

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

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

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

Terminal window
tar -xvf archive.tar chemin/vers/fichier.txt

Ou plusieurs fichiers à la fois :

Terminal window
tar -xvf archive.tar fichier1.txt fichier2.log

Utilisation des jokers (wildcards)

Pour extraire uniquement certains types de fichiers :

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

Terminal window
tar -tvf archive.tar
  • -t : liste le contenu sans extraire
  • -v : affiche les droits, tailles, dates, etc.

Avec une archive compressée :

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

Terminal window
tar -rvf archive.tar nouveau_fichier.txt
  • -r : append, ajoute à l’archive

Ajouter un dossier complet :

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

Terminal window
tar --delete -f archive.tar chemin/vers/fichier

Extraire des fichiers en fonction de motifs

Pour extraire uniquement certains types de fichiers :

Terminal window
tar -xvf archive.tar --wildcards '*.sh'

On peut aussi combiner avec un répertoire :

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

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

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

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

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

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

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

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

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

Terminal window
tar -czvf mon_projet.tar.gz mon_projet/

Et pour l’extraction :

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

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

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