--- type: Guide status: ACTIVE owner: DevOps Engineer last_update: 2026-03-05 tags: [backup, postgres, zora, cron] --- # 🛡️ Guide: Automatisierte Backups auf Zora Dieser Guide beschreibt, wie du regelmäßige Backups der Meldestelle-Datenbank und Konfigurationen auf Zora einrichtest. ## 📋 Voraussetzungen * SSH-Zugriff auf Zora (`ssh user@10.0.0.xx`). * Docker-Container `meldestelle-postgres` läuft. * Das Skript `config/scripts/backup.sh` liegt im Repo. --- ## 🛠️ Schritt-für-Schritt Anleitung ### 1. Backup-Skript vorbereiten Das Skript liegt bereits im Repo unter `config/scripts/backup.sh`. Du musst es auf Zora ausführbar machen und ggf. anpassen. 1. Verbinde dich mit Zora: ```bash ssh user@zora-ip cd ~/meldestelle ``` 2. Mache das Skript ausführbar: ```bash chmod +x config/scripts/backup.sh ``` 3. **WICHTIG:** Prüfe die Variablen im Skript (`nano config/scripts/backup.sh`): * `BACKUP_DIR`: Wohin sollen die Backups? (Standard: `/home/grandmo/backups/meldestelle`) * `DB_CONTAINER`: Name des Postgres-Containers (Standard: `meldestelle-postgres`). * `DB_USER`: Datenbank-User (Standard: `meldestelle`). ### 2. Cronjob einrichten (Automatische Ausführung) Wir wollen das Backup jede Nacht um 03:00 Uhr laufen lassen. 1. Öffne die Crontab des Users: ```bash crontab -e ``` 2. Füge folgende Zeile am Ende hinzu: ```cron # Meldestelle Backup: Täglich um 03:00 Uhr 0 3 * * * /home/grandmo/meldestelle/config/scripts/backup.sh >> /home/grandmo/meldestelle/logs/backup.log 2>&1 ``` 3. Speichern und schließen (`Ctrl+O`, `Enter`, `Ctrl+X`). ### 3. Testen Führe das Skript einmal manuell aus, um sicherzustellen, dass alles klappt: ```bash ./config/scripts/backup.sh ``` * Prüfe den Output: "✅ Backup abgeschlossen". * Prüfe das Backup-Verzeichnis: `ls -lh /home/grandmo/backups/meldestelle`. --- ## 🔄 Wiederherstellung (Restore) Falls der Ernstfall eintritt (Datenbank korrupt oder gelöscht): 1. Stoppe die App-Container (aber lasse die DB laufen): ```bash docker compose stop api-gateway ping-service keycloak ``` 2. Entpacke das Backup: ```bash gunzip /home/grandmo/backups/meldestelle/db_dump_YYYY-MM-DD.sql.gz ``` 3. Spiele den Dump ein: ```bash cat db_dump_YYYY-MM-DD.sql | docker exec -i meldestelle-postgres psql -U meldestelle ``` 4. Starte die App wieder: ```bash docker compose up -d ``` --- ## 💡 Tipps * **Offsite-Backup:** Kopiere die Backups regelmäßig auf einen externen Speicher (z.B. NAS oder Cloud), falls die Festplatte von Zora ausfällt. `rsync` ist dein Freund! * **Monitoring:** Prüfe regelmäßig die Log-Datei `logs/backup.log`, ob Fehler auftreten.