Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht


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

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 exec gegen den laufenden Container und schlagen sonst fehl.

Reihenfolge

  1. systemd-Services stoppen
  2. Docker-Services stoppen
  3. Datenbank-Dumps
  4. restic backup, Retention (restic forget --prune), Integritätsprüfung
  5. 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-run werden systemd-Services trotzdem gestoppt (und anschließend wieder gestartet), Docker-Services nicht. Bei --dump-only wird nichts gestoppt.