Aller au contenu
Administration Linux medium

tar : créer et extraire une archive tar.gz

16 min de lecture

Cette page de référence regroupe les commandes tar à connaître : créer une archive avec tar -czvf, lister son contenu avec tar -tvf, l'extraire avec tar -xzvf, exclure des fichiers ou transférer un dossier via SSH sans fichier intermédiaire. Chaque option est expliquée et chaque exemple a été validé avec GNU tar. Elle s'adresse aux administrateurs et aux développeurs qui gèrent des sauvegardes, compressent des journaux ou préparent des livraisons à transférer. Gardez-la comme aide-mémoire : la syntaxe de base d'abord, puis les cas pratiques (sauvegarde datée, incrémentale, automatisation avec cron) et le dépannage des erreurs classiques.

  • Créer une archive avec ou sans compression (gzip, bzip2, xz) ;
  • Lister le contenu d'une archive et extraire tout ou partie de ses fichiers ;
  • Exclure des fichiers d'une archive et éviter les tarbombs ;
  • Automatiser des sauvegardes datées ou incrémentales ;
  • Diagnostiquer les erreurs courantes de 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.

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.

Fenêtre de terminal
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 :

    Fenêtre de terminal
    tar -cvf archive.tar mon_dossier/
  • Créer une archive compressée avec gzip :

    Fenêtre de terminal
    tar -czvf archive.tar.gz mon_dossier/
  • Extraire une archive :

    Fenêtre de terminal
    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. Un tar -cfzv archive.tar.gz dossier/ crée un fichier nommé zv au lieu de l'archive attendue : -f a consommé les lettres suivantes comme nom de fichier.

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

Cette commande crée une archive .tar contenant tous les fichiers d'un dossier :

Fenêtre de terminal
tar -cvf archive.tar mon_dossier/
  • -c : création
  • -v : affiche les fichiers archivés
  • -f : indique le nom de l'archive

Gzip est le format de compression le plus répandu avec tar. Il est rapide et bien supporté :

Fenêtre de terminal
tar -czvf archive.tar.gz mon_dossier/
  • -z : compression gzip

Bzip2 compresse mieux que gzip, mais il est plus lent. Utile pour les archives à long terme.

Fenêtre de terminal
tar -cjvf archive.tar.bz2 mon_dossier/
  • -j : compression bzip2

XZ offre la meilleure compression, mais c'est aussi la plus lente.

Fenêtre de terminal
tar -cJvf archive.tar.xz mon_dossier/
  • -J : compression xz

Les versions récentes de GNU tar acceptent aussi --zstd, un format qui combine une compression proche de xz avec une vitesse proche de gzip :

Fenêtre de terminal
tar --zstd -cvf archive.tar.zst mon_dossier/

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

Fenêtre de terminal
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 :

Fenêtre de terminal
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.

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.

Pour extraire le contenu d'une archive .tar :

Fenêtre de terminal
tar -xvf archive.tar
  • -x : extraction
  • -v : mode verbeux
  • -f : fichier à extraire

Les options de compression correspondent au format de l'archive :

  • .tar.gz ou .tgz :

    Fenêtre de terminal
    tar -xzvf archive.tar.gz
  • .tar.bz2 :

    Fenêtre de terminal
    tar -xjvf archive.tar.bz2
  • .tar.xz :

    Fenêtre de terminal
    tar -xJvf archive.tar.xz

Bon à savoir : à la lecture (extraction ou listing), GNU tar détecte automatiquement la compression. Un simple tar -xvf archive.tar.gz fonctionne donc sans -z. L'option de compression reste en revanche indispensable à la création de l'archive.

Plutôt que d'extraire dans le répertoire courant, on peut spécifier un dossier de destination avec l'option -C :

Fenêtre de terminal
tar -xvf archive.tar -C /chemin/vers/dossier/

Si l'on ne veut pas tout extraire, on peut viser un ou plusieurs fichiers précis :

Fenêtre de terminal
tar -xvf archive.tar chemin/vers/fichier.txt

Ou plusieurs fichiers à la fois :

