#!/bin/bash # ========================================== # Meldestelle Backup Script # Sichert Datenbanken und Konfigurationen # ========================================== # Konfiguration BACKUP_DIR="/home/grandmo/backups/meldestelle" DATE=$(date +%Y-%m-%d_%H-%M-%S) RETENTION_DAYS=7 PROJECT_NAME="meldestelle" # Container Namen (müssen mit docker-compose übereinstimmen) DB_CONTAINER="${PROJECT_NAME}-postgres" DB_USER="meldestelle" # Oder aus .env lesen # Verzeichnisse erstellen mkdir -p "$BACKUP_DIR" echo "🚀 Starte Backup: $DATE" # 1. PostgreSQL Dump echo " -> Erstelle Datenbank-Dump..." if docker exec "$DB_CONTAINER" pg_dumpall -U "$DB_USER" > "$BACKUP_DIR/db_dump_$DATE.sql"; then echo " ✅ DB Dump erfolgreich." gzip "$BACKUP_DIR/db_dump_$DATE.sql" else echo " ❌ FEHLER beim DB Dump!" # Optional: Mail senden oder Exit Code setzen fi # 2. Konfigurations-Dateien sichern (.env ist kritisch!) echo " -> Sichere Konfigurationen..." tar -czf "$BACKUP_DIR/config_$DATE.tar.gz" .env docker-compose.yaml dc-*.yaml config/ # 3. Alte Backups löschen (Rotation) echo " -> Lösche Backups älter als $RETENTION_DAYS Tage..." find "$BACKUP_DIR" -name "db_dump_*.sql.gz" -mtime +$RETENTION_DAYS -delete find "$BACKUP_DIR" -name "config_*.tar.gz" -mtime +$RETENTION_DAYS -delete echo "✅ Backup abgeschlossen: $BACKUP_DIR" ls -lh "$BACKUP_DIR" | grep "$DATE"