89 lines
2.4 KiB
Bash
89 lines
2.4 KiB
Bash
#!/command/with-contenv bashio
|
|
# shellcheck shell=bash
|
|
# shellcheck disable=SC1091
|
|
|
|
source scripts/config.sh
|
|
source scripts/main.sh
|
|
source scripts/helper.sh
|
|
source scripts/precheck.sh
|
|
source scripts/sensor.sh
|
|
|
|
export __BASHIO_LOG_TIMESTAMP="%y-%m-%d %T"
|
|
|
|
function run-backup {
|
|
(
|
|
# synchronize the backup routine
|
|
flock -n -x 200 || { bashio::log.warning "Backup already running. Trigger ignored."; return 0; }
|
|
|
|
bashio::log.info "Backup running ..."
|
|
get-sensor
|
|
update-sensor "${SAMBA_STATUS[1]}"
|
|
|
|
# run entire backup steps
|
|
# shellcheck disable=SC2015
|
|
create-backup && copy-backup && cleanup-backups-local && cleanup-backups-remote \
|
|
&& update-sensor "${SAMBA_STATUS[2]}" "ALL" \
|
|
|| update-sensor "${SAMBA_STATUS[3]}" "ALL"
|
|
|
|
sleep 10
|
|
update-sensor "${SAMBA_STATUS[0]}"
|
|
bashio::log.info "Backup finished"
|
|
) 200>/tmp/samba_backup.lockfile
|
|
}
|
|
|
|
|
|
# init config and sensor
|
|
get-config
|
|
get-sensor
|
|
|
|
# run precheck and exit entire addon in case the check fails
|
|
if [ "$SKIP_PRECHECK" = true ]; then
|
|
update-sensor "${SAMBA_STATUS[0]}"
|
|
elif ! smb-precheck; then
|
|
update-sensor "${SAMBA_STATUS[3]}"
|
|
exit 1
|
|
else
|
|
update-sensor "${SAMBA_STATUS[0]}" "ALL"
|
|
fi
|
|
|
|
bashio::log.info "Samba Backup started successfully"
|
|
|
|
# check the time in the background
|
|
if [[ "$TRIGGER_TIME" != "manual" ]]; then
|
|
{
|
|
bashio::log.debug "Starting main loop ..."
|
|
while true; do
|
|
current_date=$(date +'%a %H:%M')
|
|
[[ "$TRIGGER_DAYS" =~ ${current_date:0:3} && "$current_date" =~ $TRIGGER_TIME ]] && run-backup
|
|
|
|
sleep 60
|
|
done
|
|
} &
|
|
fi
|
|
|
|
# start the stdin listener in foreground
|
|
bashio::log.debug "Starting stdin listener ..."
|
|
while true; do
|
|
read -r input
|
|
bashio::log.debug "Input received: ${input}"
|
|
input=$(echo "$input" | jq -r .)
|
|
|
|
if [ "$input" = "restore-sensor" ]; then
|
|
restore-sensor
|
|
|
|
elif [ "$input" = "reset-counter" ]; then
|
|
get-sensor && reset-counter
|
|
bashio::log.info "Counter variables reset successfully"
|
|
|
|
elif [ "$input" = "trigger" ]; then
|
|
run-backup
|
|
|
|
elif is-extended-trigger "$input"; then
|
|
bashio::log.info "Running backup with customized parameters"
|
|
overwrite-params "$input" && run-backup && restore-params
|
|
|
|
else
|
|
bashio::log.warning "Received unknown input: ${input}"
|
|
fi
|
|
done
|