#!/bin/bash
SERVERNAME="[SERVERNAME]"
EMAIL="[MAIL@ADRESSE]"
WHICH="$(/usr/bin/which which)"
ECHO="$($WHICH echo)"
RESTIC="$($WHICH restic)"
TOUCH="$($WHICH touch)"
MAILX="$($WHICH mailx)"
RM="$($WHICH rm)"
MOUNT="$($WHICH mount)"
GREP="$($WHICH grep)"
PWDFILE="/root/.resticpwd"
REP=("repository1" "ggf. weitere")
BACKUP_PATH=("/backup/pfad/1" "/ggf/weitere /auch/mehrere")
OPTIONS="--compression max"
OPTCLEAN="--keep-last 2 --prune"
mail_on_error()
{
if [ "$1" -ne 0 ]; then
$ECHO "Fehler bei $3 $2" | $MAILX -s "Fehler: Restic $SERVERNAME ($3)" $EMAIL
$RM $LOCK
exit 0
fi
}
for i in ${BACKUP_PATH[$1]}
do
if ! [ $MOUNT | $GREP $i ]; then
mail_on_error 1 $i Mountpoint
exit 0
fi
done
if [ ! -f $1 ]; then
case $1 in
[0-3])
LOCK="/var/run/backup$1.lock"
if [ ! -f $LOCK ]; then
$TOUCH $LOCK
$RESTIC $OPTIONS -p $PWDFILE -r ${REP[$1]} backup ${BACKUP_PATH[$1]} 2>&1 >> /tmp/restic$1.log
mail_on_error $? ${BACKUP_PATH[$1]} Backup
$RESTIC forget $OPTCLEAN -p $PWDFILE -r ${REP[$1]} 2>&1 >>/tmp/restic$1.log
mail_on_error $? ${BACKUP_PATH[$1]} Cleanup
$RM $LOCK
fi
;;
*)
exit 0
;;
esac
fi