Introduced a detailed guide on configuring automated backups for the Zora server, covering scheduling, manual execution, and restoration processes. Added `backup.sh` script to streamline database and configuration backups with retention and rotation.
43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/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"
|