Sauvegardes & restauration¶
Deux mécanismes complémentaires : backup.sh (dumps SQL + rsync, hors-machine) et
dockmate (backup transactionnel avant chaque update, avec rollback).
backup.sh (cron /etc/cron.d/docker-backup, dim. 03:00)¶
| Quoi | Comment |
|---|---|
| Bases SQL | dumps en ligne : PostgreSQL/TimescaleDB (pg_dumpall), MariaDB (mariadb-dump --all-databases --single-transaction) → db_dumps/<conteneur>.sql.gz |
| Configs & volumes | rsync /srv/docker → srv_docker/ (avec --delete), en excluant les data dirs des bases (…/postgresql/data, …/pgdata/data, …/mysql) |
| Destinations | primaire /mnt/hdd/backups/<DATE>/ + secondaire /mnt/sdcard/backups/<DATE>/ |
| Rotation | KEEP=4 (4 horodatages) |
| Journaux | errors.log, MANIFEST.txt par backup ; sortie cron → /var/log/docker-backup.log |
Couvert ✅ vs Non couvert ❌¶
- ✅ Tout
/srv/docker/volumes/(configs, états, et le wikivolumes/wiki/), + dumps SQL. - ❌ Library Immich (
/mnt/raid/immich/library, ~330 Go — média). - ❌ Enregistrements Frigate (
/mnt/frigate). - ❌ Caches régénérables (
/srv/docker/cache/).
Le wiki est sauvegardé automatiquement
volumes/wiki/ (markdown + .git) est dans le périmètre rsync → capturé chaque dimanche.
En plus, le contenu est poussé en git vers un remote privé (sauvegarde hors-site).
Procédure de RESTAURATION¶
a) Restaurer un fichier / une config¶
DATE=$(ls -1dt /mnt/hdd/backups/20*-* | head -1)
rsync -a "$DATE/srv_docker/volumes/<service>/" /srv/docker/volumes/<service>/
docker compose up -d <service>
b) Restaurer une base PostgreSQL/TimescaleDB¶
DATE=$(ls -1dt /mnt/hdd/backups/20*-* | head -1)
gunzip -c "$DATE/db_dumps/timescaledb.sql.gz" | docker exec -i timescaledb psql -U <user>
c) Restaurer une base MariaDB¶
d) Restaurer le wiki¶
# depuis le backup local…
rsync -a "$DATE/srv_docker/volumes/wiki/" /srv/docker/volumes/wiki/
# …ou depuis le remote git :
git clone <remote-wiki> /srv/docker/volumes/wiki
docker compose up -d wiki
À tester périodiquement
Une sauvegarde non testée n'en est pas une. Faire un essai de restauration (au moins d'une base et d'un volume) de temps en temps. Library Immich & Frigate : prévoir une stratégie média dédiée (non couverte ici).