From 976f2ebb5cdc5b50e3b0dda9e63e59996ab5cc2c Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 1 Jul 2022 12:22:37 +0200 Subject: [PATCH] restore-website-from-backup.sh: add time durations for removing/restoring webspace and database. --- bin/restore-website-from-backup.sh | 138 +++++++++++++++++++++++++---- 1 file changed, 122 insertions(+), 16 deletions(-) diff --git a/bin/restore-website-from-backup.sh b/bin/restore-website-from-backup.sh index faac79b..df88537 100755 --- a/bin/restore-website-from-backup.sh +++ b/bin/restore-website-from-backup.sh @@ -9,6 +9,12 @@ log_file="$(mktemp)" backup_date=$(date +%Y-%m-%d-%H%M) +# ============= +# --- Some Variable +# ============= + +right_tabstop=75 + # ============= # --- Some functions @@ -116,27 +122,27 @@ echononl(){ } echo_done() { if $terminal ; then - echo -e "\033[75G[ \033[32mdone\033[m ]" + echo -e "\033[${right_tabstop}G[ \033[32mdone\033[m ]" fi } echo_ok() { if $terminal ; then - echo -e "\033[75G[ \033[32mok\033[m ]" + echo -e "\033[${right_tabstop}G[ \033[32mok\033[m ]" fi } echo_warning() { if $terminal ; then - echo -e "\033[75G[ \033[33m\033[1mwarn\033[m ]" + echo -e "\033[${right_tabstop}G[ \033[33m\033[1mwarn\033[m ]" fi } echo_failed(){ if $terminal ; then - echo -e "\033[75G[ \033[1;31mfailed\033[m ]" + echo -e "\033[${right_tabstop}G[ \033[1;31mfailed\033[m ]" fi } echo_skipped() { if $terminal ; then - echo -e "\033[75G[ \033[37mskipped\033[m ]" + echo -e "\033[${right_tabstop}G[ \033[37mskipped\033[m ]" fi } @@ -181,6 +187,62 @@ info (){ fi } +time_duration () { + + local __begin=$1 + local __end=$2 + + local __duration + + if [[ "$__begin" ]] && [[ "$__end" ]] ; then + + local __duration + + local __time=`expr $__end - $__begin` + local __t_h=`expr $__time / 60 / 60` + local __t_rest_h=`expr $__time - $__t_h \\* 60 \\* 60` + local __t_m=`expr $__t_rest_h / 60` + local __t_s=`expr $__t_rest_h - $__t_m \\* 60` + + if [[ $__t_h -gt 0 ]]; then + if [[ $__t_h -lt 10 ]] ; then + echo " $__t_h h : $__t_m min : $__t_s sec" + else + echo "$__t_h h : $__t_m min : $__t_s sec" + fi + elif [[ $__t_m -gt 0 ]]; then + if [[ $__t_m -lt 10 ]] ; then + echo " $__t_m min : $__t_s sec" + else + echo "$__t_m min : $__t_s sec" + fi + else + if [[ $__t_s -lt 10 ]] ; then + echo " $__t_s sec" + else + echo "$__t_s sec" + fi + fi + + else + echo "N/A" + fi + + +} +echo_duration () { + + local __time_duration=${1} + local __length=${#__time_duration} + + # print duratuion inside inside square brackets "[ duration ]" with blank delimiter, + # so add reduce tabstop by 4 characters + # + __tabstop=`expr ${right_tabstop} - ${__length} - 1 - 4` + echo -en "\033[${__tabstop}G[ \033[33m${__time_duration}\033[m ]" + +} + ## - Check if a given array (parameter 2) contains a given string (parameter 1) ## - containsElement () { @@ -790,25 +852,63 @@ if $terminal ; then echo "" fi + +echononl " Remove Documentroot Directory if exists .." +if [[ -d "${LOCAL_WEBSITE_BASE_DIR}/$(basename "$RESTORE_DIR")" ]] ; then + b_timestamp=$(date +"%s") + rm -rf "${LOCAL_WEBSITE_BASE_DIR}/$(basename "$RESTORE_DIR")" > $log_file 2>&1 + retval=$? + e_timestamp=$(date +"%s") + echo_duration "$(time_duration $b_timestamp $e_timestamp)" + if [[ $retval -eq 0 ]]; then + echo_ok + else + echo_failed + fatal "$(cat $log_file)" + fi +else + echo_skipped +fi + echononl " Restore Database '${DATABASE_NAME}'.." +b_timestamp=$(date +"%s") mysql $MYSQL_CREDENTIAL_ARGS $DATABASE_NAME < $SQL_FILE > $log_file 2>&1 -if [[ $? -eq 0 ]]; then +retval=$? +e_timestamp=$(date +"%s") +echo_duration "$(time_duration $b_timestamp $e_timestamp)" +if [[ $retval -eq 0 ]]; then echo_ok else echo_failed fatal "$(cat $log_file)" fi -echononl " Sync Webspace - site '${WEBSITE}' from '${BACKUP_DATE}'.." -rsync -a --delete "$RESTORE_DIR" "${LOCAL_WEBSITE_BASE_DIR}/" > $log_file 2>&1 -if [[ $? -eq 0 ]]; then +echononl " Sync Webspace - site '${WEBSITE}'.." + +# Begin timestamp +# +b_timestamp=$(date +"%s") +cp -ral "$RESTORE_DIR" "${LOCAL_WEBSITE_BASE_DIR}/" > $log_file 2>&1 +#rsync -a --delete --link-dest="$RESTORE_DIR" "$RESTORE_DIR" "${LOCAL_WEBSITE_BASE_DIR}/" > $log_file 2>&1 +retval=$? +# End timestamp +# +e_timestamp=$(date +"%s") + +duration=$(time_duration $b_timestamp $e_timestamp) +echo_duration "$duration" + +if [[ $retval -eq 0 ]]; then echo_ok else echo_failed - echo -e "\n rsync -a --delete \"$RESTORE_DIR\" \"${LOCAL_WEBSITE_BASE_DIR}/\"" + #echo -e "\n rsync -a --delete \"$RESTORE_DIR\" \"${LOCAL_WEBSITE_BASE_DIR}/\"" + echo -e "\n cp -ral \"$RESTORE_DIR\" \"${LOCAL_WEBSITE_BASE_DIR}/\"" fatal "$(cat $log_file)" fi +blank_line + if $IS_NEXTCLOUD ; then echononl " Set maintanance mod on site '${WEBSITE}' to 'off'.." if [[ -f "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}/htdocs/config/config.php" ]] ; then @@ -829,15 +929,21 @@ fi echononl " Set Permissons on local website directory\n '${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}'.." -chown "$HTTP_USER":"$HTTP_GROUP" "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}" > $log_file 2>&1 -if [[ $? -eq 0 ]]; then - echo_ok +if [[ -d "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}" ]] ; then + chown "$HTTP_USER":"$HTTP_GROUP" "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}" > $log_file 2>&1 + if [[ $? -eq 0 ]]; then + echo_ok + else + echo_failed + echo -e "\n chown \"$HTTP_USER\":\"$HTTP_GROUP\" \"${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}\"" + error "$(cat $log_file)" + fi else - echo_failed - echo -e "\n chown \"$HTTP_USER\":\"$HTTP_GROUP\" \"${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}\"" - error "$(cat $log_file)" + echo_skipped fi +blank_line + echononl " Copy info file 'BACKUP-DATE' to Documentroot.." if [[ -d "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}" ]]; then echo "${BACKUP_DATE}" > "${LOCAL_WEBSITE_BASE_DIR}/${WEBSITE}/BACKUP-DATE" 2> $log_file