#!/bin/bash # # Borg-Backup taeglich, hier aber auf lokal im Netz vorhandene Ressource # # # 2025-05-14, misc # 2025-05-30, misc, aus borgbackup.sh herausgelöst, um Borg-Backup lokal zu nutzen # !!!!!!!!!!!!!!!!!!!!--------------------!!!!!!!!!!!!!!!!!!!!! # !!! Unbedingt anpassen in .env-synology (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 HOST="$(hostname)" export BORG_REPO="ssh://ds220/volume1/NetBackup/borg/$HOST" LOGTIME=`date +%m-%d` BORG="/usr/bin/borg --remote-path=/usr/local/bin/borg " BORG_PATH=/root/sc BORG_INCLUDEFILE="$BORG_PATH/include-synology.lst" BORG_EXCLUDEFILE="$BORG_PATH/exclude-synology.lst" BORG_MOUNTPOINT=$BORG_PATH/mountpoint BORG_COMPRESSION=lz4 BORG_ENCRYPTION=repokey LOG="$BORG_PATH/workdir/borgsynology-$LOGTIME.log" ENVFILE=".env-synology" include_list() { cat <&2 ; exit 1; } ## neues Backup erzeugen borg_create() { echo "###### Starting $0 $* on $(date) ######" $BORG create -v \ --warning \ --filter AME \ --list \ --stats \ --show-rc \ --compression $BORG_COMPRESSION \ --exclude-caches \ --exclude-if-present ".nobackup" \ --keep-exclude-tags \ --exclude-from $BORG_EXCLUDEFILE \ $BORG_REPO::'{now:%Y-%m-%d_%H:%M}' \ $(cat ${BORG_INCLUDEFILE}) if [ $? -eq 0 ]; then echo Calling Success_URL curl -o /dev/null -s $SUCCESS_URL else echo Calling Error_URL curl -o /dev/null -s $ERROR_URL fi echo "###### Finished backup on $(date) ######" } # Hilfe zur Nutzung des Skripts usage() { 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/$ENVFILE ] || borg_env >$BORG_PATH/$ENVFILE # Variablen aus .env einlesen source "$BORG_PATH/$ENVFILE" 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