From 50039f8d0ca92738bdbd7660268dec33225d1156 Mon Sep 17 00:00:00 2001 From: Dave Conroy Date: Tue, 7 Nov 2023 13:03:01 -0800 Subject: [PATCH] Rearrange timer() --- install/assets/functions/10-db-backup | 356 +++++++++++++------------- 1 file changed, 175 insertions(+), 181 deletions(-) diff --git a/install/assets/functions/10-db-backup b/install/assets/functions/10-db-backup index a30ac71..f47b38a 100644 --- a/install/assets/functions/10-db-backup +++ b/install/assets/functions/10-db-backup @@ -1353,6 +1353,180 @@ move_dbbackup() { run_as_user rm -rf "${TEMP_PATH}"/"${target}" } +prepare_dbbackup() { + timer backup start + now=$(run_as_user date +"%Y%m%d-%H%M%S") + now_date=$(run_as_user date +"%Y-%m-%d") + now_time=$(run_as_user date +"%H:%M:%S") + ltarget=${dbtype}_${backup_job_db_name,,}_${backup_job_db_host,,} + target=${dbtype}_${backup_job_db_name,,}_${backup_job_db_host,,}_${now}.sql +} + +pre_dbbackup() { + ### Pre Script Support + if [ -n "${backup_job_pre_script}" ] ; then + if var_true "${backup_job_pre_script_x_verify}" ; then + run_as_user eval "${backup_job_pre_script}" "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" + else + if [ -x "${backup_job_pre_script}" ] ; then + write_log notice "Found PRE_SCRIPT environment variable. Executing '${backup_job_pre_script}" + run_as_user eval "${backup_job_pre_script}" "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" + else + write_log error "Can't execute PRE_SCRIPT environment variable '${backup_job_pre_script}' as its filesystem bit is not executible!" + fi + fi + fi + + ### Pre Backup Custom Script Support + if [ -d "/assets/custom-scripts/pre" ] && dir_notempty "/assets/custom-scripts/pre" ; then + write_log warning "Found Custom Post Scripts in /assets/custom-scripts/pre - Automatically moving them to '${backup_job_script_location_pre}'" + run_as_user mkdir -p "${backup_job_script_location_pre}" + silent run_as_user cp /assets/custom-scripts/pre/* "${backup_job_script_location_pre}" + fi + + if [ -d "${backup_job_script_location_pre}" ] && dir_notempty "${backup_job_script_location_pre}" ; then + for f in $(find ${backup_job_script_location_pre} -name \*.sh -type f); do + if var_true "${backup_job_pre_script_x_verify}" ; then + run_as_user ${f} "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" + else + if [ -x "${f}" ] ; then + write_log notice "Executing pre backup custom script : '${f}'" + ## script DB_TYPE DB_HOST DB_NAME STARTEPOCH BACKUP_FILENAME + run_as_user ${f} "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" + else + write_log error "Can't run pre backup custom script: '${f}' as its filesystem bit is not executible!" + fi + fi + done + fi +} + +post_dbbackup() { + dbbackup_finish_time=$(run_as_user date +"%s") + dbbackup_total_time=$(run_as_user echo $((dbbackup_finish_time-dbbackup_start_time))) + + if var_true "${CONTAINER_ENABLE_MONITORING}" && [ "${CONTAINER_MONITORING_BACKEND,,}" = "zabbix" ]; then + source /assets/defaults/03-monitoring + write_log notice "Sending Backup Statistics to Zabbix" + silent zabbix_sender -c -c "${ZABBIX_CONFIG_PATH}"/"${ZABBIX_CONFIG_FILE}" -k dbbackup.backup -o '[{"{#NAME}":"'${backup_job_db_host}.${backup_job_db_name}'"}]' + cat < /etc/services.d/99-run_forever/run +#!/bin/bash +while true; do + sleep 86400 +done +EOF + chmod +x /etc/services.d/99-run_forever/run + else + if var_true "${CONTAINER_ENABLE_SCHEDULING}" ; then + write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_SCHEDULING=TRUE'" + exit 1 + fi + if var_true "${CONTAINER_ENABLE_MONITORING}" ; then + write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_MONITORING=TRUE'" + exit 1 + fi + if var_true "${CONTAINER_ENABLE_LOGSHIPPING}" ; then + write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_LOGSHIPPING=TRUE'" + exit 1 + fi + fi + fi +} + +symlink_log () { + if [ -n "${backup_job_db_type}" ] && [ -n "${backup_job_db_name}" ] && [ -n "${backup_job_db_host}" ] && [ -n "${ltarget}" ]; then + local oldpwd=$(pwd) + cd "${LOG_PATH}"/"$(date +'%Y%m%d')" + ln -sf "$(date +'%Y%m%d')"/"$(date -d @${backup_job_start_time} +'%Y%m%d_%H%M%S')"-"${ltarget}".log ../latest-"${ltarget}".log + cd "${oldpwd}" + fi +} + timer() { case "${1}" in backup) @@ -1582,180 +1756,6 @@ timer() { esac } -prepare_dbbackup() { - timer backup start - now=$(run_as_user date +"%Y%m%d-%H%M%S") - now_date=$(run_as_user date +"%Y-%m-%d") - now_time=$(run_as_user date +"%H:%M:%S") - ltarget=${dbtype}_${backup_job_db_name,,}_${backup_job_db_host,,} - target=${dbtype}_${backup_job_db_name,,}_${backup_job_db_host,,}_${now}.sql -} - -pre_dbbackup() { - ### Pre Script Support - if [ -n "${backup_job_pre_script}" ] ; then - if var_true "${backup_job_pre_script_x_verify}" ; then - run_as_user eval "${backup_job_pre_script}" "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" - else - if [ -x "${backup_job_pre_script}" ] ; then - write_log notice "Found PRE_SCRIPT environment variable. Executing '${backup_job_pre_script}" - run_as_user eval "${backup_job_pre_script}" "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" - else - write_log error "Can't execute PRE_SCRIPT environment variable '${backup_job_pre_script}' as its filesystem bit is not executible!" - fi - fi - fi - - ### Pre Backup Custom Script Support - if [ -d "/assets/custom-scripts/pre" ] && dir_notempty "/assets/custom-scripts/pre" ; then - write_log warning "Found Custom Post Scripts in /assets/custom-scripts/pre - Automatically moving them to '${backup_job_script_location_pre}'" - run_as_user mkdir -p "${backup_job_script_location_pre}" - silent run_as_user cp /assets/custom-scripts/pre/* "${backup_job_script_location_pre}" - fi - - if [ -d "${backup_job_script_location_pre}" ] && dir_notempty "${backup_job_script_location_pre}" ; then - for f in $(find ${backup_job_script_location_pre} -name \*.sh -type f); do - if var_true "${backup_job_pre_script_x_verify}" ; then - run_as_user ${f} "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" - else - if [ -x "${f}" ] ; then - write_log notice "Executing pre backup custom script : '${f}'" - ## script DB_TYPE DB_HOST DB_NAME STARTEPOCH BACKUP_FILENAME - run_as_user ${f} "${dbtype}" "${backup_job_db_host}" "${1}" "${dbbackup_start_time}" "${target}" - else - write_log error "Can't run pre backup custom script: '${f}' as its filesystem bit is not executible!" - fi - fi - done - fi -} - -post_dbbackup() { - dbbackup_finish_time=$(run_as_user date +"%s") - dbbackup_total_time=$(run_as_user echo $((dbbackup_finish_time-dbbackup_start_time))) - - if var_true "${CONTAINER_ENABLE_MONITORING}" && [ "${CONTAINER_MONITORING_BACKEND,,}" = "zabbix" ]; then - source /assets/defaults/03-monitoring - write_log notice "Sending Backup Statistics to Zabbix" - silent zabbix_sender -c -c "${ZABBIX_CONFIG_PATH}"/"${ZABBIX_CONFIG_FILE}" -k dbbackup.backup -o '[{"{#NAME}":"'${backup_job_db_host}.${backup_job_db_name}'"}]' - cat < /etc/services.d/99-run_forever/run -#!/bin/bash -while true; do - sleep 86400 -done -EOF - chmod +x /etc/services.d/99-run_forever/run - else - if var_true "${CONTAINER_ENABLE_SCHEDULING}" ; then - write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_SCHEDULING=TRUE'" - exit 1 - fi - if var_true "${CONTAINER_ENABLE_MONITORING}" ; then - write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_MONITORING=TRUE'" - exit 1 - fi - if var_true "${CONTAINER_ENABLE_LOGSHIPPING}" ; then - write_log error "Manual / Exit after execution mode doesn't work with 'CONTAINER_ENABLE_LOGSHIPPING=TRUE'" - exit 1 - fi - fi - fi -} - -symlink_log () { - if [ -n "${backup_job_db_type}" ] && [ -n "${backup_job_db_name}" ] && [ -n "${backup_job_db_host}" ] && [ -n "${ltarget}" ]; then - local oldpwd=$(pwd) - cd "${LOG_PATH}"/"$(date +'%Y%m%d')" - ln -sf "$(date +'%Y%m%d')"/"$(date -d @${backup_job_start_time} +'%Y%m%d_%H%M%S')"-"${ltarget}".log ../latest-"${ltarget}".log - cd "${oldpwd}" - fi -} - write_log() { output_off local _arg_log_level=${1} @@ -1776,13 +1776,7 @@ write_log() { "debug" | "notice" | "warn" | "error") echo "$(date +'%Y-%m-%d %H:%M:%S %Z') [error] ${_arg_log_message}" | run_as_user tee -a "${LOG_PATH}/$(date +'%Y%m%d')/$(date -d @${backup_job_start_time} +'%Y%m%d_%H%M%S')-${ltarget}.log" > /dev/null ;; - esac - ;; - info ) - echo "$(date +'%Y-%m-%d %H:%M:%S %Z') [info] ${_arg_log_message}" | run_as_user tee -a "${LOG_PATH}/$(date +'%Y%m%d')/$(date -d @${backup_job_start_time} +'%Y%m%d_%H%M%S')-${ltarget}.log" > /dev/null - ;; - notice ) - case "${_arg_log_level,,}" in + esacexterna "debug" | "notice" ) echo "$(date +'%Y-%m-%d %H:%M:%S %Z') [notice] ${_arg_log_message}" | run_as_user tee -a "${LOG_PATH}/$(date +'%Y%m%d')/$(date -d @${backup_job_start_time} +'%Y%m%d_%H%M%S')-${ltarget}.log" > /dev/null ;;