Aller au contenu
Administration Linux medium

tar avancé : backups, compression et restauration sélective

11 min de lecture

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”).

  • Créer une sauvegarde complète puis des sauvegardes incrémentales avec --listed-incremental
  • Exclure des répertoires ou patterns avec --exclude et --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

tar avancé est indispensable dans ces situations d’administration :

SituationTechnique 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 espacexz ou zstd
Restaurer un seul fichier /etc/nginx.conf depuis une archiveextraction sélective
Envoyer un backup vers un serveur distant sans monter de NFStar + ssh pipeline
Vérifier qu’une archive de sauvegarde est lisibletar -tvf ou --compare
Fenêtre de terminal
# Créer une archive compressée gzip
tar -czf archive.tar.gz /repertoire/
# Lister le contenu
tar -tvf archive.tar.gz
# Extraire
tar -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.

Fenêtre de terminal
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 .snar n’existe pas → tar archive tout
Fenêtre de terminal
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.

Fenêtre de terminal
# Compter les fichiers dans chaque backup
tar -tvf /var/backup/home-full-2026-04-09.tar.gz | wc -l
tar -tvf /var/backup/home-incr-2026-04-09-0200.tar.gz | wc -l

Le backup incrémental doit contenir beaucoup moins de fichiers que le backup complet.

La restauration se fait dans l’ordre : backup complet, puis chaque incrémental dans l’ordre chronologique.

Fenêtre de terminal
# 1. Extraire le backup complet
tar --listed-incremental=/dev/null \
-xzf /var/backup/home-full-2026-04-09.tar.gz \
-C /restore/
# 2. Appliquer l'incrémental du lendemain
tar --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).


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.

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

/etc/backup/exclusions.txt
.cache
.local/share/Trash
**/node_modules
**/.git
**/tmp
*.log
*.pid
/proc
/sys
/dev
/run
Fenêtre de terminal
tar -czf /var/backup/systeme.tar.gz \
--exclude-from=/etc/backup/exclusions.txt \
/

CodecOption tarExtensionTauxVitesseQuand l’utiliser
gzip-z.tar.gzMoyenTrès rapidePar défaut — logs, configs, transferts fréquents
bzip2-j.tar.bz2BonLentArchivage longue durée, espace prioritaire
xz-J.tar.xzExcellentTrès lentDistributions, sources — taille minimale
zstd--zstd.tar.zstTrès bonRapideBackups modernes, meilleur ratio vitesse/taux
Fenêtre de terminal
# gzip — usage quotidien (défaut)
tar -czf logs-$(date +%F).tar.gz /var/log/nginx/
# bzip2 — archivage longue durée
tar -cjf archives-2025.tar.bz2 /var/archive/2025/
# xz — distribution de sources
tar -cJf mon-projet-1.0.tar.xz ./mon-projet/
# zstd — backup rapide avec bon taux
tar --zstd -cf backup-$(date +%F).tar.zst /home/
Fenêtre de terminal
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.

Fenêtre de terminal
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.conf
Fenêtre de terminal
tar -xzf /var/backup/home-full-2026-04-09.tar.gz \
-C /tmp/restore/ \
home/bob/.config/nginx/nginx.conf

Le chemin doit correspondre exactement à ce que tar -tvf affiche (sans / initial dans la plupart des cas).

Fenêtre de terminal
tar -xzf /var/backup/home-full-2026-04-09.tar.gz \
-C /tmp/restore/ \
home/bob/.config/
Fenêtre de terminal
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/.


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.

Fenêtre de terminal
# Archiver localement, extraire sur le serveur distant
tar -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 »
Fenêtre de terminal
# Archiver et extraire immédiatement sur le serveur distant
tar -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.

Fenêtre de terminal
ssh bob@serveur-source "tar -czf - /var/www/html/" > /backup/html-$(date +%F).tar.gz

Un backup inutilisable est pire qu’aucun backup. Toujours vérifier avant de se retrouver dans une situation d’urgence.

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

Fenêtre de terminal
tar -tvf /var/backup/home-full-2026-04-09.tar.gz | tail -5
echo "Code retour : $?"
Fenêtre de terminal
tar --compare -czf - /home/bob/ -C / 2>&1 | head -20

Cette commande compare les fichiers de l’archive avec le système de fichiers actuel et affiche les différences.


SymptômeCause probableSolution
tar: Error is not recoverable: exiting nowArchive corrompue ou tronquéeVérifier le fichier source, retester avec -tvf
tar: Removing leading '/' from member namesChemins absolus dans l’archiveNormal avec -C / à l’extraction. Utiliser --strip-components si besoin
Backup incrémental archive tout malgré le .snarFichier .snar absent ou corrompuSupprimer le .snar et refaire un backup complet
xz: Cannot exec: No such file or directoryxz non installéapt install xz-utils ou dnf install xz
zstd: command not foundzstd non installéapt install zstd ou dnf install zstd
Extraction coupée à mi-cheminEspace disque insuffisantdf -h pour vérifier, libérer de l’espace

  • --listed-incremental est le mécanisme natif de tar pour les backups incrémentaux : backup complet au premier appel, incrémental ensuite.
  • --exclude et --exclude-from évitent d’archiver les caches, .git et node_modules.
  • zstd est le meilleur choix pour les backups modernes : taux comparable à bzip2, vitesse proche de gzip.
  • L’extraction sélective (tar -xzf archive.tar.gz chemin/dans/archive) évite de tout décompresser.
  • Le pipeline tar | ssh transfère une arborescence complète sans fichier temporaire et préserve les permissions.
  • Toujours tester une archive avec tar -tvf avant d’en avoir besoin.

Ce site vous est utile ?

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

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn