meldestelle/config/scripts/backup.sh
Stefan Mogeritsch 9dd6a0faf7 docs: add backup setup guide and backup script for Zora
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.
2026-03-05 13:11:44 +01:00

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"