Updated to version 1.7

Added email delivery of current execution log on success, failure, or interruption.
This commit is contained in:
ackitsme committed 2026-10-18 13:36:53 -07:00
1 parent 0e07c9ec97
commit baedfe9eea
1 file changed
+87 -12
+87 -12
View File
@@ -11,7 +11,7 @@
# AppBackup-restic.sh --appname <name> --appuser <user> [--apppassword <password>] # AppBackup-restic.sh --appname <name> --appuser <user> [--apppassword <password>]
# #
# Author: Charlie Silverman # Author: Charlie Silverman
# Version: 1.6 # Version: 1.7
# #
# Revision History: # Revision History:
# 1.0 - Initial version. # 1.0 - Initial version.
@@ -23,6 +23,8 @@
# 1.5 - Added command-line help. # 1.5 - Added command-line help.
# 1.6 - Replaced positional parameters with named command-line options # 1.6 - Replaced positional parameters with named command-line options
# and added support for short/long option formats. # and added support for short/long option formats.
# 1.7 - Added email delivery of current execution log on success,
# failure, or interruption.
# #
set -o errexit set -o errexit
@@ -37,7 +39,7 @@ show_help() {
cat << EOF cat << EOF
AppBackup-restic.sh v1.6 AppBackup-restic.sh v1.7
DESCRIPTION DESCRIPTION
Creates a backup of a web application's files and optionally its Creates a backup of a web application's files and optionally its
@@ -46,7 +48,8 @@ DESCRIPTION
USAGE USAGE
AppBackup-restic.sh --appname <name> --appuser <user> [--apppassword <password>] AppBackup-restic.sh --appname <name> --appuser <user>
[--apppassword <password>]
OPTIONS OPTIONS
@@ -76,9 +79,22 @@ EXAMPLES
-a CustomerPortal \ -a CustomerPortal \
-u portaluser -u portaluser
LOG FILE LOG FILES
/tmp/AppBackup-<ApplicationName>.log Historical Log:
/tmp/AppBackup-<ApplicationName>.log
Current Run Log:
/tmp/AppBackup-<ApplicationName>-YYYYMMDD_HHMMSS.log
EMAIL NOTIFICATIONS
Current execution logs are emailed to:
ackitsme3@gmail.com
Success, failure, and interruption events each generate
a separate email.
AUTHOR AUTHOR
@@ -86,7 +102,7 @@ AUTHOR
VERSION VERSION
1.6 1.7
EOF EOF
@@ -171,13 +187,44 @@ HOSTNAME_FQDN="$(hostname -f)"
SAFE_APPNAME=$(echo "$AppName" | tr -cs '[:alnum:]_-' '_') SAFE_APPNAME=$(echo "$AppName" | tr -cs '[:alnum:]_-' '_')
LOGFILE="/tmp/AppBackup-${SAFE_APPNAME}.log" LOGFILE="/tmp/AppBackup-${SAFE_APPNAME}.log"
RUNLOG="/tmp/AppBackup-${SAFE_APPNAME}-${DATE}.log"
touch "$RUNLOG"
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Logging Function # Logging Function
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
log() { log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') [$$] $1" | tee -a "$LOGFILE"
local msg
msg="$(date '+%Y-%m-%d %H:%M:%S') [$$] $1"
echo "$msg" | tee -a "$RUNLOG"
}
#------------------------------------------------------------------------------
# Email Function
#------------------------------------------------------------------------------
send_email_log() {
local subject="$1"
if command -v mailx >/dev/null 2>&1; then
mailx -s "$subject" ackitsme3@gmail.com < "$RUNLOG"
elif command -v mail >/dev/null 2>&1; then
mail -s "$subject" ackitsme3@gmail.com < "$RUNLOG"
else
log "WARNING: mailx/mail command not found. Email not sent."
fi
} }
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@@ -191,6 +238,9 @@ error_handler() {
log "ERROR: Backup failed on line ${line_number} with exit code ${exit_code}" log "ERROR: Backup failed on line ${line_number} with exit code ${exit_code}"
send_email_log \
"FAILED: AppBackup ${AppName} (${HOSTNAME_FQDN})"
exit "${exit_code}" exit "${exit_code}"
} }
@@ -198,6 +248,9 @@ interrupt_handler() {
log "ERROR: Backup interrupted by signal" log "ERROR: Backup interrupted by signal"
send_email_log \
"INTERRUPTED: AppBackup ${AppName} (${HOSTNAME_FQDN})"
exit 1 exit 1
} }
@@ -213,7 +266,8 @@ log "Starting backup job"
log "Application: $AppName" log "Application: $AppName"
log "Application User: $AppUser" log "Application User: $AppUser"
log "Host: $HOSTNAME_FQDN" log "Host: $HOSTNAME_FQDN"
log "Log File: $LOGFILE" log "Historical Log: $LOGFILE"
log "Run Log: $RUNLOG"
log "=================================================================" log "================================================================="
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
@@ -277,8 +331,8 @@ fi
log "Removing previous backup archives" log "Removing previous backup archives"
rm -f /home/Backups/"${AppName}"*.tar.bz* rm -f /home/Backups/"${AppName}"*.tar.bz* 2>/dev/null || true
rm -f /home/Backups/"${HostPrefix}${AppName}"*.tar.bz* rm -f /home/Backups/"${HostPrefix}${AppName}"*.tar.bz* 2>/dev/null || true
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
# Create Archive # Create Archive
@@ -323,7 +377,7 @@ else
--tag website \ --tag website \
--tag "$AppName" \ --tag "$AppName" \
--tag "$HOSTNAME_FQDN" \ --tag "$HOSTNAME_FQDN" \
>> "$LOGFILE" 2>&1 >> "$RUNLOG" 2>&1
log "Restic backup completed successfully" log "Restic backup completed successfully"
@@ -349,4 +403,25 @@ log "Backup completed successfully"
log "Application: $AppName" log "Application: $AppName"
log "Archive: ${HostPrefix}${ArchiveFile}" log "Archive: ${HostPrefix}${ArchiveFile}"
log "Host: $HOSTNAME_FQDN" log "Host: $HOSTNAME_FQDN"
log "=================================================================" log "================================================================="
#------------------------------------------------------------------------------
# Append Current Run Log To Historical Log
#------------------------------------------------------------------------------
cat "$RUNLOG" >> "$LOGFILE"
#------------------------------------------------------------------------------
# Email Current Run Log
#------------------------------------------------------------------------------
send_email_log \
"SUCCESS: AppBackup ${AppName} (${HOSTNAME_FQDN})"
#------------------------------------------------------------------------------
# Cleanup Run Log
#------------------------------------------------------------------------------
rm -f "$RUNLOG"
exit 0