restic-backup-suite: Services stoppen
Services rund um das Backup stoppen: systemd-Services, Docker-Compose-Services und Standalone-Container, Reihenfolge, Wartezeiten und automatischer Neustart beim Beenden des Scripts.
Services stoppen
Für konsistente Datei-Snapshots kann backup.sh Services vor dem Backup stoppen und danach wieder starten. Beide Listen sind standardmäßig leer, dann passiert nichts.
systemd-Services
SERVICES_TO_STOP=("myapp" "myapp-worker")
SERVICE_STOP_WAIT=2
SERVICE_START_WAIT=3
- Pro Eintrag prüft das Script mit
systemctl is-active. Läuft der Service, wird er mitsystemctl stopgestoppt und für den Neustart vorgemerkt. Läuft er nicht, überspringt das Script ihn mit einer Warnung und startet ihn später auch nicht. - Nach dem Stoppen wartet das Script
SERVICE_STOP_WAITSekunden, nach dem StartenSERVICE_START_WAITSekunden.
Docker-Services und Container
DOCKER_SERVICES_TO_STOP=(
"/srv/seafile/docker-compose.yml:seafile"
"some-standalone-container"
)
DOCKER_STOP_WAIT=2
DOCKER_START_WAIT=3
| Eintragsformat | Verhalten |
|---|---|
/pfad/docker-compose.yml:service |
docker compose -f <Datei> stop <service>, später docker compose -f <Datei> start <service>. Existiert die Datei nicht, wird der Eintrag übersprungen |
container-name |
docker stop <name>, später docker start <name> |
Läuft der Service oder Container nicht, wird er mit einer Warnung übersprungen. Fehlt docker, überspringt das Script alle Docker-Einträge.
Trage keine Datenbank-Container ein. Die Dumps laufen per
docker execgegen den laufenden Container und schlagen sonst fehl.
Reihenfolge
- systemd-Services stoppen
- Docker-Services stoppen
- Datenbank-Dumps
restic backup, Retention (restic forget --prune), Integritätsprüfung- Beim Beenden des Scripts: temporäre Verzeichnisse löschen, systemd-Services starten, Docker-Services starten
Die Services starten erst im Cleanup am Ende des Laufs. Sie stehen also auch während Retention, Prune und Integritätsprüfung still, nicht nur während des Backups.
Zuverlässigkeit des Neustarts
Der Neustart hängt am Cleanup-Handler, der bei Normalende, Fehler (ERR) und den Signalen INT und TERM läuft. Schlägt der Start eines Services fehl, loggt das Script nur eine Warnung und macht mit den anderen weiter. Wird das Script hart beendet (SIGKILL) oder stürzt das System ab, läuft kein Cleanup, und die Services bleiben gestoppt.
Bei
--dry-runwerden systemd-Services trotzdem gestoppt (und anschließend wieder gestartet), Docker-Services nicht. Bei--dump-onlywird nichts gestoppt.