#!/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!"