ScriptsPerso/Sauvegarde
Modifié par john le 2025/05/25 00:31
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"
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 :
- 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/"
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)