Tout le monde sait créer un .tar.gz. Le niveau RHCSA et LFCS exige davantage. Sauvegardes incrémentales après minuit, exclusion des /proc et des caches, transfert direct vers un serveur de backup via SSH sans créer de fichier intermédiaire, restauration d’un seul fichier dans une archive de 50 Go — ce sont ces gestes que ce guide couvre.
Ce sujet est un objectif direct RHCSA (“Archive, compress, unpack, and uncompress files using tar, star, gzip, and bzip2”) et LFCS (“Archive, backup, compress, unpack, and decompress files”).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Créer une sauvegarde complète puis des sauvegardes incrémentales avec
--listed-incremental - Exclure des répertoires ou patterns avec
--excludeet--exclude-from - Choisir entre gzip, bzip2, xz et zstd selon le compromis vitesse/taux
- Extraire un fichier précis d’une grande archive sans tout décompresser
- Transférer une archive via SSH en un pipeline sans fichier temporaire
- Vérifier l’intégrité d’une archive avant restauration
Dans quel contexte ?
Section intitulée « Dans quel contexte ? »tar avancé est indispensable dans ces situations d’administration :
| Situation | Technique tar |
|---|---|
| Backup quotidien d’un répertoire de config | --listed-incremental |
Sauvegarder /home sans les caches et .git | --exclude |
| Archiver un gros répertoire sur un serveur limité en espace | xz ou zstd |
Restaurer un seul fichier /etc/nginx.conf depuis une archive | extraction sélective |
| Envoyer un backup vers un serveur distant sans monter de NFS | tar + ssh pipeline |
| Vérifier qu’une archive de sauvegarde est lisible | tar -tvf ou --compare |
Rappel express : les options fondamentales
Section intitulée « Rappel express : les options fondamentales »# Créer une archive compressée gziptar -czf archive.tar.gz /repertoire/
# Lister le contenutar -tvf archive.tar.gz
# Extrairetar -xzf archive.tar.gz -C /destination/-c créer · -x extraire · -t lister · -v verbose · -f fichier · -z gzip · -j bzip2 · -J xz · --zstd zstd
Sauvegardes incrémentales avec --listed-incremental
Section intitulée « Sauvegardes incrémentales avec --listed-incremental »Une sauvegarde complète archive tout. Une sauvegarde incrémentale n’archive que les fichiers modifiés ou créés depuis la dernière sauvegarde. C’est la base de tout plan de backup sérieux.
tar gère cela nativement via un fichier snapshot (.snar) qui enregistre l’état du répertoire au moment du backup.
Étape 1 — Backup complet (niveau 0)
Section intitulée « Étape 1 — Backup complet (niveau 0) »tar --listed-incremental=/var/backup/home.snar \ -czf /var/backup/home-full-$(date +%F).tar.gz \ /home/bob/--listed-incremental=/var/backup/home.snar: crée ou met à jour le fichier snapshot- Au premier appel, le
.snarn’existe pas →tararchive tout
Étape 2 — Backup incrémental (niveau 1+)
Section intitulée « Étape 2 — Backup incrémental (niveau 1+) »tar --listed-incremental=/var/backup/home.snar \ -czf /var/backup/home-incr-$(date +%F-%H%M).tar.gz \ /home/bob/La deuxième fois, tar lit le snapshot et n’inclut que les fichiers modifiés depuis la dernière exécution.
Vérification
Section intitulée « Vérification »# Compter les fichiers dans chaque backuptar -tvf /var/backup/home-full-2026-04-09.tar.gz | wc -ltar -tvf /var/backup/home-incr-2026-04-09-0200.tar.gz | wc -lLe backup incrémental doit contenir beaucoup moins de fichiers que le backup complet.
Restauration d’une chaîne incrémentale
Section intitulée « Restauration d’une chaîne incrémentale »La restauration se fait dans l’ordre : backup complet, puis chaque incrémental dans l’ordre chronologique.
# 1. Extraire le backup complettar --listed-incremental=/dev/null \ -xzf /var/backup/home-full-2026-04-09.tar.gz \ -C /restore/
# 2. Appliquer l'incrémental du lendemaintar --listed-incremental=/dev/null \ -xzf /var/backup/home-incr-2026-04-10-0200.tar.gz \ -C /restore/--listed-incremental=/dev/null lors de l’extraction indique à tar d’appliquer les suppressions enregistrées dans le snapshot (fichiers effacés entre deux backups).
Exclure des fichiers et répertoires
Section intitulée « Exclure des fichiers et répertoires »Sauvegarder /home en incluant les caches de navigateur, les .git et les répertoires node_modules est un gaspillage. tar offre deux mécanismes d’exclusion.
--exclude — exclure un pattern
Section intitulée « --exclude — exclure un pattern »tar -czf /var/backup/home-clean.tar.gz \ --exclude='.cache' \ --exclude='.local/share/Trash' \ --exclude='**/node_modules' \ --exclude='**/.git' \ /home/bob/- Les patterns sont relatifs au répertoire archivé
- On peut cumuler plusieurs
--exclude - Les
**(globbing) fonctionnent avec GNU tar
--exclude-from — fichier de liste d’exclusions
Section intitulée « --exclude-from — fichier de liste d’exclusions »Pour les listes longues, externalisez dans un fichier :
.cache.local/share/Trash**/node_modules**/.git**/tmp*.log*.pid/proc/sys/dev/runtar -czf /var/backup/systeme.tar.gz \ --exclude-from=/etc/backup/exclusions.txt \ /Choisir entre gzip, bzip2, xz et zstd
Section intitulée « Choisir entre gzip, bzip2, xz et zstd »| Codec | Option tar | Extension | Taux | Vitesse | Quand l’utiliser |
|---|---|---|---|---|---|
| gzip | -z | .tar.gz | Moyen | Très rapide | Par défaut — logs, configs, transferts fréquents |
| bzip2 | -j | .tar.bz2 | Bon | Lent | Archivage longue durée, espace prioritaire |
| xz | -J | .tar.xz | Excellent | Très lent | Distributions, sources — taille minimale |
| zstd | --zstd | .tar.zst | Très bon | Rapide | Backups modernes, meilleur ratio vitesse/taux |
Exemples concrets
Section intitulée « Exemples concrets »# gzip — usage quotidien (défaut)tar -czf logs-$(date +%F).tar.gz /var/log/nginx/
# bzip2 — archivage longue duréetar -cjf archives-2025.tar.bz2 /var/archive/2025/
# xz — distribution de sourcestar -cJf mon-projet-1.0.tar.xz ./mon-projet/
# zstd — backup rapide avec bon tauxtar --zstd -cf backup-$(date +%F).tar.zst /home/Vérifier le taux de compression effectif
Section intitulée « Vérifier le taux de compression effectif »ls -lh /var/backup/home-full-2026-04-09.tar.{gz,zst,bz2,xz}du -sh /home/bob/Extraction sélective — un seul fichier d’une grande archive
Section intitulée « Extraction sélective — un seul fichier d’une grande archive »Inutile de décompresser 50 Go pour récupérer un seul fichier de configuration.
Lister le contenu pour trouver le chemin exact
Section intitulée « Lister le contenu pour trouver le chemin exact »tar -tvf /var/backup/home-full-2026-04-09.tar.gz | grep nginx.conf-rw-r--r-- bob/bob 2847 2026-04-08 22:13 home/bob/.config/nginx/nginx.confExtraire un fichier précis
Section intitulée « Extraire un fichier précis »tar -xzf /var/backup/home-full-2026-04-09.tar.gz \ -C /tmp/restore/ \ home/bob/.config/nginx/nginx.confLe chemin doit correspondre exactement à ce que tar -tvf affiche (sans / initial dans la plupart des cas).
Extraire un répertoire complet
Section intitulée « Extraire un répertoire complet »tar -xzf /var/backup/home-full-2026-04-09.tar.gz \ -C /tmp/restore/ \ home/bob/.config/Extraire vers un répertoire différent
Section intitulée « Extraire vers un répertoire différent »tar -xzf /var/backup/home-full-2026-04-09.tar.gz \ --strip-components=2 \ -C /tmp/restore/ \ home/bob/.config/--strip-components=2 supprime les 2 premiers niveaux du chemin dans l’archive (home/bob/) pour extraire directement dans /tmp/restore/.
Transfert via SSH — sans fichier intermédiaire
Section intitulée « Transfert via SSH — sans fichier intermédiaire »L’un des gestes les plus élégants de tar : créer une archive sur la sortie standard, la passer directement dans SSH, et l’extraire sur le serveur distant — tout en un seul pipeline.
Envoyer vers un serveur distant
Section intitulée « Envoyer vers un serveur distant »# Archiver localement, extraire sur le serveur distanttar -czf - /home/bob/projets/ | ssh bob@serveur-backup "cat > /backup/projets-$(date +%F).tar.gz"Copier une arborescence en préservant les permissions
Section intitulée « Copier une arborescence en préservant les permissions »# Archiver et extraire immédiatement sur le serveur distanttar -czf - /etc/ | ssh bob@serveur-backup "tar -xzf - -C /backup/etc/"Ce pipeline préserve les permissions, les UID, les GID, les liens symboliques et les dates — ce que scp -r ne fait pas toujours correctement.
Récupérer une archive depuis un serveur distant
Section intitulée « Récupérer une archive depuis un serveur distant »ssh bob@serveur-source "tar -czf - /var/www/html/" > /backup/html-$(date +%F).tar.gzVérifier l’intégrité d’une archive
Section intitulée « Vérifier l’intégrité d’une archive »Un backup inutilisable est pire qu’aucun backup. Toujours vérifier avant de se retrouver dans une situation d’urgence.
Lister le contenu (test de lecture)
Section intitulée « Lister le contenu (test de lecture) »tar -tvf /var/backup/home-full-2026-04-09.tar.gz > /dev/null && echo "Archive OK"Si tar renvoie un code de retour non-nul, l’archive est corrompue.
Tester l’extraction sans écrire (dry run)
Section intitulée « Tester l’extraction sans écrire (dry run) »tar -tvf /var/backup/home-full-2026-04-09.tar.gz | tail -5echo "Code retour : $?"Comparer avec la source (si elle existe encore)
Section intitulée « Comparer avec la source (si elle existe encore) »tar --compare -czf - /home/bob/ -C / 2>&1 | head -20Cette commande compare les fichiers de l’archive avec le système de fichiers actuel et affiche les différences.
Dépannage courant
Section intitulée « Dépannage courant »| Symptôme | Cause probable | Solution |
|---|---|---|
tar: Error is not recoverable: exiting now | Archive corrompue ou tronquée | Vérifier le fichier source, retester avec -tvf |
tar: Removing leading '/' from member names | Chemins absolus dans l’archive | Normal avec -C / à l’extraction. Utiliser --strip-components si besoin |
Backup incrémental archive tout malgré le .snar | Fichier .snar absent ou corrompu | Supprimer le .snar et refaire un backup complet |
xz: Cannot exec: No such file or directory | xz non installé | apt install xz-utils ou dnf install xz |
zstd: command not found | zstd non installé | apt install zstd ou dnf install zstd |
| Extraction coupée à mi-chemin | Espace disque insuffisant | df -h pour vérifier, libérer de l’espace |
À retenir
Section intitulée « À retenir »--listed-incrementalest le mécanisme natif detarpour les backups incrémentaux : backup complet au premier appel, incrémental ensuite.--excludeet--exclude-fromévitent d’archiver les caches,.gitetnode_modules.- zstd est le meilleur choix pour les backups modernes : taux comparable à
bzip2, vitesse proche degzip. - L’extraction sélective (
tar -xzf archive.tar.gz chemin/dans/archive) évite de tout décompresser. - Le pipeline
tar | sshtransfère une arborescence complète sans fichier temporaire et préserve les permissions. - Toujours tester une archive avec
tar -tvfavant d’en avoir besoin.