#!/bin/bash # ============================================================================== # KONFIGURATION (Dinge, die sich selten ändern) # ============================================================================== # Pfad zu deiner Rclone Config RCLONE_CONFIG="/home/aknuth/.config/rclone/rclone.conf" # Pfad zu den lokalen Mail-Daten (Source) # Wenn du NUR buddelectric.net sichern willst, häng das hier an. # Wenn du ALLE Domains sichern willst, lass es auf .../mail-data SOURCE_PATH="/home/aknuth/git/email-amazon/DMS/docker-data/dms/mail-data/buddelectric.net" # Log Datei LOGFILE="/var/log/mail_backup.log" # Lockfile (Verhindert doppeltes Ausführen) LOCKFILE="/var/run/rclone_mail.lock" # ============================================================================== # PARAMETER CHECK # ============================================================================== REMOTE_NAME=$1 BUCKET_NAME=$2 if [[ -z "$REMOTE_NAME" || -z "$BUCKET_NAME" ]]; then echo "FEHLER: Fehlende Parameter." echo "Benutzung: sudo $0 " echo "Beispiel: sudo $0 buddelectric buddelectric-mails" exit 1 fi # ============================================================================== # SICHERHEITS-CHECKS # ============================================================================== # Prüfen ob wir root sind (nötig für Zugriff auf Docker Files) if [[ $EUID -ne 0 ]]; then echo "Dieses Skript muss als root ausgeführt werden (sudo)." exit 1 fi # Prüfen ob Backup schon läuft if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}` 2>/dev/null; then echo "Backup läuft bereits. Breche ab." exit 1 fi # Trap: Lockfile löschen bei Abbruch oder Ende trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT echo $$ > ${LOCKFILE} # ============================================================================== # BACKUP START # ============================================================================== echo "----------------------------------------------------------------" >> $LOGFILE echo "START Backup: $(date)" >> $LOGFILE echo "Quelle: $SOURCE_PATH" >> $LOGFILE echo "Ziel: $REMOTE_NAME:$BUCKET_NAME" >> $LOGFILE # Rclone Befehl /usr/bin/rclone sync "$SOURCE_PATH" "$REMOTE_NAME:$BUCKET_NAME" \ --config "$RCLONE_CONFIG" \ --exclude "**/tmp/**" \ --exclude "*.lock" \ --exclude "dovecot-uidlist.lock" \ --exclude ".dovecot.lda-dupes" \ --transfers 32 \ --checkers 32 \ --fast-list \ --min-age 15m \ --log-file $LOGFILE \ --log-level INFO EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then echo "STATUS: Erfolgreich abgeschlossen am $(date)" >> $LOGFILE else echo "STATUS: FEHLER (Exit Code $EXIT_CODE) am $(date)" >> $LOGFILE fi echo "----------------------------------------------------------------" >> $LOGFILE exit $EXIT_CODE