0 Votes

Modifications pour le document Sauvegarde

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

Depuis 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
À la version 7.1
modifié par john
sur 2026/09/26 14:56
Commentaire de modification : Il n'y a aucun commentaire pour cette version

Résumé

Détails

Propriétés de la Page
Contenu
... ... @@ -14,11 +14,14 @@
14 14  Chaque exécution :
15 15  
16 16  * exporte toutes les bases en SQL dans ##<APPDATA>/dumps## ;
17 -* sauvegarde les données des conteneurs, la bibliothèque Immich et le contenu de Joplin, en excluant les fichiers bruts des bases ;
17 +* attend la fin de la sauvegarde Borg de [[Nextcloud>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Nextcloud.WebHome]] AIO (planifiée à 3 h 00), au plus une heure ;
18 +* sauvegarde les données des conteneurs, la bibliothèque Immich, le contenu de Joplin et le dépôt Borg de Nextcloud AIO, en excluant les fichiers bruts des bases et les données brutes de Nextcloud ;
18 18  * supprime les instantanés de plus de 30 jours.
19 19  
20 20  {{info}}
21 21  Les fichiers bruts d'une base en fonctionnement ne sont pas fiables pour une restauration. Ce sont les dumps SQL qui font foi.
23 +
24 +Nextcloud AIO fait exception : il n'y a pas de dump, sa base, ses fichiers et sa configuration sont dans son propre dépôt Borg, cohérent car produit conteneurs arrêtés. Plakar copie ce dépôt tel quel, d'où l'attente de la fin de la sauvegarde Borg : copier un dépôt en cours d'écriture donnerait une copie incohérente.
22 22  {{/info}}
23 23  
24 24  == Mise en place du dépôt ==
... ... @@ -128,11 +128,6 @@
128 128   || attention "dump $c échoué"
129 129  done
130 130  
131 -# Nextcloud : dump via l'utilisateur applicatif
132 -docker exec "$(docker ps -q -f name=nextcloud_db)" sh -c 'exec mariadb-dump -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" "$MYSQL_DATABASE"' \
133 - > "$DUMPS/nextcloud.sql" 2>/dev/null \
134 - || attention "dump nextcloud échoué"
135 -
136 136  # Dumps PostgreSQL
137 137  for c in joplin-db flus-db wallabag-db immich_postgres vikunja-db jellystat-db n8n-postgres dawarich_db; do
138 138   docker exec "$c" sh -c 'exec pg_dumpall -U "$POSTGRES_USER"' \
... ... @@ -140,21 +140,34 @@
140 140   || attention "dump $c échoué"
141 141  done
142 142  
143 -# Sauvegarde, sans core dumps, binlogs ni fichiers bruts des bases
141 +# Attente de la fin de la sauvegarde Borg d'AIO (planifiée à 3h00)
142 +attente=0
143 +while docker ps --format '{{.Names}}' | grep -qx nextcloud-aio-borgbackup; do
144 + if [ "$attente" -ge 3600 ]; then
145 + attention "Borg AIO encore en cours après 1 h : dépôt Borg possiblement incohérent"
146 + break
147 + fi
148 + sleep 60
149 + attente=$((attente + 60))
150 +done
151 +
152 +# Backup avec exclusions : core dumps, binlogs, fichiers bruts des bases
153 +# et données brutes de Nextcloud AIO (déjà dans le dépôt Borg, de façon cohérente)
144 144  plakar --concurrency 2 -keyfile "$KEYFILE" at "$REPO" backup \
145 145   -ignore "**/joplin-app/core.*" \
146 - -ignore "**/Nextcloud/DB/**" \
156 + -ignore "**/Nextcloud-AIO/data/**" \
147 147   -ignore "**/log/mysql/**" \
148 148   -ignore "**/xwiki/mariadb/**" \
149 149   -ignore "**/store.bak.*/**" \
150 150   <APPDATA> \
151 151   <BIBLIOTHEQUE_IMMICH> \
152 - <CONTENU_JOPLIN>
162 + <CONTENU_JOPLIN> \
163 + <DEPOT_BORG_AIO>
153 153  
154 154  # Rétention : 30 jours glissants
155 155  plakar -keyfile "$KEYFILE" at "$REPO" rm -before 30d -apply
156 -notifier "✅ Sauvegarde terminée"{{/code}}
157 -~{~{/code}}
167 +notifier "✅ Sauvegarde terminée"
168 +{{/code}}
158 158  
159 159  Tâche cron, ##/etc/cron.d/backup-plakar## :
160 160  
... ... @@ -169,6 +169,7 @@
169 169  |=Message|=Signification
170 170  |✅ Sauvegarde terminée|Tout s'est bien passé
171 171  |⚠️ Sauvegarde : dump … échoué|Un dump de base a échoué, la sauvegarde a continué sans lui
183 +|⚠️ Sauvegarde : Borg AIO encore en cours après 1 h …|La sauvegarde Borg de Nextcloud n'était pas finie : la copie du dépôt Borg de cette nuit peut être incohérente, celle des nuits précédentes reste utilisable
172 172  |❌ Sauvegarde interrompue à la ligne …|Erreur bloquante, la sauvegarde n'a pas eu lieu
173 173  
174 174  Si aucun message n'arrive un matin, le script n'a pas démarré (serveur éteint, tâche cron cassée).
... ... @@ -216,6 +216,8 @@
216 216  docker exec -i <CONTENEUR> sh -c 'exec psql -U "$POSTGRES_USER" -d postgres' < /tmp/restore/<CHEMIN>/dumps/<CONTENEUR>.sql
217 217  {{/code}}
218 218  
231 +Restaurer Nextcloud AIO : restaurer le dossier ##<DEPOT_BORG_AIO>## sur l'hôte, déployer le mastercontainer sur une installation neuve, puis choisir la restauration dans l'interface AIO (chemin du dépôt, mot de passe Borg, archive). Voir la page [[Nextcloud>>Wiki Batcave John.Infrastructure.ServeurPrincipal.Nextcloud.WebHome]].
232 +
219 219  {{warning}}
220 220  Une sauvegarde qui n'a jamais été restaurée n'est pas une sauvegarde vérifiée. Faire un essai de restauration de temps en temps, dans un dossier temporaire.
221 221  {{/warning}}
... ... @@ -227,3 +227,4 @@
227 227  |Avertissements VFS|Cache local incohérent|Vider ##~~/.cache/plakar## de root
228 228  |Transfert coupé (EOF SFTP) sur de gros fichiers|Lien Wi-Fi du dépôt instable|Économie d'énergie Wi-Fi désactivée sur le Pi ; passer à ##~-~-concurrency 1## pour une première sauvegarde volumineuse
229 229  |Déconnexion du SSD pendant la sauvegarde|Pont USB en mode UAS|Voir la configuration SSD sur la page [[Raspberry Pi>>Wiki Batcave John.Infrastructure.RaspberryPi.WebHome]]
244 +