45 lines
1.1 KiB
Bash
45 lines
1.1 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
# Backup-Script für Pfandsystem MySQL Datenbank
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Konfiguration
|
||
|
|
BACKUP_DIR="/root/backups"
|
||
|
|
DATE=$(date +%Y%m%d_%H%M%S)
|
||
|
|
BACKUP_FILE="$BACKUP_DIR/pfandsystem_backup_$DATE.sql"
|
||
|
|
RETENTION_DAYS=30
|
||
|
|
|
||
|
|
# Backup-Verzeichnis erstellen
|
||
|
|
mkdir -p "$BACKUP_DIR"
|
||
|
|
|
||
|
|
echo "🗄️ Starte Datenbank-Backup..."
|
||
|
|
|
||
|
|
# MySQL Backup erstellen
|
||
|
|
docker exec pfandsystem-mysql mysqldump \
|
||
|
|
-u pfandsystem \
|
||
|
|
-ppfandsystem_secure_password \
|
||
|
|
--single-transaction \
|
||
|
|
--routines \
|
||
|
|
--triggers \
|
||
|
|
pfandsystem > "$BACKUP_FILE"
|
||
|
|
|
||
|
|
# Komprimieren
|
||
|
|
gzip "$BACKUP_FILE"
|
||
|
|
BACKUP_FILE="$BACKUP_FILE.gz"
|
||
|
|
|
||
|
|
echo "✅ Backup erstellt: $BACKUP_FILE"
|
||
|
|
|
||
|
|
# Backup-Größe anzeigen
|
||
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
||
|
|
echo "📊 Backup-Größe: $SIZE"
|
||
|
|
|
||
|
|
# Alte Backups löschen (älter als RETENTION_DAYS)
|
||
|
|
echo "🧹 Lösche alte Backups (älter als $RETENTION_DAYS Tage)..."
|
||
|
|
find "$BACKUP_DIR" -name "pfandsystem_backup_*.sql.gz" -mtime +$RETENTION_DAYS -delete
|
||
|
|
|
||
|
|
# Anzahl verbleibender Backups
|
||
|
|
BACKUP_COUNT=$(ls -1 "$BACKUP_DIR"/pfandsystem_backup_*.sql.gz 2>/dev/null | wc -l)
|
||
|
|
echo "📁 Anzahl Backups: $BACKUP_COUNT"
|
||
|
|
|
||
|
|
echo "✅ Backup abgeschlossen!"
|