69 lines
1.9 KiB
Bash
Executable File
69 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
source /home/nico/backup/lib.sh
|
|
|
|
# ================================
|
|
# Einstellungen
|
|
# ================================
|
|
MAILCOW_DIR="$HOME/docker-setup/mailcow"
|
|
TMP_BASE="/home/nico/backup/tmp/mailcow"
|
|
TMP_BACKUP_DIR="$TMP_BASE/backups"
|
|
REMOTE="onedrive-tdhaider:/IONOS/Backups/mailcow"
|
|
DATE=$(date +%F_%H-%M-%S)
|
|
|
|
# ================================
|
|
# Vorbereitung
|
|
# ================================
|
|
log "📂 Bereite temporäres Verzeichnis vor..."
|
|
rm -rf "$TMP_BASE"
|
|
mkdir -p "$TMP_BACKUP_DIR"
|
|
|
|
cd "$MAILCOW_DIR" || fail "mailcow Verzeichnis nicht gefunden!"
|
|
|
|
# ================================
|
|
# Mailcow Full Backup
|
|
# ================================
|
|
log "📦 Starte mailcow FULL Backup (backup all)..."
|
|
|
|
MAILCOW_BACKUP_LOCATION="$TMP_BACKUP_DIR" \
|
|
./helper-scripts/backup_and_restore.sh backup all
|
|
|
|
# ================================
|
|
# Letztes Backup finden
|
|
# ================================
|
|
LATEST_BACKUP=$(ls -dt "$TMP_BACKUP_DIR"/mailcow-* | head -n 1)
|
|
|
|
if [ ! -d "$LATEST_BACKUP" ]; then
|
|
log "❌ Kein mailcow Backup gefunden!"
|
|
exit 1
|
|
fi
|
|
|
|
BACKUP_NAME=$(basename "$LATEST_BACKUP")
|
|
ARCHIVE="/tmp/${BACKUP_NAME}_${DATE}.tar.zst"
|
|
|
|
# ================================
|
|
# Komprimieren
|
|
# ================================
|
|
log "🗜️ Komprimiere Backup → $ARCHIVE"
|
|
|
|
tar --use-compress-program=zstd -cf "$ARCHIVE" \
|
|
-C "$TMP_BACKUP_DIR" "$BACKUP_NAME"
|
|
|
|
# ================================
|
|
# Upload
|
|
# ================================
|
|
log "☁️ Lade Backup zu OneDrive hoch..."
|
|
upload "$ARCHIVE" "$REMOTE"
|
|
log "✅ Upload abgeschlossen!"
|
|
|
|
cleanup_keep_latest "$REMOTE" 2
|
|
log "✅ Cleanup abgeschlossen!"
|
|
|
|
# ================================
|
|
# Aufräumen
|
|
# ================================
|
|
[[ -d "$TMP_BASE" ]] && rm -rf "$TMP_BASE"
|
|
[[ -d "$ARCHIVE" ]] && rm -f "$ARCHIVE"
|
|
|
|
log "🧹 Temporäre Dateien gelöscht."
|
|
log "🏁 mailcow FULL Backup abgeschlossen!" |