72 lines
1.9 KiB
Bash
Executable File
72 lines
1.9 KiB
Bash
Executable File
#!/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
|
|
|