Samba Backup

This commit is contained in:
2023-07-23 09:37:27 -05:00
parent 0b8e7992e7
commit 6a6368e10f
23 changed files with 1549 additions and 0 deletions
+88
View File
@@ -0,0 +1,88 @@
#!/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