#!/bin/bash # # Borg-Backup taeglich, siehe Obsidian für Einrichtung # Anregungen von Artur und # https://www.4rr0wx.com/borgbackup-mit-hetzner-storage-box-verwenden/ # # 2025-05-14, misc # !!!!!!!!!!!!!!!!!!!!--------------------!!!!!!!!!!!!!!!!!!!!! # !!! Unbedingt anpassen in .env (wird beim ersten Start erzeugt)!!! # Anschliessend die include-Datei auf nicht vorhandene Verzeichnisse untersuchen # !!! und anpassen. Die exclude-Datei ist in der Regel ok. # !!!!!!!!!!!!!!!!!!!!--------------------!!!!!!!!!!!!!!!!!!!!! # Wenn nicht vorhanden werden include und exclude geschrieben. Ab da nur noch dort aendern. # --------------------------------------------------------------------- # Ab hier normalerweise nichts anpassen export BORG_REPO="ssh://storagebox/./backup" LOGTIME=`date +%m-%d` BORG=/usr/bin/borg BORG_PATH=/root/sc BORG_INCLUDEFILE="$BORG_PATH/include.lst" BORG_EXCLUDEFILE="$BORG_PATH/exclude.lst" BORG_MOUNTPOINT=$BORG_PATH/mountpoint BORG_COMPRESSION=lz4 BORG_ENCRYPTION=repokey LOG="$BORG_PATH/workdir/borgbackup-$LOGTIME.log" HOST="$(hostname)" include_list() { cat < >(tee -i ${LOG}) exec 2>&1 # Include/Exclude [ -f $BORG_INCLUDEFILE ] || include_list >$BORG_INCLUDEFILE [ -f $BORG_EXCLUDEFILE ] || exclude_list >$BORG_EXCLUDEFILE # beim ersten Aufruf .env anlegen [ -f $BORG_PATH/.env ] || borg_env >$BORG_PATH/.env # Variablen aus .env einlesen source "$BORG_PATH/.env" case "$1" in check | init) # überprüfen, ob borg-Repository bereits initialisiert wurde # und führen borg init aus, falls nötig borg_check ;; run | create) borg_umount #eventuell eingebundene Backups entfernen borg_check || die "$BORG_REPO kann nicht angelegt werden" borg_create borg_prune #send_log ;; info) #zeige ausführliche Informationen zum Repo borg_info ;; list) #zeige vorhanden Sicherungen borg_list ;; prune) #bereinige das Backup-Repo borg_prune ;; mount) #stelle Backups als Verzeichnisbaum zur Verfügung borg_mount ;; umount) #entferne das Backup-Repo aus dem Dateisystem borg_umount ;; keyexport) #exportiert Repokey in lokale Datei borg_keyexport ;; *) #Hilfe anzeigen usage ;; esac