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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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.
Qu'est-ce que tar ?
Section intitulée « Qu'est-ce que 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
Section intitulée « 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 :
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éation d'archives
Section intitulée « 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
Section intitulée « 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
Section intitulée « 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
Section intitulée « 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
Section intitulée « 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
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 :
tar --zstd -cvf archive.tar.zst mon_dossier/Archiver plusieurs fichiers
Section intitulée « 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
Section intitulée « 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)
Section intitulée « 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
Section intitulée « Extraction avec compression »Les options de compression correspondent au format de l'archive :
-
.tar.gzou.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.
Extraction vers un répertoire spécifique
Section intitulée « 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
Section intitulée « 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.txtOu plusieurs fichiers à la fois :
tar -xvf archive.tar fichier1.txt fichier2.logAttention : le chemin doit correspondre exactement à celui affiché par
tar -tf archive.tar, sinon tar renvoie Not found in archive.
Utilisation des jokers (wildcards)
Section intitulée « 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. 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.
Manipulation des archives
Section intitulée « 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
Section intitulée « 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.gzAjouter des fichiers à une archive
Section intitulée « 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/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 :
tar --delete -f archive.tar chemin/vers/fichierExtraire des fichiers en fonction de motifs
Section intitulée « 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'Lire une archive endommagée
Section intitulée « Lire une archive endommagée »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 :
tar -xvf archive.tar --ignore-zerosCe 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.
Cas pratiques
Section intitulée « 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
Section intitulée « 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)
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 :
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.
Transfert d'un dossier via SSH
Section intitulée « 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 : le - demande à
tar d'écrire l'archive sur la sortie standard, que SSH transporte jusqu'au
tar -x distant.
Compression et nettoyage de logs
Section intitulée « 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-filesL'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.
Automatiser une sauvegarde avec cron
Section intitulée « 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/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.
Intégration avec find pour cibler des fichiers
Section intitulée « 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
Section intitulée « 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
Section intitulée « Toujours vérifier le contenu avant extraction »Avant d'extraire une archive, surtout si elle est volumineuse ou inconnue :
tar -tvf archive.tar.gzCela 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
Section intitulée « 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
Section intitulée « 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
- zstd : rapport vitesse/compression excellent, sur les systèmes récents
Adaptez selon votre contexte : vitesse ou taille minimale ?
Inclure la date dans le nom des archives
Section intitulée « 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
Section intitulée « 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
Section intitulée « Éviter les erreurs courantes »- Oublier
-fet 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.
Dépannage
Section intitulée « Dépannage »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ôme | Cause probable | Solution |
|---|---|---|
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.gz | Travailler sur un .tar non compressé, ou recréer l'archive complète |
tar: Unexpected EOF in archive | Archive 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 extraction | Tarbomb : l'archive n'a pas de répertoire racine | Lister avec tar -tf avant d'extraire, puis extraire avec -C dans un dossier dédié |
Not found in archive lors d'une extraction ciblée | Le chemin demandé ne correspond pas à celui stocké dans l'archive | Copier le chemin exact affiché par tar -tf archive.tar |
| Propriétaires ou permissions perdus à l'extraction | Extraction lancée sans privilèges | Extraire avec sudo pour restaurer les propriétaires d'origine |
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »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
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
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »- Les trois actions de base tiennent en trois options :
-ccrée,-tliste,-xextrait ;-fdé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-Cdans un répertoire dédié pour éviter les tarbombs. - Une archive compressée ne se modifie pas :
-ret--deleteexigent un.tarnon compressé. --excludefiltre à la création,--wildcardsfiltre à l'extraction : les quotes simples autour du motif sont obligatoires.- Combiné à
find,sshoucron,tarcouvre la sauvegarde datée, l'incrémentale (--listed-incremental) et le transfert sans fichier temporaire.
FAQ - Questions Fréquemment Posées
Section intitulée « FAQ - Questions Fréquemment Posées »Définition
tar (Tape ARchive) est un outil d'archivage qui regroupe plusieurs fichiers/dossiers dans une seule archive, préservant arborescence et métadonnées (permissions, timestamps, propriétaire).| Caractéristique | Description |
|---|---|
| Type | Archiveur non-compresseur natif |
| Format | Concaténation séquentielle des fichiers |
| Métadonnées | Préserve permissions, dates, liens |
| Compression | Via pipe (gzip, bzip2, xz) |
| Extensions | .tar, .tar.gz, .tgz, .tar.bz2, .tar.xz |
| Origine | Conçu pour sauvegardes sur bandes (1979) |
Variantes de compression
# Sans compression (archive brute)
tar -cf archive.tar dossier/
# Avec gzip (standard, rapide)
tar -czf archive.tar.gz dossier/
# Avec bzip2 (meilleure compression)
tar -cjf archive.tar.bz2 dossier/
# Avec xz (compression maximale)
tar -cJf archive.tar.xz dossier/
Contexte DevOps : Essentiel pour déploiements, backups applicatifs, transferts de code sources, création d'images Docker (layers tar).Raisons d'usage
| Cas d'usage | Avantages | Exemple |
|---|---|---|
| Backup | Préserve structure + métadonnées | tar -czf backup-$(date +%F).tar.gz /var/www |
| Transfert réseau | 1 fichier vs milliers | tar -czf - /app | ssh user@dest tar -xzf - |
| Déploiement | Reproductibilité exacte | tar -xzf release-v1.2.tar.gz -C /opt |
| Archivage | Compression efficace | tar -cJf logs-2023.tar.xz /var/log |
| Versionning | Snapshots horodatés | tar -czf config-$(date +%s).tar.gz /etc |
Avantages vs autres outils
- vs cp : Préserve permissions/propriétaires complexes
- vs zip : Format universel Linux, meilleure intégration pipe
- vs rsync : Archivage statique (pas de synchro)
- vs dd : Granularité fichiers (pas bloc brut)
# Backup incrémental (avec find)
find /var/www -mtime -1 | tar -czf daily.tar.gz -T -
# Pipeline réseau (sans fichier intermédiaire)
tar -czf - /data | ssh backup tar -xzf - -C /backups
Contexte DevOps : Backup GitLab, artifacts CI/CD, conteneurs LXC, exports Terraform state.Syntaxe générale
tar [MODE] [OPTIONS] [ARCHIVE] [FICHIERS...]
Modes principaux (obligatoire 1)
| Mode | Option courte | Option longue | Action |
|---|---|---|---|
| Create | -c |
--create |
Créer archive |
| eXtract | -x |
--extract |
Extraire archive |
| lisT | -t |
--list |
Lister contenu |
| aPpend | -r |
--append |
Ajouter fichiers |
| Update | -u |
--update |
Mettre à jour fichiers modifiés |
Options essentielles
| Option | Signification | Usage |
|---|---|---|
-f FILE |
Fichier archive | Obligatoire (sinon stdin/stdout) |
-v |
Verbeux | Affiche fichiers traités |
-z |
gZip | Compression/décompression .tar.gz |
-j |
bZip2 | Compression .tar.bz2 |
-J |
XZ | Compression .tar.xz |
-C DIR |
Change directory | Extraction dans répertoire spécifique |
-p |
Preserve permissions | Conserve droits exacts (utile root) |
Exemples typés
# Création archive gzip
tar -czf backup.tar.gz /etc/nginx
# | | |
# | | +-> Nom archive
# | +----> gZip
# +------> Create, Fichier
# Extraction verbeux
tar -xzvf backup.tar.gz -C /restore
# | | |
# | | +-> Nom archive
# | +----> Verbeux
# +-------> eXtract, gZip, Fichier
Raisons d'usage
| Cas d'usage | Avantages | Exemple |
|---|---|---|
| Backup | Préserve structure + métadonnées | tar -czf backup-$(date +%F).tar.gz /var/www |
| Transfert réseau | 1 fichier vs milliers | tar -czf - /app | ssh user@dest tar -xzf - |
| Déploiement | Reproductibilité exacte | tar -xzf release-v1.2.tar.gz -C /opt |
| Archivage | Compression efficace | tar -cJf logs-2023.tar.xz /var/log |
| Versionning | Snapshots horodatés | tar -czf config-$(date +%s).tar.gz /etc |
Avantages vs autres outils
- vs cp : Préserve permissions/propriétaires complexes
- vs zip : Format universel Linux, meilleure intégration pipe
- vs rsync : Archivage statique (pas de synchro)
- vs dd : Granularité fichiers (pas bloc brut)
# Backup incrémental (avec find)
find /var/www -mtime -1 | tar -czf daily.tar.gz -T -
# Pipeline réseau (sans fichier intermédiaire)
tar -czf - /data | ssh backup tar -xzf - -C /backups
Contexte DevOps : Backup GitLab, artifacts CI/CD, conteneurs LXC, exports Terraform state.Syntaxe générale
tar [MODE] [OPTIONS] [ARCHIVE] [FICHIERS...]
Modes principaux (obligatoire 1)
| Mode | Option courte | Option longue | Action |
|---|---|---|---|
| Create | -c |
--create |
Créer archive |
| eXtract | -x |
--extract |
Extraire archive |
| lisT | -t |
--list |
Lister contenu |
| aPpend | -r |
--append |
Ajouter fichiers |
| Update | -u |
--update |
Mettre à jour fichiers modifiés |
Options essentielles
| Option | Signification | Usage |
|---|---|---|
-f FILE |
Fichier archive | Obligatoire (sinon stdin/stdout) |
-v |
Verbeux | Affiche fichiers traités |
-z |
gZip | Compression/décompression .tar.gz |
-j |
bZip2 | Compression .tar.bz2 |
-J |
XZ | Compression .tar.xz |
-C DIR |
Change directory | Extraction dans répertoire spécifique |
-p |
Preserve permissions | Conserve droits exacts (utile root) |
Exemples typés
# Création archive gzip
tar -czf backup.tar.gz /etc/nginx
# | | |
# | | +-> Nom archive
# | +----> gZip
# +------> Create, Fichier
# Extraction verbeux
tar -xzvf backup.tar.gz -C /restore
# | | |
# | | +-> Nom archive
# | +----> Verbeux
# +-------> eXtract, gZip, Fichier
Création archive basique
# Syntaxe minimale
tar -cf archive.tar dossier/
# ||
# |+-> Fichier archive (nom obligatoire avec -f)
# +---> Create (créer)
Exemples pratiques
# Archive d'un répertoire
tar -cf backup.tar /var/www/html
# Archiver plusieurs sources
tar -cf projet.tar src/ docs/ README.md
# Verbeux (afficher fichiers traités)
tar -cvf backup.tar /etc/nginx
# Préserver permissions complètes (mode root)
tar -cpf system.tar /etc /opt
# |
# +-> Preserve permissions
Caractéristiques
| Propriété | Comportement |
|---|---|
| Compression | Aucune (archive brute) |
| Taille | Somme fichiers + métadonnées (~101% sources) |
| Vitesse | Rapide (I/O seul) |
| Métadonnées | Permissions, timestamps, liens préservés |
| Modification | Possible (-r pour append) |
Différence vs tar.gz
# SANS compression (rapide, grosse taille)
tar -cf backup.tar logs/ # 850 Mo
# AVEC compression (lent, petite taille)
tar -czf backup.tar.gz logs/ # 120 Mo
Usage : Archives à compléter incrémentalement, transferts réseau rapides (pipe).Création avec compression gzip
# Option -z pour gzip
tar -czf archive.tar.gz dossier/
# |
# +-> gZip (compression)
# Équivalent verbeux
tar -czvf backup.tar.gz /var/www
Variantes de compression
| Méthode | Commande | Taux compression | Vitesse | Compatibilité |
|---|---|---|---|---|
| gzip | tar -czf |
~60-70% | Rapide | Universelle |
| bzip2 | tar -cjf |
~70-80% | Moyen | Très bonne |
| xz | tar -cJf |
~80-90% | Lent | Bonne (2009+) |
| lzma | tar --lzma -cf |
~80-85% | Lent | Moyenne |
Exemples comparatifs
# Test sur 1 Go de logs
# Sans compression (1.02 Go, 8s)
tar -cf logs.tar /var/log
# gzip - standard (320 Mo, 25s)
tar -czf logs.tar.gz /var/log
# bzip2 - meilleur ratio (180 Mo, 95s)
tar -cjf logs.tar.bz2 /var/log
# xz - compression max (140 Mo, 180s)
tar -cJf logs.tar.xz /var/log
Bonnes pratiques
# Convention nommage
tar -czf backup-$(date +%F).tar.gz /data
# backup-2026-01-08.tar.gz
# Exclure fichiers volumineux
tar -czf archive.tar.gz --exclude='*.mp4' dossier/
# Niveau compression custom (1-9)
GZIP=-9 tar -czf max-compress.tar.gz /data
Usage DevOps : Backups quotidiens, artifacts CI/CD, conteneurs exports.Extraction de base
# Extraction dans répertoire courant
tar -xzf archive.tar.gz
# ||
# |+-> gZip (décompression automatique)
# +---> eXtract
# Verbeux (voir fichiers extraits)
tar -xzvf backup.tar.gz
Options d'extraction
| Option | Usage | Exemple |
|---|---|---|
-C DIR |
Extraire vers répertoire spécifique | tar -xzf data.tar.gz -C /restore |
-p |
Préserver permissions exactes | tar -xzpf system.tar.gz (root) |
--strip-components=N |
Retirer N niveaux de dossiers | tar -xzf app.tar.gz --strip-components=1 |
--keep-old-files |
Ne pas écraser existants | tar -xzf backup.tar.gz -k |
-v |
Mode verbeux | Affiche chaque fichier extrait |
Exemples pratiques
# Extraction dans /tmp
tar -xzf backup.tar.gz -C /tmp
# Extraire en préservant tout (mode root)
sudo tar -xzpf system-backup.tar.gz -C /
# Retirer dossier racine (app/src/* -> src/*)
tar -xzf release.tar.gz --strip-components=1
# Extraire fichier spécifique
tar -xzf archive.tar.gz chemin/vers/fichier.txt
# Extraire pattern (tous les .conf)
tar -xzf backup.tar.gz --wildcards '*.conf'
Vérifications avant extraction
# Lister contenu (sans extraire)
tar -tzf archive.tar.gz
# Compter fichiers
tar -tzf backup.tar.gz | wc -l
# Vérifier intégrité
gunzip -t backup.tar.gz
Sécurité : Toujours lister avant extraction (risque chemin absolus, path traversal).Listing basique
# Lister fichiers (tar non compressé)
tar -tf archive.tar
# |
# +-> lisT (afficher contenu)
# Lister tar.gz
tar -tzf archive.tar.gz
# |
# +-> gZip
# Avec détails (permissions, taille, date)
tar -tvf backup.tar
# |
# +-> Verbeux (format long)
Formats de sortie
# Sortie simple (chemins seulement)
$ tar -tzf backup.tar.gz
app/
app/config.yml
app/main.py
# Sortie détaillée (ls -l style)
$ tar -tvzf backup.tar.gz
drwxr-xr-x user/group 0 2026-01-08 app/
-rw-r--r-- user/group 452 2026-01-08 app/config.yml
-rwxr-xr-x user/group 8743 2026-01-08 app/main.py
Filtrage et recherche
# Chercher fichier spécifique
tar -tzf archive.tar.gz | grep config
# Compter fichiers
tar -tzf backup.tar.gz | wc -l
# Lister seulement .py
tar -tzf app.tar.gz | grep '\.py$'
# Taille totale décompressée
tar -tvzf backup.tar.gz | awk '{sum+=$3} END {print sum/1024/1024 "Mo"}'
Vérifications sécurité
# Détecter chemins absolus (risque écrasement)
tar -tzf suspect.tar.gz | grep '^/'
# Détecter path traversal
tar -tzf suspect.tar.gz | grep '\.\.'
# Analyser structure
tar -tzf archive.tar.gz | cut -d/ -f1 | sort -u
Contexte DevOps : Validation artifacts CI/CD, audit backups, vérification releases.Ajout incrémental
# Option -r (append)
tar -rvf archive.tar nouveau_fichier.txt
# ||
# |+-> Verbeux (optionnel)
# +---> aPpend (ajouter)
# Ajouter plusieurs fichiers
tar -rvf backup.tar docs/ config.yml
Limitations importantes
| Contrainte | Raison | Solution |
|---|---|---|
| Archives compressées | Incompatible (-r refuse .tar.gz) | Décompresser → ajouter → recompresser |
| Position | Ajout en fin d'archive | Utiliser -A pour concaténer |
| Taille | Archive grandit linéairement | Recréer périodiquement |
Workflow archives compressées
# Méthode 1 : Décompresser temporairement
gunzip backup.tar.gz # backup.tar
tar -rvf backup.tar new_file.txt # Ajout
gzip backup.tar # backup.tar.gz
# Méthode 2 : Extraction complète + recréation
mkdir temp && tar -xzf backup.tar.gz -C temp
cp new_file.txt temp/
tar -czf backup.tar.gz -C temp .
# Méthode 3 : Concaténation d'archives
tar -czf addon.tar.gz new_files/
tar -Af main.tar addon.tar # Fusionne (tar non compressé)
Alternatives modernes
# Backup incrémental avec find
find /data -newer /tmp/last_backup.stamp | \
tar -czf incremental.tar.gz -T -
touch /tmp/last_backup.stamp
# Versioning (créer nouvelle archive)
tar -czf backup-$(date +%Y%m%d-%H%M).tar.gz /data
Bonne pratique : Privilégier nouvelles archives horodatées vs append sur grosses archives.Extraction ciblée
# Extraire 1 fichier (chemin exact)
tar -xzf archive.tar.gz chemin/vers/fichier.txt
# Extraire plusieurs fichiers
tar -xzf backup.tar.gz file1.conf file2.log
# Extraire avec pattern (wildcards)
tar -xzf archive.tar.gz --wildcards '*.conf'
Trouver le chemin exact
# Lister pour identifier chemin
tar -tzf archive.tar.gz | grep config
# Extraction avec résultat
tar -xzvf backup.tar.gz app/config/database.yml
Extraction avec filtres
| Méthode | Exemple | Usage |
|---|---|---|
| Pattern simple | tar -xzf data.tar.gz '*.json' |
Extension spécifique |
| Wildcards | tar -xzf backup.tar.gz --wildcards 'logs/2026-*' |
Pattern complexe |
| Dossier entier | tar -xzf archive.tar.gz app/config/ |
Répertoire complet |
| Exclusion | tar -xzf data.tar.gz --exclude='*.tmp' |
Inverser sélection |
Exemples pratiques
# Extraire tous les .conf d'un backup système
tar -xzf system.tar.gz --wildcards '*.conf' -C /tmp
# Restaurer seulement /etc/nginx
tar -xzf full-backup.tar.gz etc/nginx
# Extraire avec remplacement chemin
tar -xzf app.tar.gz app/config.yml --strip-components=1
# Résultat : config.yml (sans dossier app/)
# Extraction multiple ciblée
tar -xzf backup.tar.gz \
etc/nginx/nginx.conf \
etc/ssl/private/server.key
Astuce : Toujours lister (-t) avant extraction pour vérifier chemins exacts.Exclusions simples
# Exclure pattern (fichiers .log)
tar --exclude='*.log' -czf backup.tar.gz /var/www
# Exclure plusieurs patterns
tar --exclude='*.tmp' --exclude='*.cache' -czf clean.tar.gz /app
# Exclure dossier entier
tar --exclude='node_modules' -czf projet.tar.gz /projet
Exclusions avancées
| Méthode | Syntaxe | Usage |
|---|---|---|
| Pattern simple | --exclude='*.log' |
Extension spécifique |
| Dossier | --exclude='cache' |
Nom dossier partout |
| Chemin absolu | --exclude='/var/cache' |
Emplacement précis |
| Fichier liste | --exclude-from=exclusions.txt |
Multiples patterns |
| Regex | --exclude-vcs |
Exclure .git, .svn auto |
Fichier d'exclusions
# Créer liste exclusions
cat > exclusions.txt <<EOF
*.log
*.tmp
node_modules
.git
__pycache__
*.pyc
EOF
# Utiliser la liste
tar --exclude-from=exclusions.txt -czf clean.tar.gz /projet
Patterns courants DevOps
# Backup code sans dépendances
tar --exclude='node_modules' \
--exclude='vendor' \
--exclude='.git' \
-czf code-only.tar.gz /app
# Backup avec exclusions multiples
tar --exclude='*.log' \
--exclude='*.tmp' \
--exclude='cache/*' \
--exclude-vcs \
-czf production.tar.gz /var/www
# Exclure fichiers volumineux (>100M)
tar --exclude-from=<(find /data -size +100M) \
-czf data-light.tar.gz /data
Option --exclude-vcs
# Exclut automatiquement
tar --exclude-vcs -czf projet.tar.gz /code
# Ignore : .git, .svn, .hg, .bzr, CVS
Astuce : Tester avec --exclude + -t (list) avant création réelle.Pour aller plus loin
Section intitulée « Pour aller plus loin »- Restic : sauvegardes chiffrées et dédupliquées : quand les archives
tardatées ne suffisent plus, un vrai outil de sauvegarde incrémentale avec chiffrement et rétention automatique.