0 Votes

ScriptsPerso/Sauvegarde

Modifié par john le 2026/04/16 13:58

Script de sauvegarde automatique

Objectif

Ce script permet de sauvegarder un ou plusieurs dossiers automatiquement avec `rsync`, en conservant les permissions, en loguant les actions, et en pouvant être planifié avec `cron`.


Pourquoi `rsync` ?

  • Synchronisation incrémentale (copie uniquement les fichiers modifiés)
  • Conservation des permissions, dates et liens symboliques
  • Prise en charge des exclusions
  • Très rapide, fiable et largement disponible

Exemple de script de sauvegarde

#!/bin/bash

set -euo pipefail

# === Configuration ===
SOURCE="$HOME/Documents"
DEST="/mnt/backup/Documents"
LOGFILE="$HOME/rsync_backup.log"
DATE=$(date "+%Y-%m-%d %H:%M:%S")

# === Sauvegarde ===
echo "[$DATE] Sauvegarde de $SOURCE vers $DEST" >> "$LOGFILE"
rsync -avh --delete "$SOURCE/" "$DEST/" >> "$LOGFILE" 2>&1
echo "[$DATE] Terminé." >> "$LOGFILE"

Explication des options

  • `-a` : archive (conserve tout : droits, dates, etc.)
  • `-v` : mode verbeux (affiche les fichiers copiés)
  • `-h` : taille lisible par l'humain
  • `delete` : supprime les fichiers dans la destination s'ils n'existent plus dans la source

Ajout à cron

Pour exécuter ce script tous les jours à 3h du matin :

  1. Lancer `crontab -e`
    2. Ajouter la ligne suivante :
0 3 * * * /chemin/vers/sauvegarde.sh

Pour s’assurer que le script fonctionne :

  • Rendre le fichier exécutable : `chmod +x sauvegarde.sh`
  • Tester manuellement d’abord : `./sauvegarde.sh`

Ajouter une exclusion

Par exemple pour ignorer les fichiers `.bak` :

rsync -avh --delete --exclude='*.bak' "$SOURCE/" "$DEST/"

On peut aussi exclure un dossier spécifique avec :
--exclude='node_modules/'


Sauvegarde avec date dans le nom

Pour créer un nouveau dossier par jour :

DEST="/mnt/backup/Documents_$(date +%F)"
rsync -a "$SOURCE/" "$DEST/"

Astuce : envoi de notification à la fin

notify-send "Sauvegarde terminée" "Documents sauvegardés avec succès"

(Nécessite `libnotify` et un environnement graphique)


Bonnes pratiques

  • Toujours tester le script avant de l’automatiser
  • Logger les opérations pour savoir ce qui a été fait
  • Monter le disque de destination automatiquement
  • Penser à vérifier les sauvegardes régulièrement !

Liens utiles

  • Manuel de rsync https:linux.die.net/man/1/rsync)
  • Tutoriel rsync avancé https:explainshell.com/explain?cmd=rsync+-avh+delete+source%2F+destination%2F)

Liens internes