Fenêtre de terminal
tar -xvf archive.tar fichier1.txt fichier2.log

Attention : le chemin doit correspondre exactement à celui affiché par tar -tf archive.tar, sinon tar renvoie Not found in archive.

Pour extraire uniquement certains types de fichiers :

Fenêtre de terminal
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. Les quotes simples autour du motif sont importantes : elles empêchent le shell d'interpréter *.jpg avant tar.

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.

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.

Avant d'extraire, il est souvent utile de voir ce qu'elle contient :

Fenêtre de terminal
tar -tvf archive.tar
  • -t : liste le contenu sans extraire
  • -v : affiche les droits, tailles, dates, etc.

Avec une archive compressée :

Fenêtre de terminal
tar -tzvf archive.tar.gz

On peut ajouter des fichiers, mais seulement si l'archive n'est pas compressée :

Fenêtre de terminal
tar -rvf archive.tar nouveau_fichier.txt
  • -r : append, ajoute à l'archive

Ajouter un dossier complet :

Fenêtre de terminal
tar -rvf archive.tar nouveau_dossier/

Sur une archive compressée, la même commande échoue avec le message explicite tar: Cannot update compressed archives. Il faut alors recréer l'archive ou travailler sur un .tar non compressé.

Supprimer des fichiers d'une archive (via --delete)

Section intitulée « Supprimer des fichiers d'une archive (via --delete) »

Attention : cette fonction ne marche que sur les archives non compressées :

Fenêtre de terminal
tar --delete -f archive.tar chemin/vers/fichier

Pour extraire uniquement certains types de fichiers :

Fenêtre de terminal
tar -xvf archive.tar --wildcards '*.sh'

On peut aussi combiner avec un répertoire :

Fenêtre de terminal
tar -xvf archive.tar --wildcards 'logs/*.log'

Face à une archive tronquée (transfert interrompu, disque plein), tar extrait ce qu'il peut jusqu'au point de coupure, puis s'arrête avec tar: Unexpected EOF in archive. Les fichiers situés avant la corruption sont récupérés ; ceux d'après sont perdus.

L'option --ignore-zeros peut aider quand l'archive contient des blocs nuls en plein milieu (archives concaténées ou zones remises à zéro) : elle force tar à continuer la lecture au lieu de considérer ces blocs comme la fin de l'archive :

Fenêtre de terminal
tar -xvf archive.tar --ignore-zeros

Ce n'est pas un outil de réparation : rien ne reconstruit les données manquantes. La vraie parade reste une somme de contrôle (sha256sum) vérifiée après chaque transfert.

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.

Pour archiver tout un répertoire, y compris ses sous-dossiers et permissions :

Fenêtre de terminal
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)

Section intitulée « Sauvegarde incrémentale (avec --listed-incremental) »

Créer un fichier d'état pour sauvegarder seulement ce qui a changé depuis la dernière sauvegarde :

Fenêtre de terminal
tar --listed-incremental=etat.snar -czvf backup.tar.gz /home/user/

À la première exécution, le fichier etat.snar n'existe pas encore : tar fait une sauvegarde complète et le crée. Aux exécutions suivantes, avec le même fichier d'état mais un nouveau nom d'archive, seuls les fichiers modifiés sont archivés. Pour restaurer, il faut rejouer la complète puis chaque incrémentale dans l'ordre.

Pour envoyer un dossier à un serveur distant sans le stocker localement :

Fenêtre de terminal
tar -czf - mon_dossier/ | ssh user@serveur 'tar -xzf - -C /destination/'

Cette méthode est rapide et évite les fichiers temporaires : le - demande à tar d'écrire l'archive sur la sortie standard, que SSH transporte jusqu'au tar -x distant.

Archiver et supprimer les fichiers .log vieux de plus de 7 jours :

Fenêtre de terminal
find /var/log -name "*.log" -mtime +7 -print | tar -czvf logs_ancien.tar.gz -T - --remove-files

