Files
backup-scripts/backup-mailcow.sh
T
2026-04-27 17:45:35 +02:00

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