Updated to version 1.7
Added email delivery of current execution log on success, failure, or interruption.
This commit is contained in:
1 parent
0e07c9ec97
commit
baedfe9eea
1 file changed
+87
-12
+87
-12
@@ -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
|
||||||
Reference in new issue
Block a user