Compare commits
2 Commits
9bb327eada
...
e0555181a1
| Author | SHA1 | Date |
|---|---|---|
|
|
e0555181a1 | |
|
|
b3fd560ee1 |
|
|
@ -0,0 +1,89 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================================================
|
||||
# KONFIGURATION
|
||||
# ==============================================================================
|
||||
# Basis-Pfad zu den Mail-Daten (ohne Domain!)
|
||||
BASE_MAIL_PATH="/home/aknuth/git/email-amazon/DMS/docker-data/dms/mail-data"
|
||||
|
||||
# Pfad zu deiner Rclone Config
|
||||
RCLONE_CONFIG="/home/aknuth/.config/rclone/rclone.conf"
|
||||
|
||||
# Log Datei
|
||||
LOGFILE="/var/log/mail_backup.log"
|
||||
|
||||
# ==============================================================================
|
||||
# PARAMETER & VALIDIERUNG
|
||||
# ==============================================================================
|
||||
DOMAIN=$1
|
||||
REMOTE_NAME=$2
|
||||
BUCKET_NAME=$3
|
||||
|
||||
if [[ -z "$DOMAIN" || -z "$REMOTE_NAME" || -z "$BUCKET_NAME" ]]; then
|
||||
echo "FEHLER: Fehlende Parameter."
|
||||
echo "Benutzung: sudo $0 <DOMAIN> <RCLONE_REMOTE> <BUCKET>"
|
||||
echo "Beispiel: sudo $0 buddelectric.net idrive buddelectric-mails"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Vollständiger Quell-Pfad
|
||||
SOURCE_PATH="${BASE_MAIL_PATH}/${DOMAIN}"
|
||||
|
||||
# Prüfen, ob Quell-Ordner existiert
|
||||
if [ ! -d "$SOURCE_PATH" ]; then
|
||||
echo "FEHLER: Quell-Ordner existiert nicht: $SOURCE_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prüfen ob wir root sind
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "FEHLER: Dieses Skript muss als root ausgeführt werden (sudo)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# LOCKING (Pro Domain ein eigenes Lockfile)
|
||||
# ==============================================================================
|
||||
LOCKFILE="/var/run/rclone_mail_${DOMAIN}.lock"
|
||||
|
||||
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}` 2>/dev/null; then
|
||||
echo "Backup für $DOMAIN läuft bereits. Breche ab." >> $LOGFILE
|
||||
exit 1
|
||||
fi
|
||||
|
||||
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
|
||||
echo $$ > ${LOCKFILE}
|
||||
|
||||
# ==============================================================================
|
||||
# BACKUP START
|
||||
# ==============================================================================
|
||||
echo "----------------------------------------------------------------" >> $LOGFILE
|
||||
echo "START Backup: $(date)" >> $LOGFILE
|
||||
echo "Domain: $DOMAIN" >> $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: $DOMAIN erfolgreich gesichert am $(date)" >> $LOGFILE
|
||||
else
|
||||
echo "STATUS: FEHLER bei $DOMAIN (Code $EXIT_CODE) am $(date)" >> $LOGFILE
|
||||
fi
|
||||
echo "----------------------------------------------------------------" >> $LOGFILE
|
||||
|
||||
exit $EXIT_CODE
|
||||
Loading…
Reference in New Issue