0 Votes

Code source wiki de ScriptsPerso/Sauvegarde

Version 2.8 par john le 2025/05/24 23:27

Afficher les derniers auteurs
1 = Script de sauvegarde automatique =
2
3 {{toc/}}
4
5 == Objectif ==
6
7 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`.
8
9 ----
10
11 == Pourquoi `rsync` ? ==
12
13 * Synchronisation incrémentale (copie uniquement les fichiers modifiés)
14 * Conservation des permissions, dates et liens symboliques
15 * Prise en charge des exclusions
16 * Très rapide, fiable et largement disponible
17
18 ----
19
20 == Exemple de script de sauvegarde ==
21
22 {{code language="bash"}}
23 #!/bin/bash
24
25 set -euo pipefail
26
27 # === Configuration ===
28 SOURCE="$HOME/Documents"
29 DEST="/mnt/backup/Documents"
30 LOGFILE="$HOME/rsync_backup.log"
31 DATE=$(date "+%Y-%m-%d %H:%M:%S")
32
33 # === Sauvegarde ===
34 echo "[$DATE] Sauvegarde de $SOURCE vers $DEST" >> "$LOGFILE"
35 rsync -avh --delete "$SOURCE/" "$DEST/" >> "$LOGFILE" 2>&1
36 echo "[$DATE] Terminé." >> "$LOGFILE"
37 {{/code}}
38
39 ----
40
41 == Explication des options ==
42
43 * `-a` : archive (conserve tout : droits, dates, etc.)
44 * `-v` : mode verbeux (affiche les fichiers copiés)
45 * `-h` : taille lisible par l'humain
46 * `--delete` : supprime les fichiers dans la destination s'ils n'existent plus dans la source--
47
48 ----
49
50 == Ajout à cron ==
51
52 Pour exécuter ce script tous les jours à 3h du matin :
53
54 1. Lancer `crontab -e`
55 2. Ajouter la ligne suivante :
56
57 {{code language="bash"}}
58 0 3 * * * /chemin/vers/sauvegarde.sh
59 {{/code}}
60
61 Pour s’assurer que le script fonctionne :
62
63 * Rendre le fichier exécutable : `chmod +x sauvegarde.sh`
64 * Tester manuellement d’abord : `./sauvegarde.sh`
65
66 ----
67
68 == Ajouter une exclusion ==
69
70 Par exemple pour **ignorer les fichiers `.bak`** :
71
72 {{code language="bash"}}
73 rsync -avh --delete --exclude='*.bak' "$SOURCE/" "$DEST/"
74 {{/code}}
75
76 On peut aussi exclure un dossier spécifique avec :
77 {{code language="bash"}}--exclude='node_modules/'{{/code}}
78
79 ----
80
81 == Sauvegarde avec date dans le nom ==
82
83 Pour créer un nouveau dossier par jour :
84
85 {{code language="bash"}}
86 DEST="/mnt/backup/Documents_$(date +%F)"
87 rsync -a "$SOURCE/" "$DEST/"
88 {{/code}}
89
90 ----
91
92 == Astuce : envoi de notification à la fin ==
93
94 {{code language="bash"}}
95 notify-send "Sauvegarde terminée" "Documents sauvegardés avec succès"
96 {{/code}}
97
98 (Nécessite `libnotify` et un environnement graphique)
99
100 ----
101
102 == Bonnes pratiques ==
103
104 * **Toujours tester** le script avant de l’automatiser
105 * **Logger les opérations** pour savoir ce qui a été fait
106 * **Monter le disque de destination automatiquement**
107 * Penser à vérifier les sauvegardes régulièrement !
108
109 ----
110
111 == Liens utiles ==
112
113 * [Manuel de rsync](https://linux.die.net/man/1/rsync)
114 * [Tutoriel rsync avancé](https://explainshell.com/explain?cmd=rsync+-avh+--delete+source%2F+destination%2F)
115
116 ----
117
118 == Liens internes ==
119
120 * [[Retour aux scripts personnels>>doc:TutosLinux.ScriptsPerso.WebHome]]