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.

Contrôle de connaissances

Pourquoi ce contrôle ?

Cet contrôle va vous permettre de valider vos connaissances sur le sujet abordé dans le guide. Il comporte des QCM, des questions vrai/faux et des réponses ouvertes à un mot.

🕒 Le chronomètre commence dès que vous cliquez sur Démarrer le test. Vous devrez terminer l’examen avant la fin du temps imparti.

🎯 Pour réussir, vous devez obtenir au moins 80% de bonnes réponses.

💡 Je ne fournis pas directement les réponses aux questions. Cependant, si certaines sont complexes, des pistes d’explication pourront être proposées dans le guide ou après l’examen.

Bonne chance ! 🚀

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

FAQ - Questions Fréquemment Posées

Qu'est-ce que la commande tar sous Linux ?
La commande tar est un outil qui permet d'archiver, sauvegarder et transférer des fichiers ou des répertoires sous Linux en regroupant plusieurs éléments dans une seule archive, avec ou sans compression.
Pourquoi utiliser la commande tar ?
Tar permet de regrouper des fichiers en une seule archive pour faciliter les sauvegardes, compresser des données pour gagner de la place et transférer des ensembles complets de fichiers tout en conservant les droits et structures.
Quelle est la syntaxe de base de tar ?
La syntaxe de base est : tar [options] [nom_archive] [fichiers_ou_dossiers], avec des options comme -c (créer), -x (extraire), -t (lister), -v (verbeux) et -f (nom du fichier archive).
Comment créer une archive tar simple ?
Pour créer une archive sans compression : tar -cvf archive.tar dossier/, ce qui regroupe le contenu de 'dossier/' dans l'archive 'archive.tar'.
Comment créer une archive tar compressée avec gzip ?
On ajoute l'option -z : tar -czvf archive.tar.gz dossier/, pour créer une archive compressée avec gzip.
Comment extraire une archive tar.gz ?
On utilise : tar -xzvf archive.tar.gz, ce qui extrait l'archive dans le répertoire courant.
Comment lister le contenu d'une archive tar ?
La commande tar -tvf archive.tar permet d'afficher la liste des fichiers contenus dans l'archive sans les extraire.
Comment ajouter un fichier à une archive tar existante ?
Avec l'option -r : tar -rvf archive.tar nouveau_fichier.txt, ce qui ajoute 'nouveau_fichier.txt' à l'archive (fonctionne uniquement sans compression).
Comment extraire un fichier spécifique d'une archive tar ?
On précise le chemin du fichier après la commande : tar -xvf archive.tar chemin/vers/fichier.txt, pour extraire uniquement ce fichier.
Peut-on exclure des fichiers lors de la création d'une archive ?
Oui, avec l'option --exclude, par exemple : tar --exclude='*.log' -czvf archive.tar.gz dossier/, pour exclure tous les fichiers .log.
Comment extraire une archive dans un autre répertoire ?
En ajoutant -C : tar -xvf archive.tar -C /chemin/vers/dossier/, ce qui extrait le contenu dans le dossier spécifié.
Quelles sont les différences entre gzip, bzip2 et xz avec tar ?
Gzip (-z) est rapide, bzip2 (-j) compresse mieux mais plus lentement, xz (-J) offre la meilleure compression mais est le plus lent. Le choix dépend du besoin entre vitesse et taux de compression.
Comment transférer un dossier compressé directement via SSH ?
On utilise un pipe : tar -czf - dossier/ | ssh user@serveur 'tar -xzf - -C /destination/', ce qui évite de créer un fichier temporaire.
Comment réparer une archive endommagée ?
On peut essayer : tar -xvf archive.tar --ignore-zeros, qui tente d'extraire malgré des erreurs dans l'archive.
Quelles bonnes pratiques pour utiliser tar ?
Il est recommandé de toujours vérifier le contenu avec -t avant d'extraire, de préférer archiver un dossier racine pour éviter les 'tarbombs', d'inclure la date dans le nom des sauvegardes, et de bien placer -f juste avant le nom de l'archive.