#!/bin/bash # Variablen REPO="ssh://stefan@172.25.28.34:22/srv/usbplatte/nauheim1vps" SOURCE="/home/stefan" # Passphrase sicher aus Datei lesen export BORG_PASSCOMMAND="cat /home/stefan/.config/borg/passphrase" export GOTIFY_TOKEN=$(cat /home/stefan/.config/gotify/token) EXCLUDES=( "/home/stefan/docker/privatebin" "/home/stefan/docker/psitransfer" "/home/stefan/docker/tautulli/config/cache/images" "/home/stefan/docker/resiliosync/sync" "/home/stefan/docker/resiliosync/cache" "/home/stefan/docker/komga/database.sqlite" "/home/stefan/docker/komga/logs" "/home/stefan/docker/komga/lucene" "/home/stefan/syncthing/sync" ) BACKUP_NAME="backup-$(date +%Y-%m-%d_%H-%M-%S)" GOTIFY_URL="https://gotify.nauheimtech.de" # Funktion zum Senden einer Nachricht an Gotify send_gotify_notification() { local message=$1 local priority=$2 curl -s -X POST "$GOTIFY_URL/message" \ -H "X-Gotify-Key: $GOTIFY_TOKEN" \ -d "title=Backup Fehler&message=$message&priority=$priority" } # Teste SSH-Verbindung echo "===== Teste SSH-Verbindung: $(date) =====" if ! ssh -o BatchMode=yes -o ConnectTimeout=10 stefan@172.25.28.34 "echo Verbindung erfolgreich"; then send_gotify_notification "Backup fehlgeschlagen: Keine SSH-Verbindung möglich" 10 echo "FEHLER: Keine SSH-Verbindung möglich am $(date)" exit 1 fi # Backup starten echo "===== Backup gestartet: $(date) =====" borg create --stats --progress "$REPO::$BACKUP_NAME" "$SOURCE" \ $(printf -- '--exclude=%s ' "${EXCLUDES[@]}") BACKUP_EXIT=$? # Falls das Backup fehlschlägt, Nachricht an Gotify senden if [ $BACKUP_EXIT -ne 0 ]; then send_gotify_notification "Backup fehlgeschlagen: $BACKUP_NAME" 10 echo "FEHLER: Backup fehlgeschlagen ($BACKUP_NAME) am $(date)" fi # Alte Backups bereinigen echo "===== Alte Backups bereinigen: $(date) =====" borg prune --keep-hourly=12 --keep-daily=7 --keep-weekly=4 --keep-monthly=6 "$REPO" echo "===== Backup abgeschlossen: $(date) ====="