#!/bin/bash # ================================ # Restic System Backup Script # Autor: Michael # ================================ # Variablen RESTIC_REPOSITORY=rclone:Cloud.Michaelis.Digital:backup-repo RESTIC_PASSWORD_FILE=/home/ratatoskr/.restic-pass LOGFILE=/var/log/restic-backup.log NTFY_TOPIC=A72 NTFY_URL=https://ntfy.michaelis.digital/$NTFY_TOPIC NTFY_USER=Michaelis NTFY_PASS=u5ptufUFuDL6q4yEcSN3iqas5gtXNkN77Lx3cy3oX8UoSgFWdifYy9FVopv2Zwtu # TMPDIR auf ein großes Laufwerk setzen export TMPDIR=/var/tmp # Backup Startzeit START=$(date '+%Y-%m-%d %H:%M:%S') echo "==== Backup Start: $START ====" | tee -a $LOGFILE # Backup ausführen echo "Starte Backup..." | tee -a $LOGFILE BACKUP_OUTPUT=$(restic -r $RESTIC_REPOSITORY \ --password-file $RESTIC_PASSWORD_FILE \ backup / \ --exclude /proc \ --exclude /tmp \ --exclude /mnt \ --exclude /dev \ --exclude /sys \ --exclude /run \ --exclude /var/tmp \ --verbose 2>&1) BACKUP_EXIT=$? # Backup Endezeit und Dauer END=$(date '+%Y-%m-%d %H:%M:%S') START_SEC=$(date +%s) END_SEC=$(date +%s) DURATION=$(date -u -d @$((END_SEC-START_SEC)) +%H:%M:%S) # Letztes Snapshot ermitteln LATEST=$(restic -r $RESTIC_REPOSITORY --password-file $RESTIC_PASSWORD_FILE snapshots --latest 1 --json | jq -r '.[0].short_id' 2>/dev/null) # Stats auslesen STATS=$(restic -r $RESTIC_REPOSITORY --password-file $RESTIC_PASSWORD_FILE stats --mode blobs-per-file $LATEST 2>&1) # Ausgabe in Log und Terminal { echo "$BACKUP_OUTPUT" echo "" echo "Backup-Dauer: $DURATION" echo "Letzter Snapshot: $LATEST" echo "$STATS" echo "Exit-Code: $BACKUP_EXIT" echo "==== Backup Ende: $END ====" } | tee -a $LOGFILE # NTFY Benachrichtigung SUMMARY="Restic Backup abgeschlossen Snapshot: $LATEST Dauer: $DURATION $STATS Exit-Code: $BACKUP_EXIT $(date)" curl -u $NTFY_USER:$NTFY_PASS -H "Title: Restic Backup" -H "Tags: backup" -d "$SUMMARY" $NTFY_URL