diff --git a/root/NCscripts/backup.sh b/root/NCscripts/backup.sh index edc4c77..38c2306 100755 --- a/root/NCscripts/backup.sh +++ b/root/NCscripts/backup.sh @@ -110,7 +110,7 @@ function quit { fi if [ -z "${exitError}" ]; then # exit cleanly - echo -e "${note}${stamp} --- ${scriptName} completed" \ + echo -e "${note}[$(stamp)] --- ${scriptName} completed" \ "---${normal}" >> "$logFile" exit 0 else @@ -166,10 +166,10 @@ function cleanup { checkResult="$?" if [ "$checkResult" = "0" ]; then # directory still exists - exitWarn+=("${stamp}_111") + exitWarn+=("[$(stamp)]_111") else # directory removed - echo -e "${op}${stamp} Removed SQL temp directory${normal}" \ + echo -e "${op}[$(stamp)] Removed SQL temp directory${normal}" \ >> "$logFile" fi @@ -177,21 +177,21 @@ function cleanup { # check value of 'clean503' to see if this is necessary (=1) otherwise, skip if [ "$clean503" = "1" ]; then # proceed with cleanup - echo -e "${op}${stamp} Removing 503 error page..." >> "$logFile" + echo -e "${op}[$(stamp)] Removing 503 error page..." >> "$logFile" rm -f "$webroot/$err503File" >> "$logFile" 2>&1 # verify file is actually gone checkExist ff "$webroot/$err503File" checkResult="$?" if [ "$checkResult" = "0" ]; then # file still exists - exitWarn+=("${stamp}_5030") + exitWarn+=("[$(stamp)]_5030") else # file removed - echo -e "${info}${stamp} -- [INFO] 503 page removed from webroot" \ + echo -e "${info}[$(stamp)] -- [INFO] 503 page removed from webroot" \ "--${normal}" >> "$logFile" fi else - echo -e "${op}${stamp} 503 error page never copied to webroot," \ + echo -e "${op}[$(stamp)] 503 error page never copied to webroot," \ "nothing to cleanup" >> "$logFile" fi @@ -199,10 +199,10 @@ function cleanup { ncMaint off # check if successful if [ "$maintResult" = "0" ]; then - echo -e "${info}${stamp} -- [INFO] NextCloud now in regular" \ + echo -e "${info}[$(stamp)] -- [INFO] NextCloud now in regular" \ "operating mode --${normal}" >> "$logFile" else - exitError+=("${stamp}_101") + exitError+=("[$(stamp)]_101") quit fi } @@ -429,9 +429,9 @@ fi ### Log start of script operations -echo -e "${note}${stamp}--- Start $scriptName execution ---${normal}" \ +echo -e "${note}[$(stamp)]--- Start $scriptName execution ---${normal}" \ >> "$logFile" -echo -e "${info}${stamp}-- [INFO] Log file located at ${lit}${logFile}${info}" \ +echo -e "${info}[$(stamp)]-- [INFO] Log file located at ${lit}${logFile}${info}" \ "--${normal}" >> "$logFile" @@ -442,7 +442,7 @@ export logFile="$logFile" ### Create sqlDump temporary directory and sqlDumpFile name sqlDumpDir=$( mktemp -d ) sqlDumpFile="backup-`date +%Y%m%d_%H%M%S`.sql" -echo -e "${info}${stamp} -- [INFO] mySQL dump file will be stored" \ +echo -e "${info}[$(stamp)] -- [INFO] mySQL dump file will be stored" \ "at: ${lit}${sqlDumpDir}/${sqlDumpFile}${normal}" >> "$logFile" @@ -455,9 +455,9 @@ echo -e "${info}${stamp} -- [INFO] mySQL dump file will be stored" \ ## Check if webroot has been specified, if not, skip this entire section since there is nowhere to copy the 503 file. if [ -z "$webroot" ]; then # no webroot path provided - echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \ + echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \ >> "$logFile" - exitWarn+=("${stamp}_5031") + exitWarn+=("[$(stamp)]_5031") clean503=0 else # verify webroot actually exists @@ -465,41 +465,41 @@ else checkResult="$?" if [ "$checkResult" = "1" ]; then # webroot directory specified could not be found - echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \ + echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \ >> "$logFile" exitWarn+=("{$stamp}_5032") clean503=0 else # webroot exists - echo -e "${op}${stamp} Using webroot: ${lit}${webroot}${normal}" \ + echo -e "${op}[$(stamp)] Using webroot: ${lit}${webroot}${normal}" \ >> "$logFile" # Verify 503 file existance at given path checkExist ff "$err503Path" checkResult="$?" if [ "$checkResult" = "1" ]; then # 503 file could not be found - echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \ + echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \ >> "$logFile" - exitWarn+=("${stamp}_5033") + exitWarn+=("[$(stamp)]_5033") clean503=0 else # 503 file exists and webroot is valid. Let's copy it! - echo -e "${op}${stamp} ${err503File} found at ${lit}${err503Path}" \ + echo -e "${op}[$(stamp)] ${err503File} found at ${lit}${err503Path}" \ "${normal}" >> "$logFile" - echo -e "${op}${stamp} Copying 503 error page to webroot..." \ + echo -e "${op}[$(stamp)] Copying 503 error page to webroot..." \ "${normal}" >> "$logFile" cp "${err503Path}" "$webroot/" >> "$logFile" 2>&1 copyResult="$?" # verify copy was successful if [ "$copyResult" = "1" ]; then # copy was unsuccessful - echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \ + echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \ >> "$logFile" - exitWarn+=("${stamp}_5035") + exitWarn+=("[$(stamp)]_5035") clean503=0 else # copy was successful - echo -e "${info}${stamp} -- [INFO] 503 error page" \ + echo -e "${info}[$(stamp)] -- [INFO] 503 error page" \ "successfully copied to webroot --${normal}" >> "$logFile" clean503=1 fi @@ -514,10 +514,10 @@ fi ncMaint on # check if successful if [ "$maintResult" = "0" ]; then - echo -e "${info}${stamp} -- [INFO] NextCloud now in maintenance mode --" \ + echo -e "${info}[$(stamp)] -- [INFO] NextCloud now in maintenance mode --" \ "${normal}" >> "$logFile" else - exitError+=("${stamp}_100") + exitError+=("[$(stamp)]_100") cleanup quit fi @@ -528,23 +528,23 @@ mapfile -t sqlParams < "$sqlDetails" ### Dump SQL -echo -e "${op}${stamp} Dumping NextCloud SQL database...${normal}" >> "$logFile" +echo -e "${op}[$(stamp)] Dumping NextCloud SQL database...${normal}" >> "$logFile" mysqldump --single-transaction -h"${sqlParams[0]}" -u"${sqlParams[1]}" \ -p"${sqlParams[2]}" "${sqlParams[3]}" > "${sqlDumpDir}/${sqlDumpFile}" \ 2>> "$logFile" # verify dumpResult="$?" if [ "$dumpResult" = "0" ]; then - echo -e "${ok}${stamp} -- [SUCCESS] SQL dumped successfully --${normal}" \ + echo -e "${ok}[$(stamp)] -- [SUCCESS] SQL dumped successfully --${normal}" \ >> "$logFile" else - exitError+=("${stamp}_200") + exitError+=("[$(stamp)]_200") cleanup quit fi ### Call borgbackup to copy actual files -echo -e "${op}${stamp} Pre-backup tasks completed, calling borgbackup..." \ +echo -e "${op}[$(stamp)] Pre-backup tasks completed, calling borgbackup..." \ "${normal}" >> "$logFile" ## Get borgbackup settings and repo details @@ -553,10 +553,10 @@ mapfile -t borgConfig < "$borgDetails" ## check if any required borg configuration variables in defintion file are ## empty and exit with error, otherwise, map array items to variables # check: borg base directory -echo -e "${op}${stamp} Verifying supplied borg configuration variables..." \ +echo -e "${op}[$(stamp)] Verifying supplied borg configuration variables..." \ "${normal}" >> "$logFile" if [ -z "${borgConfig[0]}" ]; then - exitError+=("${stamp}_210") + exitError+=("[$(stamp)]_210") cleanup quit else @@ -565,16 +565,16 @@ else checkResult="$?" if [ "$checkResult" = "1" ]; then # borg base directory specified could not be found - exitError+=("${stamp}_210") + exitError+=("[$(stamp)]_210") cleanup quit fi - echo -e "${op}${stamp} Borg base dir... OK${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Borg base dir... OK${normal}" >> "$logFile" export BORG_BASE_DIR="${borgConfig[0]%/}" fi # check: path to SSH keyfile if [ -z "${borgConfig[1]}" ]; then - exitError+=("${stamp}_211") + exitError+=("[$(stamp)]_211") cleanup quit else @@ -582,28 +582,28 @@ else checkResult="$?" if [ "$checkResult" = 1 ]; then # SSH keyfile specified could not be found - exitError+=("${stamp}_211") + exitError+=("[$(stamp)]_211") cleanup quit fi - echo -e "${op}${stamp} Borg SSH key... OK${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Borg SSH key... OK${normal}" >> "$logFile" export BORG_RSH="ssh -i ${borgConfig[1]}" fi # check: name of borg repo if [ -z "${borgConfig[2]}" ]; then - exitError+=("${stamp}_212") + exitError+=("[$(stamp)]_212") cleanup quit else - echo -e "${op}${stamp} Borg REPO name... OK${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Borg REPO name... OK${normal}" >> "$logFile" export BORG_REPO="${borgConfig[2]}" fi # repo password if [ -n "${borgConfig[3]}" ]; then - echo -e "${op}${stamp} Borg SSH/REPO password... OK${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Borg SSH/REPO password... OK${normal}" >> "$logFile" export BORG_PASSPHRASE="${borgConfig[3]}" else - exitWarn+=("${stamp}_2111") + exitWarn+=("[$(stamp)]_2111") # if the password was omitted by mistake, export a dummy password so borg # fails with an error instead of sitting and waiting for input export BORG_PASSPHRASE="DummyPasswordSoBorgFails" @@ -616,31 +616,31 @@ borgExclude="${borgConfig[5]}" borgPrune="${borgConfig[6]}" # export: borg remote path (if not blank) if [ -n "${borgConfig[7]}" ]; then - echo -e "${op}${stamp} Borg REMOTE path... OK${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Borg REMOTE path... OK${normal}" >> "$logFile" export BORG_REMOTE_PATH="${borgConfig[7]}" else - exitWarn+=("${stamp}_2112") + exitWarn+=("[$(stamp)]_2112") fi ## If borgXtra exists, map contents to an array variable if [ -n "$borgXtra" ]; then - echo -e "${op}${stamp} Processing referenced extra files list for" \ + echo -e "${op}[$(stamp)] Processing referenced extra files list for" \ "borgbackup to include in backup${normal}" >> "$logFile" checkExist ff "$borgXtra" checkResult="$?" if [ "$checkResult" = "0" ]; then - echo -e "${op}${stamp} Found ${lit}${borgXtra}${normal}" >> "$logFile" + echo -e "${op}[$(stamp)] Found ${lit}${borgXtra}${normal}" >> "$logFile" mapfile -t xtraFiles < "$borgXtra" - echo -e "${op}${stamp} Processed extra files list for inclusion in" \ + echo -e "${op}[$(stamp)] Processed extra files list for inclusion in" \ "borgbackup${normal}" >> "$logFile" else - exitWarn+=("${stamp}_2113") + exitWarn+=("[$(stamp)]_2113") fi else # no extra locations specified - echo -e "${op}${stamp} No additional locations specified for backup." \ + echo -e "${op}[$(stamp)] No additional locations specified for backup." \ "Only NextCloud data files will be backed up${normal}" >> "$logFile" - exitWarn+=("${stamp}_2116") + exitWarn+=("[$(stamp)]_2116") fi ## Check if borgExclude exists since borg will throw an error if it's missing @@ -648,16 +648,16 @@ if [ -n "$borgExclude" ]; then checkExist ff "$borgExclude" checkResult="$?" if [ "$checkResult" = "0" ]; then - echo -e "${op}${stamp} Found ${lit}${borgExclude}${normal}" \ + echo -e "${op}[$(stamp)] Found ${lit}${borgExclude}${normal}" \ >> "$logFile" else # file not found, unset the variable so it's like it was not specified # in the first place and continue with backup unset borgExclude - exitWarn+=("${stamp}_2114") + exitWarn+=("[$(stamp)]_2114") fi else - echo -e "${op}${stamp} Exclusion pattern file not specified." \ + echo -e "${op}[$(stamp)] Exclusion pattern file not specified." \ "No exclusions will be processed${normal}" >> "$logFile" fi @@ -668,13 +668,13 @@ fi ## the 'noexec' option for security. Thus, we will use/create a 'tmp' folder ## within the BORG_BASE_DIR and instruct python to use that instead of /tmp # check if BORG_BASE_DIR/tmp exists, if not, create it -echo -e "${op}${stamp} Checking for tmp directory at ${lit}${BORG_BASE_DIR}" \ +echo -e "${op}[$(stamp)] Checking for tmp directory at ${lit}${BORG_BASE_DIR}" \ "${normal}" >> "$logFile" checkExist fd "$BORG_BASE_DIR/tmp" checkResult="$?" if [ "$checkResult" = "1" ]; then # folder not found - echo -e "${op}${stamp} tmp folder not found... creating${lit}" \ + echo -e "${op}[$(stamp)] tmp folder not found... creating${lit}" \ "${BORG_BASE_DIR}/tmp${normal}" >> "$logFile" mkdir "$BORG_BASE_DIR/tmp" 2>> "$logFile" # verify folder created @@ -682,17 +682,17 @@ if [ "$checkResult" = "1" ]; then checkResult="$?" if [ "$checkResult" = "0" ]; then # folder exists - echo -e "${op}${stamp} tmp folder created within borg base directory" \ + echo -e "${op}[$(stamp)] tmp folder created within borg base directory" \ "${normal}" >> "$logFile" else # problem creating folder and script will exit - exitError+=("${stamp}_215") + exitError+=("[$(stamp)]_215") cleanup quit fi else # folder found - echo -e "${op}${stamp} tmp folder found within borg base directory" \ + echo -e "${op}[$(stamp)] tmp folder found within borg base directory" \ "${normal}" >> "$logFile" fi # export TMPDIR environment variable @@ -703,7 +703,7 @@ export TMPDIR="${BORG_BASE_DIR}/tmp" # commandline depends on whether borgExclude is empty or not if [ -z "$borgExclude" ]; then # borgExclude is empty - echo -e "${info}${stamp} --[INFO] Executing borg without exclusions --" \ + echo -e "${info}[$(stamp)] --[INFO] Executing borg without exclusions --" \ "${normal}" >> "$logFile" borg --show-rc create ${borgCreateParams} ::`date +%Y-%m-%d_%H%M%S` \ ${xtraFiles[@]} \ @@ -711,7 +711,7 @@ if [ -z "$borgExclude" ]; then 2>> "$logFile" else # borgExclude is not empty - echo -e "${info}${stamp} --[INFO] Executing borg with exclusions --" \ + echo -e "${info}[$(stamp)] --[INFO] Executing borg with exclusions --" \ "${normal}" >> "$logFile" borg --show-rc create ${borgCreateParams} --exclude-from ${borgExclude} \ ::`date +%Y-%m-%d_%H%M%S` \ @@ -723,54 +723,54 @@ fi ## Check status of borg operation borgResult="$?" if [ "$borgResult" -eq 0 ]; then - echo -e "${ok}${stamp} -- [SUCCESS] Borg backup completed successfully --" \ + echo -e "${ok}[$(stamp)] -- [SUCCESS] Borg backup completed successfully --" \ "${normal}" >> "$logFile" elif [ "$borgResult" -eq 1 ]; then - exitWarn+=("${stamp}_2200") + exitWarn+=("[$(stamp)]_2200") elif [ "$borgResult" -ge 2 ]; then - exitError+=("${stamp}_220") + exitError+=("[$(stamp)]_220") cleanup quit else - exitWarn+=("${stamp}_2201") + exitWarn+=("[$(stamp)]_2201") fi ## Generate and execute borg prune # command depends on whether or not parameters have been defined if [ -n "$borgPrune" ]; then # parameters defined - echo -e "${info}${stamp} --[INFO] Executing borg prune operation --" \ + echo -e "${info}[$(stamp)] --[INFO] Executing borg prune operation --" \ "${normal}" >> "$logFile" borg prune --show-rc -v ${borgPruneParams} ${borgPrune} \ 2>> "$logFile" # check return-status pruneResult="$?" if [ "$pruneResult" -eq 0 ]; then - echo -e "${ok}${stamp} -- [SUCCESS] Borg prune completed successfully" \ + echo -e "${ok}[$(stamp)] -- [SUCCESS] Borg prune completed successfully" \ "--${normal}" >> "$logFile" elif [ "$pruneResult" -eq 1 ]; then - exitWarn+=("${stamp}_2210") + exitWarn+=("[$(stamp)]_2210") elif [ "$pruneResult" -ge 2 ]; then - exitError+=("${stamp}_221") + exitError+=("[$(stamp)]_221") else - exitWarn+=("${stamp}_2212") + exitWarn+=("[$(stamp)]_2212") fi else # parameters not defined... skip pruning - exitWarn+=("${stamp}_2115") + exitWarn+=("[$(stamp)]_2115") fi ### borgbackup completed -echo -e "${op}${stamp} Borgbackup completed... begin cleanup" \ +echo -e "${op}[$(stamp)] Borgbackup completed... begin cleanup" \ "${normal}" >> "$logFile" ### Exit script -echo -e "${bold}${op}${stamp} ***Normal exit process***${normal}" \ +echo -e "${bold}${op}[$(stamp)] ***Normal exit process***${normal}" \ >> "$logFile" cleanup -echo -e "${bold}${ok}${stamp} -- [SUCCESS] All processes completed" \ +echo -e "${bold}${ok}[$(stamp)] -- [SUCCESS] All processes completed" \ "successfully --${normal}" >> "$logFile" quit