#!/bin/sh # Sichert das komplette ./data-Verzeichnis (Ereignis-Logs, Snapshots, Anhänge, Nutzer) als # komprimiertes Tar-Archiv. Läuft außerhalb des Containers direkt auf dem Host, da ./data per # Bind-Mount ohnehin dort liegt (siehe docker-compose.yml) — kein Zugriff auf den Container nötig. # # Aufruf z.B. per Cron: # 0 3 * * * /pfad/zu/docker/backup.sh >> /pfad/zu/docker/backup.log 2>&1 set -eu SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" DATA_DIR="$SCRIPT_DIR/data" BACKUP_DIR="$SCRIPT_DIR/backups" TIMESTAMP="$(date +%Y%m%d-%H%M%S)" KEEP_DAYS=30 if [ ! -d "$DATA_DIR" ]; then echo "Kein Datenverzeichnis unter $DATA_DIR gefunden - nichts zu sichern." >&2 exit 1 fi mkdir -p "$BACKUP_DIR" tar -czf "$BACKUP_DIR/lehrerapp-data-$TIMESTAMP.tar.gz" -C "$SCRIPT_DIR" data # Alte Backups jenseits von KEEP_DAYS aufräumen, damit das Verzeichnis nicht unbegrenzt wächst. find "$BACKUP_DIR" -name 'lehrerapp-data-*.tar.gz' -mtime "+$KEEP_DAYS" -delete echo "Backup erstellt: $BACKUP_DIR/lehrerapp-data-$TIMESTAMP.tar.gz"