log output
This commit is contained in:
parent
e0555181a1
commit
68f00e3873
|
|
@ -3,15 +3,18 @@
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# KONFIGURATION
|
# KONFIGURATION
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# Basis-Pfad zu den Mail-Daten (ohne Domain!)
|
|
||||||
BASE_MAIL_PATH="/home/aknuth/git/email-amazon/DMS/docker-data/dms/mail-data"
|
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"
|
RCLONE_CONFIG="/home/aknuth/.config/rclone/rclone.conf"
|
||||||
|
|
||||||
# Log Datei
|
|
||||||
LOGFILE="/var/log/mail_backup.log"
|
LOGFILE="/var/log/mail_backup.log"
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# HILFSFUNKTION: LOGGING (Bildschirm + Datei)
|
||||||
|
# ==============================================================================
|
||||||
|
log() {
|
||||||
|
# Schreibt Zeitstempel + Text auf stdout (Bildschirm) UND in das Logfile
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') | $1" | tee -a "$LOGFILE"
|
||||||
|
}
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# PARAMETER & VALIDIERUNG
|
# PARAMETER & VALIDIERUNG
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
@ -22,48 +25,47 @@ BUCKET_NAME=$3
|
||||||
if [[ -z "$DOMAIN" || -z "$REMOTE_NAME" || -z "$BUCKET_NAME" ]]; then
|
if [[ -z "$DOMAIN" || -z "$REMOTE_NAME" || -z "$BUCKET_NAME" ]]; then
|
||||||
echo "FEHLER: Fehlende Parameter."
|
echo "FEHLER: Fehlende Parameter."
|
||||||
echo "Benutzung: sudo $0 <DOMAIN> <RCLONE_REMOTE> <BUCKET>"
|
echo "Benutzung: sudo $0 <DOMAIN> <RCLONE_REMOTE> <BUCKET>"
|
||||||
echo "Beispiel: sudo $0 buddelectric.net idrive buddelectric-mails"
|
echo "Beispiel: sudo $0 buddelectric.net buddelectric buddelectric-mails"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Vollständiger Quell-Pfad
|
|
||||||
SOURCE_PATH="${BASE_MAIL_PATH}/${DOMAIN}"
|
SOURCE_PATH="${BASE_MAIL_PATH}/${DOMAIN}"
|
||||||
|
|
||||||
# Prüfen, ob Quell-Ordner existiert
|
|
||||||
if [ ! -d "$SOURCE_PATH" ]; then
|
if [ ! -d "$SOURCE_PATH" ]; then
|
||||||
echo "FEHLER: Quell-Ordner existiert nicht: $SOURCE_PATH"
|
log "FEHLER: Quell-Ordner existiert nicht: $SOURCE_PATH"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prüfen ob wir root sind
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
if [[ $EUID -ne 0 ]]; then
|
||||||
echo "FEHLER: Dieses Skript muss als root ausgeführt werden (sudo)."
|
echo "FEHLER: Dieses Skript muss als root ausgeführt werden (sudo)."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# LOCKING (Pro Domain ein eigenes Lockfile)
|
# LOCKING
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
LOCKFILE="/var/run/rclone_mail_${DOMAIN}.lock"
|
LOCKFILE_PATH="/var/run/rclone_mail_${DOMAIN}.lock"
|
||||||
|
|
||||||
if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}` 2>/dev/null; then
|
if [ -e ${LOCKFILE_PATH} ] && kill -0 `cat ${LOCKFILE_PATH}` 2>/dev/null; then
|
||||||
echo "Backup für $DOMAIN läuft bereits. Breche ab." >> $LOGFILE
|
log "ABBRUCH: Backup für $DOMAIN läuft bereits."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
trap "rm -f ${LOCKFILE}; exit" INT TERM EXIT
|
trap "rm -f ${LOCKFILE_PATH}; exit" INT TERM EXIT
|
||||||
echo $$ > ${LOCKFILE}
|
echo $$ > ${LOCKFILE_PATH}
|
||||||
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
# BACKUP START
|
# BACKUP START
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
echo "----------------------------------------------------------------" >> $LOGFILE
|
log "----------------------------------------------------------------"
|
||||||
echo "START Backup: $(date)" >> $LOGFILE
|
log "START Backup"
|
||||||
echo "Domain: $DOMAIN" >> $LOGFILE
|
log "Domain: $DOMAIN"
|
||||||
echo "Quelle: $SOURCE_PATH" >> $LOGFILE
|
log "Quelle: $SOURCE_PATH"
|
||||||
echo "Ziel: $REMOTE_NAME:$BUCKET_NAME" >> $LOGFILE
|
log "Ziel: $REMOTE_NAME:$BUCKET_NAME"
|
||||||
|
|
||||||
# Rclone Befehl
|
# Rclone ausführen
|
||||||
|
# --progress zeigt den Balken im Terminal (landet nicht im Logfile, das ist gut so)
|
||||||
|
# --log-file schreibt technische Details NUR ins Logfile (nicht auf den Schirm, um ihn nicht zu fluten)
|
||||||
/usr/bin/rclone sync "$SOURCE_PATH" "$REMOTE_NAME:$BUCKET_NAME" \
|
/usr/bin/rclone sync "$SOURCE_PATH" "$REMOTE_NAME:$BUCKET_NAME" \
|
||||||
--config "$RCLONE_CONFIG" \
|
--config "$RCLONE_CONFIG" \
|
||||||
--exclude "**/tmp/**" \
|
--exclude "**/tmp/**" \
|
||||||
|
|
@ -75,15 +77,16 @@ echo "Ziel: $REMOTE_NAME:$BUCKET_NAME" >> $LOGFILE
|
||||||
--fast-list \
|
--fast-list \
|
||||||
--min-age 15m \
|
--min-age 15m \
|
||||||
--log-file $LOGFILE \
|
--log-file $LOGFILE \
|
||||||
--log-level INFO
|
--log-level INFO \
|
||||||
|
--progress
|
||||||
|
|
||||||
EXIT_CODE=$?
|
EXIT_CODE=$?
|
||||||
|
|
||||||
if [ $EXIT_CODE -eq 0 ]; then
|
if [ $EXIT_CODE -eq 0 ]; then
|
||||||
echo "STATUS: $DOMAIN erfolgreich gesichert am $(date)" >> $LOGFILE
|
log "STATUS: ERFOLG - $DOMAIN erfolgreich gesichert."
|
||||||
else
|
else
|
||||||
echo "STATUS: FEHLER bei $DOMAIN (Code $EXIT_CODE) am $(date)" >> $LOGFILE
|
log "STATUS: FEHLER - Exit Code $EXIT_CODE. Details siehe $LOGFILE"
|
||||||
fi
|
fi
|
||||||
echo "----------------------------------------------------------------" >> $LOGFILE
|
log "----------------------------------------------------------------"
|
||||||
|
|
||||||
exit $EXIT_CODE
|
exit $EXIT_CODE
|
||||||
Loading…
Reference in New Issue