Retour au cours

archives backup

Objectifs

  • Créer et extraire des archives avec tar.
  • Compresser des archives avec gzip, bzip2, ou xz.
  • Synchroniser des fichiers et des dossiers de manière efficace avec rsync.
  • Comprendre les bases d’une stratégie de sauvegarde simple.

Explications détaillées

Notions clés

tar : L’archiveur de fichiers

tar (Tape ARchiver) est l’outil standard pour regrouper plusieurs fichiers et dossiers en un seul fichier (une “archive”). Il ne compresse pas les données par défaut, il se contente de les assembler.

  • Créer une archive (-c) : tar -cf archive.tar dossier/
  • Extraire une archive (-x) : tar -xf archive.tar
  • Lister le contenu (-t) : tar -tf archive.tar
  • Verbeux (-v) : Affiche les noms des fichiers pendant l’opération.

Compression : gzip, bzip2, xz

Pour réduire la taille d’une archive, on la compresse. tar peut appeler un programme de compression directement via une option.

  • -z pour gzip : Rapide et courant. Extension .tar.gz ou .tgz.
  • -j pour bzip2 : Plus lent, mais meilleure compression. Extension .tar.bz2.
  • -J pour xz : Très lent, mais compression excellente. Extension .tar.xz.

La combinaison la plus courante est tar avec gzip.

rsync : La synchronisation intelligente

rsync est un outil extrêmement puissant pour copier et synchroniser des fichiers et des dossiers, localement ou à travers le réseau. Sa grande force est qu’il ne transfère que les différences entre la source et la destination, ce qui le rend très efficace pour les sauvegardes incrémentales.

L’option la plus courante est -a (archive), qui est un raccourci pour un ensemble d’options préservant les permissions, les dates, etc.

Syntaxe / Usages

# Créer une archive compressée avec gzip
# c: create, z: gzip, v: verbose, f: file
tar -czvf mon_archive.tar.gz /chemin/vers/le/dossier

# Extraire une archive .tar.gz
tar -xzvf mon_archive.tar.gz

# Extraire dans un dossier spécifique (-C)
mkdir destination && tar -xf mon_archive.tar.gz -C destination/

# Synchroniser un dossier local vers un autre (backup)
# -a: mode archive, -v: verbeux, --delete: supprime les fichiers dans la destination
# qui n'existent plus dans la source.
rsync -av --delete /chemin/source/ /chemin/destination_backup/

# Synchroniser vers un serveur distant via SSH
rsync -avz -e ssh /chemin/source/ user@serveur:/chemin/destination/
# -z: active la compression pendant le transfert

Exemples

# 1. Créer une sauvegarde de votre projet
mkdir -p mon_projet/src
echo "code" > mon_projet/src/main.py
echo "docs" > mon_projet/README.md

# Archiver et compresser le projet
tar -czvf projet_backup.tar.gz mon_projet/

# Lister le contenu pour vérifier
tar -tf projet_backup.tar.gz

# 2. Utiliser rsync pour une sauvegarde locale
mkdir -p backup_destination
rsync -av mon_projet/ backup_destination/

# Modifier un fichier dans la source
echo "updated" >> mon_projet/README.md

# Relancer rsync : seul le fichier modifié sera transféré
rsync -av mon_projet/ backup_destination/

Bonnes pratiques

  • Adoptez tar -czvf et tar -xzvf comme des réflexes pour les archives .tar.gz.
  • Pour les sauvegardes régulières, privilégiez rsync à cp. C’est beaucoup plus efficace car il ne copie que les changements.
  • Faites attention au slash (/) final dans les chemins source de rsync.
    • rsync -a source/ destination/ : Copie le dossier source à l’intérieur de destination.
    • rsync -a source destination/ : Copie le contenu de source dans destination.
  • Testez toujours votre processus de restauration. Une sauvegarde que vous ne savez pas restaurer ne sert à rien.

Pièges courants

  • Complexité des options de tar : Les options de tar peuvent être déroutantes. Mémorisez les combinaisons les plus courantes.
  • Compression excessive : Utiliser xz sur des fichiers déjà compressés (images, vidéos) n’apportera quasiment aucun gain pour un coût en temps de calcul très élevé.
  • Oublier --delete avec rsync : Si vous voulez un miroir exact, l’option --delete est nécessaire pour que les fichiers supprimés de la source le soient aussi dans la destination.

Exercices

  1. Archivage complet :

    • Créez un dossier contenant quelques fichiers texte.
    • Créez une archive .tar.gz de ce dossier.
    • Créez un nouveau dossier, déplacez-vous dedans, et extrayez l’archive pour vérifier que tout a fonctionné.
  2. Synchronisation de base :

    • Créez deux dossiers, source et destination.
    • Ajoutez des fichiers dans source.
    • Utilisez rsync pour synchroniser source vers destination.
    • Supprimez un fichier dans source et relancez rsync avec l’option --delete pour voir la différence.
  3. Script de backup simple :

    • Écrivez un script backup.sh qui :
      1. Prend un nom de dossier en argument.
      2. Crée une archive .tar.gz de ce dossier, nommée backup-NOM_DOSSIER-DATE.tar.gz.
      3. Affiche un message de succès avec le nom du fichier créé.