Add minecraft restic hook

This commit is contained in:
Ryan Cavicchioni 2019-12-23 11:32:19 -06:00
parent 52d9dc0f57
commit 3349430416
Signed by: ryanc
GPG Key ID: 877EEDAF9245103D

View File

@ -0,0 +1,96 @@
#!/bin/bash
SERVICE=minecraft.service
VAR_DIR=/opt/minecraft/var
WAIT=30
VERBOSE=${VERBOSE:-4}
error_exit() {
printf "%s\n" "$1" >&2
exit 1
}
stop_server() {
local unit="${1:-$SERVICE}"
local attempts="${2:-$WAIT}"
if ! systemctl -q is-active "$unit"; then
printf "%s is already stopped\n" "$unit"
return 0
fi
systemctl -q stop "$unit"
while systemctl -q is-active "$unit"; do
printf "waiting for %s to stop ... (%s)\n" "$unit" "$attempts"
((attempts--))
if ((attempts == 0)); then
return 1
fi
sleep 1
done
return 0
}
start_server() {
local unit="${1:-$SERVICE}"
local attempts="${2:-$WAIT}"
if systemctl -q is-active "$unit"; then
printf "%s is already started\n" "$unit"
return 0
fi
systemctl -q start "$unit"
while ! systemctl -q is-active "$unit"; do
printf "waiting for %s to start ... (%d)\n" "$unit" "$attempts"
((attempts--))
if ((attempts == 0)); then
return 1
fi
sleep 1
done
return 0
}
open_files() {
local dir=${1-$VAR_DIR}
local attempts="${2:-$WAIT}"
while (($(lsof +D "$dir" | wc -l) > 0)); do
printf "waiting for open files ... (%d)\n" "$attempts"
((attempts--))
if ((attempts == 0)); then
return 1
fi
sleep 1
done
return 0
}
main() {
if [ "$1" == "pre" ]; then
printf "stopping %s\n" $SERVICE
if ! stop_server $SERVICE; then
error_exit "Failed to stop $SERVICE"
fi
printf "checking for open files\n"
if ! open_files $VAR_DIR; then
error_exit "Open files exist in $VAR_DIR"
fi
elif [ "$1" == "post" ]; then
printf "starting %s\n" $SERVICE
if ! start_server $SERVICE; then
error_exit "Failed to start $SERVICE"
fi
fi
}
main "$@"