L'option -T - lit la liste des fichiers depuis l'entrée standard (celle que produit find), et --remove-files supprime chaque fichier après l'avoir archivé. À tester d'abord sans --remove-files : une erreur de motif find et ce sont les mauvais fichiers qui disparaissent.

Exemple de ligne à insérer dans une crontab pour faire une sauvegarde chaque nuit à 2h :

Fenêtre de terminal
0 2 * * * tar -czf /sauvegardes/backup_$(date +\%Y\%m\%d).tar.gz /home/utilisateur/

Les % sont échappés en \% car ce caractère a un sens spécial dans une crontab (fin de commande). Cette commande peut aussi être intégrée à un script avec envoi par email, upload vers un cloud, etc.

Créer une archive avec tous les fichiers modifiés les 2 derniers jours :

Fenêtre de terminal
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.

Maîtriser la commande tar, c'est aussi adopter des habitudes fiables pour éviter les erreurs, améliorer la lisibilité et faciliter la maintenance.

Avant d'extraire une archive, surtout si elle est volumineuse ou inconnue :

Fenêtre de terminal
tar -tvf archive.tar.gz

Cela permet d'éviter d'écraser des fichiers importants ou de polluer un répertoire avec des fichiers inattendus.

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 :

Fenêtre de terminal
tar -czvf mon_projet.tar.gz mon_projet/

Et pour l'extraction :

Fenêtre de terminal
mkdir test && tar -xvf archive.tar -C test/
  • 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
  • zstd : rapport vitesse/compression excellent, sur les systèmes récents

Adaptez selon votre contexte : vitesse ou taille minimale ?

C'est indispensable pour s'y retrouver dans les sauvegardes :

Fenêtre de terminal
tar -czvf backup_$(date +%Y%m%d).tar.gz /etc/

L'ordre des options est important. Mettez toujours -f juste avant le nom de l'archive :

Fenêtre de terminal
tar -czvf archive.tar.gz dossier/
  • 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.

Les erreurs de tar sont presque toujours les mêmes : un ordre d'options incorrect, une opération interdite sur une archive compressée ou une archive abîmée. Ce tableau récapitule les symptômes les plus fréquents et leur correction.

SymptômeCause probableSolution
Un fichier zv apparaît et tar affiche Cannot stat: No such file or directory-f n'est pas la dernière option du groupe (ex. tar -cfzv)Réordonner : -f juste avant le nom de l'archive (tar -czvf)
tar: Cannot update compressed archives-r (ajout) ou --delete sur une archive .tar.gzTravailler sur un .tar non compressé, ou recréer l'archive complète
tar: Unexpected EOF in archiveArchive tronquée (transfert interrompu, disque plein)Retransférer l'archive ; vérifier avec sha256sum ; les fichiers avant la coupure restent extractibles
Fichiers éparpillés dans le répertoire courant après extractionTarbomb : l'archive n'a pas de répertoire racineLister avec tar -tf avant d'extraire, puis extraire avec -C dans un dossier dédié
Not found in archive lors d'une extraction cibléeLe chemin demandé ne correspond pas à celui stocké dans l'archiveCopier le chemin exact affiché par tar -tf archive.tar
Propriétaires ou permissions perdus à l'extractionExtraction lancée sans privilègesExtraire avec sudo pour restaurer les propriétaires d'origine

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Les trois actions de base tiennent en trois options : -c crée, -t liste, -x extrait ; -f désigne l'archive et se place toujours en dernier dans le groupe d'options.
  • La compression se choisit à la création : -z (gzip), -j (bzip2), -J (xz), --zstd ; à la lecture, GNU tar la détecte automatiquement.
  • Toujours lister (tar -tf) une archive inconnue avant de l'extraire, et extraire avec -C dans un répertoire dédié pour éviter les tarbombs.
  • Une archive compressée ne se modifie pas : -r et --delete exigent un .tar non compressé.
  • --exclude filtre à la création, --wildcards filtre à l'extraction : les quotes simples autour du motif sont obligatoires.
  • Combiné à find, ssh ou cron, tar couvre la sauvegarde datée, l'incrémentale (--listed-incremental) et le transfert sans fichier temporaire.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn