feat: Backup-Skript mit 20 Tage Aufbewahrung + Restore
scripts/backup.sh:
- MySQL-Dump (utf8mb4, single-transaction, routines, triggers) -> gz
- Uploads-Volume per alpine-tar -> tar.gz
- Loescht Backups aelter als 20 Tage (find -mtime)
- Liest MYSQL_PASSWORD via grep aus .env (kein source -
.env enthaelt MAIL_FROM mit <> die bash sonst als Redirect deutet)
- Konfigurierbar via env PROJECT_DIR/BACKUP_DIR/RETENTION_DAYS
scripts/restore.sh:
- Listet verfuegbare Backups bei Aufruf ohne Argument
- Modi: full (default), db-only, uploads-only
- Sicherheitsabfrage vor Ueberschreiben
Cron auf Server: taeglich 03:00 -> /var/log/pfandsystem-demo-backup.log
Backup-Ziel: /root/backups/pfandsystem-demo/