0 Votes

Modifications pour le document Sauvegarde

Modifié par john le 2026/10/03 20:01

Depuis la version 4.1
modifié par john
sur 2026/09/19 19:19
Commentaire de modification : Il n'y a aucun commentaire pour cette version
À la version 6.1
modifié par john
sur 2026/09/19 20:00
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

Détails

Propriétés de la Page
Contenu
... ... @@ -101,11 +101,19 @@
101 101  
102 102  == Script ==
103 103  
104 -{{code language="bash"}}
105 -#!/bin/bash
104 +{{code language="bash"}}#!/bin/bash
106 106  set -euo pipefail
107 -umask 077 # Ajout : dumps lisibles par root seul
106 +umask 077
108 108  
108 +# Alertes Telegram
109 +. /root/.backup-telegram
110 +notifier() {
111 + curl -fsS -m 10 "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \
112 + -d chat_id="$TG_CHAT" --data-urlencode text="$1" >/dev/null || true
113 +}
114 +attention() { echo "ATTENTION: $1" >&2; notifier "⚠️ Sauvegarde : $1"; }
115 +trap 'notifier "❌ Sauvegarde interrompue à la ligne $LINENO"' ERR
116 +
109 109  REPO="sftp://<UTILISATEUR>@<HOTE_DEPOT>:<CHEMIN_DEPOT>"
110 110  KEYFILE="<FICHIER_PHRASE_SECRETE>"
111 111  DUMPS="<APPDATA>/dumps"
... ... @@ -117,19 +117,19 @@
117 117   > "$DUMPS/$c.sql" 2>/dev/null \
118 118   || docker exec "$c" sh -c 'exec mariadb-dump -uroot -p"${MYSQL_ROOT_PASSWORD:-$MARIADB_ROOT_PASSWORD}" --all-databases' \
119 119   > "$DUMPS/$c.sql" 2>/dev/null \
120 - || echo "ATTENTION: dump $c échoué" >&2
128 + || attention "dump $c échoué"
121 121  done
122 122  
123 123  # Nextcloud : dump via l'utilisateur applicatif
124 124  docker exec "$(docker ps -q -f name=nextcloud_db)" sh -c 'exec mariadb-dump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' \
125 125   > "$DUMPS/nextcloud.sql" 2>/dev/null \
126 - || echo "ATTENTION: dump nextcloud échoué" >&2
134 + || attention "dump nextcloud échoué"
127 127  
128 128  # Dumps PostgreSQL
129 -for c in joplin-db flus-db wallabag-db immich_postgres vikunja-db jellystat-db n8n-postgres dawarich_db; do # Ajout : dawarich_db
137 +for c in joplin-db flus-db wallabag-db immich_postgres vikunja-db jellystat-db n8n-postgres dawarich_db; do
130 130   docker exec "$c" sh -c 'exec pg_dumpall -U "$POSTGRES_USER"' \
131 131   > "$DUMPS/$c.sql" 2>/dev/null \
132 - || echo "ATTENTION: dump $c échoué" >&2
140 + || attention "dump $c échoué"
133 133  done
134 134  
135 135  # Sauvegarde, sans core dumps, binlogs ni fichiers bruts des bases
... ... @@ -140,12 +140,13 @@
140 140   -ignore "**/xwiki/mariadb/**" \
141 141   -ignore "**/store.bak.*/**" \
142 142   <APPDATA> \
143 - <BIBLIOTHEQUE_IMMICH>\
151 + <BIBLIOTHEQUE_IMMICH> \
144 144   <CONTENU_JOPLIN>
145 145  
146 146  # Rétention : 30 jours glissants
147 147  plakar -keyfile "$KEYFILE" at "$REPO" rm -before 30d -apply
148 -{{/code}}
156 +notifier "✅ Sauvegarde terminée"{{/code}}
157 +~{~{/code}}
149 149  
150 150  Tâche cron, ##/etc/cron.d/backup-plakar## :
151 151  
... ... @@ -153,6 +153,28 @@
153 153  30 3 * * * root /root/backup-plakar.sh >> /var/log/backup-plakar.log 2>&1
154 154  {{/code}}
155 155  
165 +== Alertes ==
166 +
167 +Le script envoie un message Telegram à chaque exécution :
168 +
169 +|=Message|=Signification
170 +|✅ Sauvegarde terminée|Tout s'est bien passé
171 +|⚠️ Sauvegarde : dump … échoué|Un dump de base a échoué, la sauvegarde a continué sans lui
172 +|❌ Sauvegarde interrompue à la ligne …|Erreur bloquante, la sauvegarde n'a pas eu lieu
173 +
174 +Si aucun message n'arrive un matin, le script n'a pas démarré (serveur éteint, tâche cron cassée).
175 +
176 +Jeton du bot et identifiant du groupe dans ##/root/.backup-telegram##, lisible par root seul :
177 +
178 +{{code language="bash"}}
179 +TG_TOKEN="<JETON_BOT>"
180 +TG_CHAT="<ID_GROUPE>"
181 +{{/code}}
182 +
183 +{{warning}}
184 +Dans le script, chaque ligne continuée doit se terminer par ##\## sans rien après, pas même un espace. Une barre oblique inverse suivie d'un espace ne continue plus la ligne : c'est ce qui a interrompu plusieurs sauvegardes en septembre 2026. Contrôle après toute modification : ##sudo bash -n /root/backup-plakar.sh##, et ##cat -A## pour voir les caractères invisibles en fin de ligne.
185 +{{/warning}}
186 +
156 156  == Ajouter une base ==
157 157  
158 158  Ajouter le nom du conteneur dans la boucle MariaDB ou PostgreSQL du script, puis exclure ses fichiers bruts avec un ##-ignore## s'ils se trouvent dans ##<APPDATA>##.