replaced all ${stamp} with [$(stamp)]
This commit is contained in:
parent
a14d0ba4a5
commit
12bc49a59e
@ -120,7 +120,7 @@ function quit {
|
|||||||
fi
|
fi
|
||||||
if [ -z "${exitError}" ]; then
|
if [ -z "${exitError}" ]; then
|
||||||
# exit cleanly
|
# exit cleanly
|
||||||
echo -e "${note}${stamp} -- ${scriptName} completed" \
|
echo -e "${note}[$(stamp)] -- ${scriptName} completed" \
|
||||||
"--${normal}" >> "$logFile"
|
"--${normal}" >> "$logFile"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
@ -177,10 +177,10 @@ function cleanup {
|
|||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
# directory still exists
|
# directory still exists
|
||||||
exitWarn+=("${stamp}_111")
|
exitWarn+=("[$(stamp)]_111")
|
||||||
else
|
else
|
||||||
# directory removed
|
# directory removed
|
||||||
echo -e "${op}${stamp} Removed SQL temp directory${normal}" \
|
echo -e "${op}[$(stamp)] Removed SQL temp directory${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -188,21 +188,21 @@ function cleanup {
|
|||||||
# check value of 'clean503' to see if this is necessary (=1) otherwise, skip
|
# check value of 'clean503' to see if this is necessary (=1) otherwise, skip
|
||||||
if [ "$clean503" = "1" ]; then
|
if [ "$clean503" = "1" ]; then
|
||||||
# proceed with cleanup
|
# 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
|
rm -f "$webroot/$err503File" >> "$logFile" 2>&1
|
||||||
# verify file is actually gone
|
# verify file is actually gone
|
||||||
checkExist ff "$webroot/$err503File"
|
checkExist ff "$webroot/$err503File"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
# file still exists
|
# file still exists
|
||||||
exitWarn+=("${stamp}_5030")
|
exitWarn+=("[$(stamp)]_5030")
|
||||||
else
|
else
|
||||||
# file removed
|
# file removed
|
||||||
echo -e "${info}${stamp} -- [INFO] 503 page removed from webroot" \
|
echo -e "${info}[$(stamp)] -- [INFO] 503 page removed from webroot" \
|
||||||
"--${normal}" >> "$logFile"
|
"--${normal}" >> "$logFile"
|
||||||
fi
|
fi
|
||||||
else
|
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"
|
"nothing to cleanup" >> "$logFile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -210,18 +210,18 @@ function cleanup {
|
|||||||
# start and verify postfix
|
# start and verify postfix
|
||||||
operateDocker start postfix
|
operateDocker start postfix
|
||||||
if [ "$dockerResultState" = "true" ]; then
|
if [ "$dockerResultState" = "true" ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] Postfix container is running --" \
|
echo -e "${info}[$(stamp)] -- [INFO] Postfix container is running --" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_103")
|
exitError+=("[$(stamp)]_103")
|
||||||
fi
|
fi
|
||||||
# start and verify dovecot
|
# start and verify dovecot
|
||||||
operateDocker start dovecot
|
operateDocker start dovecot
|
||||||
if [ "$dockerResultState" = "true" ]; then
|
if [ "$dockerResultState" = "true" ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] Dovecot container is running --" \
|
echo -e "${info}[$(stamp)] -- [INFO] Dovecot container is running --" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_104")
|
exitError+=("[$(stamp)]_104")
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ function cleanup {
|
|||||||
function operateDocker {
|
function operateDocker {
|
||||||
# determine action to take
|
# determine action to take
|
||||||
if [ "$1" = "stop" ]; then
|
if [ "$1" = "stop" ]; then
|
||||||
echo -e "${op}${stamp} Stopping ${2}-mailcow container...${normal}" \
|
echo -e "${op}[$(stamp)] Stopping ${2}-mailcow container...${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
docker-compose stop --timeout ${dockerStopTimeout} ${2}-mailcow \
|
docker-compose stop --timeout ${dockerStopTimeout} ${2}-mailcow \
|
||||||
2>> "$logFile"
|
2>> "$logFile"
|
||||||
@ -240,7 +240,7 @@ if [ "$1" = "stop" ]; then
|
|||||||
dockerResultExit=$(docker inspect -f '{{ .State.ExitCode }}' \
|
dockerResultExit=$(docker inspect -f '{{ .State.ExitCode }}' \
|
||||||
${COMPOSE_PROJECT_NAME}_${2}-mailcow_1)
|
${COMPOSE_PROJECT_NAME}_${2}-mailcow_1)
|
||||||
elif [ "$1" = "start" ]; then
|
elif [ "$1" = "start" ]; then
|
||||||
echo -e "${op}${stamp} Starting ${2}-mailcow container...${normal}" \
|
echo -e "${op}[$(stamp)] Starting ${2}-mailcow container...${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
docker-compose start ${2}-mailcow 2>> "$logFile"
|
docker-compose start ${2}-mailcow 2>> "$logFile"
|
||||||
# verify
|
# verify
|
||||||
@ -445,11 +445,11 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
### Log start of script operations
|
### Log start of script operations
|
||||||
echo -e "${note}${stamp} --- Start $scriptName execution ---${normal}" \
|
echo -e "${note}[$(stamp)] --- Start $scriptName execution ---${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
echo -e "${info}${stamp} -- [INFO] using ${lit}${mailcowConfigFilePath}" \
|
echo -e "${info}[$(stamp)] -- [INFO] using ${lit}${mailcowConfigFilePath}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
echo -e "${info}${stamp} -- [INFO] using ${lit}${dockerComposeFilePath}" \
|
echo -e "${info}[$(stamp)] -- [INFO] using ${lit}${dockerComposeFilePath}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
|
|
||||||
### Import additional variables from mailcow configuration file
|
### Import additional variables from mailcow configuration file
|
||||||
@ -475,7 +475,7 @@ dockerVolumeCrypt=$(docker volume inspect -f '{{ .Mountpoint }}' ${COMPOSE_PROJE
|
|||||||
### Create sqlDump temporary directory and sqlDumpFile name
|
### Create sqlDump temporary directory and sqlDumpFile name
|
||||||
sqlDumpDir=$( mktemp -d )
|
sqlDumpDir=$( mktemp -d )
|
||||||
sqlDumpFile="backup-`date +%Y%m%d_%H%M%S`.sql"
|
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"
|
"at: ${lit}${sqlDumpDir}/${sqlDumpFile}${normal}" >> "$logFile"
|
||||||
|
|
||||||
|
|
||||||
@ -488,9 +488,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.
|
## 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
|
if [ -z "$webroot" ]; then
|
||||||
# no webroot path provided
|
# no webroot path provided
|
||||||
echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
exitWarn+=("${stamp}_5031")
|
exitWarn+=("[$(stamp)]_5031")
|
||||||
clean503=0
|
clean503=0
|
||||||
else
|
else
|
||||||
# verify webroot actually exists
|
# verify webroot actually exists
|
||||||
@ -498,41 +498,41 @@ else
|
|||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "1" ]; then
|
if [ "$checkResult" = "1" ]; then
|
||||||
# webroot directory specified could not be found
|
# webroot directory specified could not be found
|
||||||
echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
exitWarn+=("${stamp}_5032")
|
exitWarn+=("[$(stamp)]_5032")
|
||||||
clean503=0
|
clean503=0
|
||||||
else
|
else
|
||||||
# webroot exists
|
# webroot exists
|
||||||
echo -e "${op}${stamp} Using webroot: ${lit}${webroot}${normal}" \
|
echo -e "${op}[$(stamp)] Using webroot: ${lit}${webroot}${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
# Verify 503 file existance at given path
|
# Verify 503 file existance at given path
|
||||||
checkExist ff "$err503Path"
|
checkExist ff "$err503Path"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "1" ]; then
|
if [ "$checkResult" = "1" ]; then
|
||||||
# 503 file could not be found
|
# 503 file could not be found
|
||||||
echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
exitWarn+=("${stamp}_5033")
|
exitWarn+=("[$(stamp)]_5033")
|
||||||
clean503=0
|
clean503=0
|
||||||
else
|
else
|
||||||
# 503 file exists and webroot is valid. Let's copy it!
|
# 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"
|
"${normal}" >> "$logFile"
|
||||||
echo -e "${op}${stamp} Copying 503 error page to webroot..." \
|
echo -e "${op}[$(stamp)] Copying 503 error page to webroot..." \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
cp "${err503Path}" "$webroot/" >> "$logFile" 2>&1
|
cp "${err503Path}" "$webroot/" >> "$logFile" 2>&1
|
||||||
copyResult="$?"
|
copyResult="$?"
|
||||||
# verify copy was successful
|
# verify copy was successful
|
||||||
if [ "$copyResult" = "1" ]; then
|
if [ "$copyResult" = "1" ]; then
|
||||||
# copy was unsuccessful
|
# copy was unsuccessful
|
||||||
echo -e "${info}${stamp} -- [INFO] ${warn503} --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] ${warn503} --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
exitWarn+=("${stamp}_5035")
|
exitWarn+=("[$(stamp)]_5035")
|
||||||
clean503=0
|
clean503=0
|
||||||
else
|
else
|
||||||
# copy was successful
|
# 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"
|
"successfully copied to webroot --${normal}" >> "$logFile"
|
||||||
clean503=1
|
clean503=1
|
||||||
fi
|
fi
|
||||||
@ -552,10 +552,10 @@ cd "$mailcowPath"
|
|||||||
operateDocker stop postfix
|
operateDocker stop postfix
|
||||||
# process result
|
# process result
|
||||||
if [ "$dockerResultState" = "false" ] && [ "$dockerResultExit" -eq 0 ]; then
|
if [ "$dockerResultState" = "false" ] && [ "$dockerResultExit" -eq 0 ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] Postfix container stopped --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] Postfix container stopped --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_101")
|
exitError+=("[$(stamp)]_101")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
fi
|
fi
|
||||||
@ -563,77 +563,77 @@ fi
|
|||||||
operateDocker stop dovecot
|
operateDocker stop dovecot
|
||||||
# process result
|
# process result
|
||||||
if [ "$dockerResultState" = "false" ] && [ "$dockerResultExit" -eq 0 ]; then
|
if [ "$dockerResultState" = "false" ] && [ "$dockerResultExit" -eq 0 ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] Dovecot container stopped --${normal}" \
|
echo -e "${info}[$(stamp)] -- [INFO] Dovecot container stopped --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_102")
|
exitError+=("[$(stamp)]_102")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
### Dump SQL
|
### Dump SQL
|
||||||
echo -e "${op}${stamp} Dumping mailcow SQL database...${normal}" >> "$logFile"
|
echo -e "${op}[$(stamp)] Dumping mailcow SQL database...${normal}" >> "$logFile"
|
||||||
docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 \
|
docker-compose exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 \
|
||||||
-u${DBUSER} -p${DBPASS} ${DBNAME} > "$sqlDumpDir/$sqlDumpFile" \
|
-u${DBUSER} -p${DBPASS} ${DBNAME} > "$sqlDumpDir/$sqlDumpFile" \
|
||||||
2>> "$logFile"
|
2>> "$logFile"
|
||||||
dumpResult=$(docker-compose exec -T mysql-mailcow echo "$?")
|
dumpResult=$(docker-compose exec -T mysql-mailcow echo "$?")
|
||||||
## very mysqldump completed successfully
|
## very mysqldump completed successfully
|
||||||
if [ "$dumpResult" = "0" ]; then
|
if [ "$dumpResult" = "0" ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] mySQLdump completed successfully --" \
|
echo -e "${info}[$(stamp)] -- [INFO] mySQLdump completed successfully --" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_201")
|
exitError+=("[$(stamp)]_201")
|
||||||
fi
|
fi
|
||||||
## verify the dump file was actually written to disk
|
## verify the dump file was actually written to disk
|
||||||
checkExist fs "$sqlDumpDir/$sqlDumpFile"
|
checkExist fs "$sqlDumpDir/$sqlDumpFile"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
echo -e "${ok}${stamp} -- [SUCCESS] SQL successfully dumped --" \
|
echo -e "${ok}[$(stamp)] -- [SUCCESS] SQL successfully dumped --" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_201")
|
exitError+=("[$(stamp)]_201")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### Save redis state
|
### Save redis state
|
||||||
## Delete any existing redis dump file otherwise our file check will be useless
|
## Delete any existing redis dump file otherwise our file check will be useless
|
||||||
echo -e "${op}${stamp} Cleaning up old redis state backup...${normal}" \
|
echo -e "${op}[$(stamp)] Cleaning up old redis state backup...${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
checkExist ff "$dockerVolumeRedis/dump.rdb"
|
checkExist ff "$dockerVolumeRedis/dump.rdb"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
echo -e "${lit}${stamp} Old redis backup found. ${op}Deleting..." \
|
echo -e "${lit}[$(stamp)] Old redis backup found. ${op}Deleting..." \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
rm -f "$dockerVolumeRedis/dump.rdb" 2>> "$logFile"
|
rm -f "$dockerVolumeRedis/dump.rdb" 2>> "$logFile"
|
||||||
echo -e "${op}${stamp} ...done${normal}" >> "$logFile"
|
echo -e "${op}[$(stamp)] ...done${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
echo -e "${op}${stamp} No old redis backup found${normal}" \
|
echo -e "${op}[$(stamp)] No old redis backup found${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
fi
|
fi
|
||||||
## Export redis
|
## Export redis
|
||||||
echo -e "${op}${stamp} Saving redis state information...${normal}" >> "$logFile"
|
echo -e "${op}[$(stamp)] Saving redis state information...${normal}" >> "$logFile"
|
||||||
docker-compose exec -T redis-mailcow redis-cli save >> "$logFile" 2>&1
|
docker-compose exec -T redis-mailcow redis-cli save >> "$logFile" 2>&1
|
||||||
saveResult=$(docker-compose exec -T redis-mailcow echo "$?")
|
saveResult=$(docker-compose exec -T redis-mailcow echo "$?")
|
||||||
# verify save operation completed successfully
|
# verify save operation completed successfully
|
||||||
if [ "$saveResult" = "0" ]; then
|
if [ "$saveResult" = "0" ]; then
|
||||||
echo -e "${info}${stamp} -- [INFO] redis save-state successful --" \
|
echo -e "${info}[$(stamp)] -- [INFO] redis save-state successful --" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_202")
|
exitError+=("[$(stamp)]_202")
|
||||||
fi
|
fi
|
||||||
## verify save-file written to disk
|
## verify save-file written to disk
|
||||||
checkExist fs "$dockerVolumeRedis/dump.rdb"
|
checkExist fs "$dockerVolumeRedis/dump.rdb"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
echo -e "${ok}${stamp} -- [SUCCESS] redis state saved --${normal}" \
|
echo -e "${ok}[$(stamp)] -- [SUCCESS] redis state saved --${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
else
|
else
|
||||||
exitError+=("${stamp}_202")
|
exitError+=("[$(stamp)]_202")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
### Call borgbackup to copy actual files
|
### 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"
|
"${normal}" >> "$logFile"
|
||||||
|
|
||||||
## Get borgbackup settings and repo details
|
## Get borgbackup settings and repo details
|
||||||
@ -642,10 +642,10 @@ mapfile -t borgConfig < "$borgDetails"
|
|||||||
## check if any required borg configuration variables in defintion file are
|
## check if any required borg configuration variables in defintion file are
|
||||||
## empty and exit with error, otherwise, map array items to variables
|
## empty and exit with error, otherwise, map array items to variables
|
||||||
# check: borg base directory
|
# check: borg base directory
|
||||||
echo -e "${op}${stamp} Verifying supplied borg configuration variables..." \
|
echo -e "${op}[$(stamp)] Verifying supplied borg configuration variables..." \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
if [ -z "${borgConfig[0]}" ]; then
|
if [ -z "${borgConfig[0]}" ]; then
|
||||||
exitError+=("${stamp}_210")
|
exitError+=("[$(stamp)]_210")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
else
|
else
|
||||||
@ -654,16 +654,16 @@ else
|
|||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "1" ]; then
|
if [ "$checkResult" = "1" ]; then
|
||||||
# borg base directory specified could not be found
|
# borg base directory specified could not be found
|
||||||
exitError+=("${stamp}_210")
|
exitError+=("[$(stamp)]_210")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
fi
|
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]%/}"
|
export BORG_BASE_DIR="${borgConfig[0]%/}"
|
||||||
fi
|
fi
|
||||||
# check: path to SSH keyfile
|
# check: path to SSH keyfile
|
||||||
if [ -z "${borgConfig[1]}" ]; then
|
if [ -z "${borgConfig[1]}" ]; then
|
||||||
exitError+=("${stamp}_211")
|
exitError+=("[$(stamp)]_211")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
else
|
else
|
||||||
@ -671,28 +671,28 @@ else
|
|||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = 1 ]; then
|
if [ "$checkResult" = 1 ]; then
|
||||||
# SSH keyfile specified could not be found
|
# SSH keyfile specified could not be found
|
||||||
exitError+=("${stamp}_211")
|
exitError+=("[$(stamp)]_211")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
fi
|
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]}"
|
export BORG_RSH="ssh -i ${borgConfig[1]}"
|
||||||
fi
|
fi
|
||||||
# check: name of borg repo
|
# check: name of borg repo
|
||||||
if [ -z "${borgConfig[2]}" ]; then
|
if [ -z "${borgConfig[2]}" ]; then
|
||||||
exitError+=("${stamp}_212")
|
exitError+=("[$(stamp)]_212")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
else
|
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]}"
|
export BORG_REPO="${borgConfig[2]}"
|
||||||
fi
|
fi
|
||||||
# repo password
|
# repo password
|
||||||
if [ -n "${borgConfig[3]}" ]; then
|
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]}"
|
export BORG_PASSPHRASE="${borgConfig[3]}"
|
||||||
else
|
else
|
||||||
exitWarn+=("${stamp}_2111")
|
exitWarn+=("[$(stamp)]_2111")
|
||||||
# if the password was omitted by mistake, export a dummy password so borg
|
# if the password was omitted by mistake, export a dummy password so borg
|
||||||
# fails with an error instead of sitting and waiting for input
|
# fails with an error instead of sitting and waiting for input
|
||||||
export BORG_PASSPHRASE="DummyPasswordSoBorgFails"
|
export BORG_PASSPHRASE="DummyPasswordSoBorgFails"
|
||||||
@ -705,32 +705,32 @@ borgExclude="${borgConfig[5]}"
|
|||||||
borgPrune="${borgConfig[6]}"
|
borgPrune="${borgConfig[6]}"
|
||||||
# export: borg remote path (if not blank)
|
# export: borg remote path (if not blank)
|
||||||
if [ -n "${borgConfig[7]}" ]; then
|
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]}"
|
export BORG_REMOTE_PATH="${borgConfig[7]}"
|
||||||
else
|
else
|
||||||
exitWarn+=("${stamp}_2112")
|
exitWarn+=("[$(stamp)]_2112")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## If borgXtra exists, map contents to an array variable
|
## If borgXtra exists, map contents to an array variable
|
||||||
if [ -n "$borgXtra" ]; then
|
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"
|
"borgbackup to include in backup${normal}" >> "$logFile"
|
||||||
checkExist ff "$borgXtra"
|
checkExist ff "$borgXtra"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
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"
|
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"
|
"borgbackup${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
exitWarn+=("${stamp}_2113")
|
exitWarn+=("[$(stamp)]_2113")
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# no extra locations specified
|
# 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 Mailcow data and config files will be backed up.${normal}" \
|
"Only Mailcow data and config files will be backed up.${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
exitWarn+=("${stamp}_2116")
|
exitWarn+=("[$(stamp)]_2116")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Check if borgExclude exists since borg will throw an error if it's missing
|
## Check if borgExclude exists since borg will throw an error if it's missing
|
||||||
@ -738,16 +738,16 @@ if [ -n "$borgExclude" ]; then
|
|||||||
checkExist ff "$borgExclude"
|
checkExist ff "$borgExclude"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
echo -e "${op}${stamp} Found ${lit}${borgExclude}${normal}" \
|
echo -e "${op}[$(stamp)] Found ${lit}${borgExclude}${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
else
|
else
|
||||||
# file not found, unset the variable so it's like it was not specified
|
# file not found, unset the variable so it's like it was not specified
|
||||||
# in the first place and continue with backup
|
# in the first place and continue with backup
|
||||||
unset borgExclude
|
unset borgExclude
|
||||||
exitWarn+=("${stamp}_2114")
|
exitWarn+=("[$(stamp)]_2114")
|
||||||
fi
|
fi
|
||||||
else
|
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"
|
"No exclusions will be processed${normal}" >> "$logFile"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -758,13 +758,13 @@ fi
|
|||||||
## the 'noexec' option for security. Thus, we will use/create a 'tmp' folder
|
## 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
|
## 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
|
# 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"
|
"${normal}" >> "$logFile"
|
||||||
checkExist fd "$BORG_BASE_DIR/tmp"
|
checkExist fd "$BORG_BASE_DIR/tmp"
|
||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "1" ]; then
|
if [ "$checkResult" = "1" ]; then
|
||||||
# folder not found
|
# 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"
|
"${BORG_BASE_DIR}/tmp${normal}" >> "$logFile"
|
||||||
mkdir "$BORG_BASE_DIR/tmp" 2>> "$logFile"
|
mkdir "$BORG_BASE_DIR/tmp" 2>> "$logFile"
|
||||||
# verify folder created
|
# verify folder created
|
||||||
@ -772,17 +772,17 @@ if [ "$checkResult" = "1" ]; then
|
|||||||
checkResult="$?"
|
checkResult="$?"
|
||||||
if [ "$checkResult" = "0" ]; then
|
if [ "$checkResult" = "0" ]; then
|
||||||
# folder exists
|
# 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"
|
"${normal}" >> "$logFile"
|
||||||
else
|
else
|
||||||
# problem creating folder and script will exit
|
# problem creating folder and script will exit
|
||||||
exitError+=("${stamp}_215")
|
exitError+=("[$(stamp)]_215")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# folder found
|
# 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"
|
"${normal}" >> "$logFile"
|
||||||
fi
|
fi
|
||||||
# export TMPDIR environment variable
|
# export TMPDIR environment variable
|
||||||
@ -793,7 +793,7 @@ export TMPDIR="${BORG_BASE_DIR}/tmp"
|
|||||||
# commandline depends on whether borgExclude is empty or not
|
# commandline depends on whether borgExclude is empty or not
|
||||||
if [ -z "$borgExclude" ]; then
|
if [ -z "$borgExclude" ]; then
|
||||||
# borgExclude is empty
|
# borgExclude is empty
|
||||||
echo -e "${bold}${op}${stamp} Executing borg without exclusions${normal}" \
|
echo -e "${bold}${op}[$(stamp)] Executing borg without exclusions${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
borg --show-rc create ${borgCreateParams} ::`date +%Y-%m-%d_%H%M%S` \
|
borg --show-rc create ${borgCreateParams} ::`date +%Y-%m-%d_%H%M%S` \
|
||||||
${xtraFiles[@]} \
|
${xtraFiles[@]} \
|
||||||
@ -803,7 +803,7 @@ if [ -z "$borgExclude" ]; then
|
|||||||
2>> "$logFile"
|
2>> "$logFile"
|
||||||
else
|
else
|
||||||
# borgExclude is not empty
|
# borgExclude is not empty
|
||||||
echo -e "${bold}${op}${stamp} Executing borg with exclusions${normal}" \
|
echo -e "${bold}${op}[$(stamp)] Executing borg with exclusions${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
borg --show-rc create ${borgCreateParams} --exclude-from ${borgExclude} \
|
borg --show-rc create ${borgCreateParams} --exclude-from ${borgExclude} \
|
||||||
::`date +%Y-%m-%d_%H%M%S` \
|
::`date +%Y-%m-%d_%H%M%S` \
|
||||||
@ -817,54 +817,54 @@ fi
|
|||||||
## Check status of borg operation
|
## Check status of borg operation
|
||||||
borgResult="$?"
|
borgResult="$?"
|
||||||
if [ "$borgResult" -eq 0 ]; then
|
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"
|
"${normal}" >> "$logFile"
|
||||||
elif [ "$borgResult" -eq 1 ]; then
|
elif [ "$borgResult" -eq 1 ]; then
|
||||||
exitWarn+=("${stamp}_2200")
|
exitWarn+=("[$(stamp)]_2200")
|
||||||
elif [ "$borgResult" -ge 2 ]; then
|
elif [ "$borgResult" -ge 2 ]; then
|
||||||
exitError+=("${stamp}_220")
|
exitError+=("[$(stamp)]_220")
|
||||||
cleanup
|
cleanup
|
||||||
quit
|
quit
|
||||||
else
|
else
|
||||||
exitWarn+=("${stamp}_2201")
|
exitWarn+=("[$(stamp)]_2201")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## Generate and execute borg prune
|
## Generate and execute borg prune
|
||||||
# command depends on whether or not parameters have been defined
|
# command depends on whether or not parameters have been defined
|
||||||
if [ -n "$borgPrune" ]; then
|
if [ -n "$borgPrune" ]; then
|
||||||
# parameters defined
|
# parameters defined
|
||||||
echo -e "${bold}${op}${stamp} Executing borg prune operation${normal}" \
|
echo -e "${bold}${op}[$(stamp)] Executing borg prune operation${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
borg prune --show-rc -v ${borgPruneParams} ${borgPrune} \
|
borg prune --show-rc -v ${borgPruneParams} ${borgPrune} \
|
||||||
2>> "$logFile"
|
2>> "$logFile"
|
||||||
# check return-status
|
# check return-status
|
||||||
pruneResult="$?"
|
pruneResult="$?"
|
||||||
if [ "$pruneResult" -eq 0 ]; then
|
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"
|
"--${normal}" >> "$logFile"
|
||||||
elif [ "$pruneResult" -eq 1 ]; then
|
elif [ "$pruneResult" -eq 1 ]; then
|
||||||
exitWarn+=("${stamp}_2210")
|
exitWarn+=("[$(stamp)]_2210")
|
||||||
elif [ "$pruneResult" -ge 2 ]; then
|
elif [ "$pruneResult" -ge 2 ]; then
|
||||||
exitError+=("${stamp}_221")
|
exitError+=("[$(stamp)]_221")
|
||||||
else
|
else
|
||||||
exitWarn+=("${stamp}_2212")
|
exitWarn+=("[$(stamp)]_2212")
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# parameters not defined... skip pruning
|
# parameters not defined... skip pruning
|
||||||
exitWarn+=("${stamp}_2115")
|
exitWarn+=("[$(stamp)]_2115")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
### borgbackup completed
|
### borgbackup completed
|
||||||
echo -e "${op}${stamp} Borgbackup completed... begin cleanup" \
|
echo -e "${op}[$(stamp)] Borgbackup completed... begin cleanup" \
|
||||||
"${normal}" >> "$logFile"
|
"${normal}" >> "$logFile"
|
||||||
|
|
||||||
|
|
||||||
### Exit script
|
### Exit script
|
||||||
echo -e "${bold}${op}${stamp} ***Normal exit process***${normal}" \
|
echo -e "${bold}${op}[$(stamp)] ***Normal exit process***${normal}" \
|
||||||
>> "$logFile"
|
>> "$logFile"
|
||||||
cleanup
|
cleanup
|
||||||
echo -e "${bold}${ok}${stamp} -- [SUCCESS] All processes completed" \
|
echo -e "${bold}${ok}[$(stamp)] -- [SUCCESS] All processes completed" \
|
||||||
"successfully --${normal}" >> "$logFile"
|
"successfully --${normal}" >> "$logFile"
|
||||||
quit
|
quit
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user