From 51a70d82cab546378e6bcf13c241bc402ea93a9c Mon Sep 17 00:00:00 2001 From: Stefan Mewes Date: Sun, 4 May 2025 00:21:05 +0200 Subject: [PATCH] first commit --- backup2home.sh | 42 +++++++++++++++++++++++++++++++++ borg_info_anzeigen.sh | 54 +++++++++++++++++++++++++++++++++++++++++++ restorefromhome.sh | 16 +++++++++++++ 3 files changed, 112 insertions(+) create mode 100755 backup2home.sh create mode 100755 borg_info_anzeigen.sh create mode 100755 restorefromhome.sh diff --git a/backup2home.sh b/backup2home.sh new file mode 100755 index 0000000..0a5adb2 --- /dev/null +++ b/backup2home.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Variablen +REPO="ssh://stefan@172.25.28.34:22/srv/usbplatte/nauheim1vps" +SOURCE="/home/stefan" +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" +GOTIFY_TOKEN=${GOTIFY_PW} + +# 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 + MESSAGE="Backup fehlgeschlagen: $BACKUP_NAME" + PRIORITY=10 + echo "FEHLER: Backup fehlgeschlagen ($BACKUP_NAME) am $(date)" + curl -s -X POST "$GOTIFY_URL/message" \ + -H "X-Gotify-Key: $GOTIFY_TOKEN" \ + -d "title=Backup Fehler&message=$MESSAGE&priority=$PRIORITY" +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) =====" diff --git a/borg_info_anzeigen.sh b/borg_info_anzeigen.sh new file mode 100755 index 0000000..668d448 --- /dev/null +++ b/borg_info_anzeigen.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# Setze Backup-Parameter +REPO="ssh://stefan@172.25.28.34:22/srv/usbplatte/nauheim1vps" +clear + +# Funktion, um Informationen anzuzeigen +function show_repo_info() { + echo "Repository-Informationen abrufen..." + borg info $REPO +} + +function list_archives() { + echo "Verfügbare Archive im Repository:" + borg list $REPO +} + +function show_archive_details() { + echo "Details zu einem bestimmten Archiv:" + read -p "Gib den Namen des Archivs ein: " ARCHIVE + borg info $REPO::$ARCHIVE +} + +# Hauptskript: Wiederhole das Menü, solange der Nutzer nicht "Beenden" wählt +while true; do + echo "Was möchtest du tun?" + echo "1) Repository-Informationen anzeigen" + echo "2) Liste aller Archive anzeigen" + echo "3) Details zu einem bestimmten Archiv anzeigen" + echo "4) Beenden" + read -p "Wähle eine Option (1-4): " OPTION + + case $OPTION in + 1) + show_repo_info + ;; + 2) + list_archives + ;; + 3) + show_archive_details + ;; + 4) + echo "Beende das Skript." + exit 0 + ;; + *) + echo "Ungültige Eingabe. Bitte wähle eine Option zwischen 1 und 4." + ;; + esac + + # Warte kurz, bevor das Menü erneut angezeigt wird + echo "" +done diff --git a/restorefromhome.sh b/restorefromhome.sh new file mode 100755 index 0000000..3bee8e8 --- /dev/null +++ b/restorefromhome.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Variablen +REPO="ssh://stefan@172.25.28.34:22/srv/usbplatte/nauheim1vps" +MOUNT_POINT="/home/stefan/restore" + +# Sicherstellen, dass das Mount-Verzeichnis existiert +mkdir -p $MOUNT_POINT + +# Repository mounten +borg mount $REPO $MOUNT_POINT + +echo "Das Backup-Repository wurde erfolgreich in $MOUNT_POINT gemountet." + +# Zum Unmounten später den folgenden Befehl nutzen: +# borg umount $MOUNT_POINT