Initial commit
This commit is contained in:
commit
21f20d7b03
1 changed files with 92 additions and 0 deletions
92
backup_script.sh
Executable file
92
backup_script.sh
Executable file
|
@ -0,0 +1,92 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
### CONFIG
|
||||||
|
HC_HOST=https://health.jfreudenberger.de
|
||||||
|
###
|
||||||
|
|
||||||
|
PING_ROUTE=$HC_HOST/ping/$HC_UUID
|
||||||
|
HAS_HOOKS=""
|
||||||
|
|
||||||
|
checkInput() {
|
||||||
|
for variable in SERVICE BACKUP_PATH HC_UUID RESTIC_REPOSITORY RESTIC_PASSWORD; do
|
||||||
|
if [[ -z ${!variable} ]]; then
|
||||||
|
echo "Variable $variable not given"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
checkForHooks() {
|
||||||
|
test -f "$SERVICE.sh" && HAS_HOOKS=1
|
||||||
|
}
|
||||||
|
|
||||||
|
loadServiceHooks() {
|
||||||
|
if [ "$HAS_HOOKS" == "1" ]; then
|
||||||
|
echo "Loading hooks for service $SERVICE"
|
||||||
|
source "$SERVICE.sh"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send a curl to start the backup
|
||||||
|
healthStart() {
|
||||||
|
curl -fsS -m 10 --retry 5 -o /dev/null "$PING_ROUTE"/start
|
||||||
|
}
|
||||||
|
|
||||||
|
# Send a curl to finish the backup
|
||||||
|
healthFinish() {
|
||||||
|
curl -fsS -m 10 --retry 5 -o /dev/null "$PING_ROUTE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for General Error
|
||||||
|
checkNoError() {
|
||||||
|
if [ "$1" -ne 0 ]; then
|
||||||
|
curl -fsS -m 10 --retry 5 --data-raw "$2 error" "$PING_ROUTE"/fail
|
||||||
|
printf "\n%s ERROR !!!\n" "$3"
|
||||||
|
else
|
||||||
|
printf "\n%s SUCESSFULL\n" "$3"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for Error in Restic backup
|
||||||
|
checkResticError() {
|
||||||
|
if [ "$1" -eq 1 ]; then
|
||||||
|
exitPrematurely "restic fatal error"
|
||||||
|
elif [ "$1" -eq 2 ]; then
|
||||||
|
exitPrematurely "restic remaining files"
|
||||||
|
else
|
||||||
|
printf "\nRESTIC SUCCESSFULL\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
exitPrematurely() {
|
||||||
|
if [ "$HAS_HOOKS" == "1" ]; then
|
||||||
|
post
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -fsS -m 10 --retry 5 --data-raw "$1" "$PING_ROUTE"/fail
|
||||||
|
printf "\n$1 ERROR !!!\n"
|
||||||
|
exit -1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Backup the service and call healthchecks
|
||||||
|
backup() {
|
||||||
|
checkInput
|
||||||
|
healthStart
|
||||||
|
checkForHooks
|
||||||
|
|
||||||
|
if [ "$HAS_HOOKS" == "1" ]; then
|
||||||
|
loadServiceHooks
|
||||||
|
pre
|
||||||
|
fi
|
||||||
|
|
||||||
|
restic backup $BACKUP_PATH
|
||||||
|
checkResticError "$?"
|
||||||
|
|
||||||
|
if [ "$HAS_HOOKS" == "1" ]; then
|
||||||
|
post
|
||||||
|
fi
|
||||||
|
|
||||||
|
healthFinish
|
||||||
|
}
|
||||||
|
|
||||||
|
backup
|
Loading…
Reference in a new issue