Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
53 lines
1.7 KiB
Bash
53 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# ==========================================
|
|
# Meldestelle Backup Script
|
|
# Sichert Datenbanken und Konfigurationen
|
|
# ==========================================
|
|
|
|
# .env laden (SSoT für alle Variablen)
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
if [ -f "$PROJECT_ROOT/.env" ]; then
|
|
set -a
|
|
# shellcheck disable=SC1091
|
|
source "$PROJECT_ROOT/.env"
|
|
set +a
|
|
fi
|
|
|
|
# Konfiguration (Defaults falls .env nicht vorhanden)
|
|
BACKUP_DIR="${BACKUP_DIR:-$HOME/backups/meldestelle}"
|
|
DATE=$(date +%Y-%m-%d_%H-%M-%S)
|
|
RETENTION_DAYS="${BACKUP_RETENTION_DAYS:-7}"
|
|
PROJECT_NAME="${PROJECT_NAME:-meldestelle}"
|
|
|
|
# Container Namen (müssen mit docker-compose übereinstimmen)
|
|
DB_CONTAINER="${PROJECT_NAME}-postgres"
|
|
DB_USER="${POSTGRES_USER:-pg-user}"
|
|
|
|
# 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"
|