Update mssql-backup.sh
Corretto stato mail esito backup, aggiunta possibilità di fare il backup di tutti i Databases presenti nel server se non viene specificato un Database come opzione.
This commit is contained in:
parent
48b1b0644f
commit
b77a0bbcbe
358
mssql-backup.sh
358
mssql-backup.sh
@ -2,174 +2,274 @@
|
|||||||
# Script per il backup di database MS SQL Server
|
# Script per il backup di database MS SQL Server
|
||||||
# Autore: Lorenzo Paciotti & Mattia Tadini
|
# Autore: Lorenzo Paciotti & Mattia Tadini
|
||||||
# Nome del file: mssql-backup.sh
|
# Nome del file: mssql-backup.sh
|
||||||
# Revisione: 1.10
|
# Revisione: 1.12
|
||||||
|
|
||||||
# Configuration
|
# Load configuration from external file
|
||||||
BACKUP_DIR="/zucchetti/backupdb/bkfiles"
|
CONFIG_FILE="/zucchetti/backupdb/config.env"
|
||||||
SQLCMD="/opt/mssql-tools18/bin/sqlcmd"
|
if [ -f "$CONFIG_FILE" ]; then
|
||||||
USER="sa"
|
source "$CONFIG_FILE"
|
||||||
PASSWORD="DBP0l01nf0.."
|
else
|
||||||
HOST="localhost"
|
echo "Configuration file not found: $CONFIG_FILE"
|
||||||
RETENTION=1 # Retention per i backup locali
|
|
||||||
REMOTE_RETENTION=2 # Retention per i backup remoti
|
|
||||||
DATE=$(LC_TIME=C date +%Y%m%d%H%M%S) # Forza il formato della data
|
|
||||||
SERVER_NAME="DBSQL01" # Identificativo del server fisico
|
|
||||||
LOG_FILE="/zucchetti/backupdb/backup_log_$DATE.txt"
|
|
||||||
ERROR_LOG_FILE="/zucchetti/backupdb/backup_err_$DATE.txt"
|
|
||||||
FTP_SERVER="terni.poloinformatico.it"
|
|
||||||
FTP_USER="backupmssqldb"
|
|
||||||
FTP_PASSWORD="!Li'D/i%2&*QkvK!"
|
|
||||||
REMOTE_DIR="/BackupDB"
|
|
||||||
SMTP_SERVER="smtp://relay.poloinformatico.it:587"
|
|
||||||
SMTP_USER="brass@relay.poloinformatico.it"
|
|
||||||
SMTP_PASS="DMKqP9vUYn8s"
|
|
||||||
|
|
||||||
# Check if a database name is provided as an argument
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
echo "Usage: $0 <database_name>"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DB_NAME=$1
|
# Default values for configuration (will be overridden by config.env if present)
|
||||||
LOCAL_DB_DIR="$BACKUP_DIR/$DB_NAME"
|
: ${BACKUP_DIR:="/zucchetti/backupdb/bkfiles"}
|
||||||
REMOTE_DB_DIR="$REMOTE_DIR/$DB_NAME"
|
: ${SQLCMD:="/opt/mssql-tools18/bin/sqlcmd"}
|
||||||
|
: ${HOST:="localhost"}
|
||||||
|
: ${RETENTION:=1} # Retention per i backup locali
|
||||||
|
: ${REMOTE_RETENTION:=2} # Retention per i backup remoti
|
||||||
|
: ${SERVER_NAME:="DBSQL01"} # Identificativo del server fisico
|
||||||
|
: ${LOG_FILE:="/zucchetti/backupdb/backup_log.txt"}
|
||||||
|
: ${ERROR_LOG_FILE:="/zucchetti/backupdb/backup_err.txt"}
|
||||||
|
: ${REMOTE_DIR:="/BackupDB"}
|
||||||
|
|
||||||
# Create local backup directory if it doesn't exist
|
# Required variables check
|
||||||
mkdir -p "$LOCAL_DB_DIR"
|
required_vars=(
|
||||||
chown mssql:mssql "$LOCAL_DB_DIR"
|
"USER" "PASSWORD" "FTP_SERVER" "FTP_USER" "FTP_PASSWORD"
|
||||||
|
"SMTP_SERVER" "SMTP_USER" "SMTP_PASS"
|
||||||
|
)
|
||||||
|
|
||||||
# Create remote directory on FTP server if it doesn't exist
|
for var in "${required_vars[@]}"; do
|
||||||
ftp -inv $FTP_SERVER <<EOF >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
if [ -z "${!var}" ]; then
|
||||||
|
echo "Error: Required variable $var is not set in config file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Set date format
|
||||||
|
DATE=$(LC_TIME=C date +%Y%m%d%H%M%S)
|
||||||
|
|
||||||
|
# Function to get all user databases
|
||||||
|
get_all_databases() {
|
||||||
|
$SQLCMD -S "$HOST" -U "$USER" -P "$PASSWORD" -h-1 \
|
||||||
|
-Q "SELECT name FROM sys.databases WHERE database_id > 4 AND state = 0 AND is_read_only = 0" \
|
||||||
|
-C -b | tr -d ' '
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to check FTP connection
|
||||||
|
check_ftp_connection() {
|
||||||
|
local temp_file=$(mktemp)
|
||||||
|
ftp -inv $FTP_SERVER > $temp_file 2>&1 <<EOF
|
||||||
|
user $FTP_USER $FTP_PASSWORD
|
||||||
|
quit
|
||||||
|
EOF
|
||||||
|
local connection_status=$?
|
||||||
|
if grep -q "Connection refused\|Can't connect" $temp_file; then
|
||||||
|
connection_status=1
|
||||||
|
fi
|
||||||
|
rm -f $temp_file
|
||||||
|
return $connection_status
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to perform FTP upload with retry mechanism
|
||||||
|
perform_ftp_upload() {
|
||||||
|
local source_file="$1"
|
||||||
|
local dest_file="$2"
|
||||||
|
local max_retries=3
|
||||||
|
local retry_count=0
|
||||||
|
local temp_file=$(mktemp)
|
||||||
|
|
||||||
|
while [ $retry_count -lt $max_retries ]; do
|
||||||
|
ftp -inv $FTP_SERVER > $temp_file 2>&1 <<EOF
|
||||||
user $FTP_USER $FTP_PASSWORD
|
user $FTP_USER $FTP_PASSWORD
|
||||||
cd $REMOTE_DB_DIR
|
cd $REMOTE_DB_DIR
|
||||||
if [ $? -ne 0 ]; then
|
put "$source_file" "$dest_file"
|
||||||
mkdir "$REMOTE_DB_DIR"
|
|
||||||
fi
|
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
local upload_status=$?
|
||||||
|
|
||||||
BACKUP_FILE="$LOCAL_DB_DIR/${DB_NAME}_backup_$DATE.bak"
|
if [ $upload_status -eq 0 ] && ! grep -q "Connection refused\|Can't connect\|failed\|error" $temp_file; then
|
||||||
REMOTE_BACKUP_FILE="${DB_NAME}_backup_$DATE.bak"
|
break
|
||||||
LOCAL_STATUS=0
|
fi
|
||||||
FTP_STATUS=0 # Indica lo stato dell'upload FTP (0: success, 1: failure)
|
|
||||||
|
retry_count=$((retry_count + 1))
|
||||||
|
echo "Upload attempt $retry_count failed, retrying in 5 seconds..." >> $LOG_FILE
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
cat $temp_file >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
||||||
|
rm -f $temp_file
|
||||||
|
return $upload_status
|
||||||
|
}
|
||||||
|
|
||||||
# Function to send email with msmtp
|
# Function to send email with msmtp
|
||||||
send_email() {
|
send_email() {
|
||||||
SUBJECT="Backup [${EMAIL_STATUS}] for $DB_NAME on $SERVER_NAME - $(LC_TIME=C date)"
|
local db_name="$1"
|
||||||
MESSAGE="Backup process completed. Check the details below:\n\n$(cat $LOG_FILE)"
|
local status_message=""
|
||||||
|
|
||||||
echo -e "Subject: $SUBJECT\nFrom: $SMTP_USER\nTo: $SMTP_USER\n\n$MESSAGE" | msmtp --debug --from="$SMTP_USER" -t
|
# Costruisci il messaggio di stato dettagliato
|
||||||
|
if [ $LOCAL_STATUS -eq 0 ]; then
|
||||||
|
status_message="Local backup: SUCCESS\n"
|
||||||
|
else
|
||||||
|
status_message="Local backup: FAILED\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $FTP_STATUS -eq 0 ]; then
|
||||||
|
status_message+="FTP upload: SUCCESS\n"
|
||||||
|
else
|
||||||
|
status_message+="FTP upload: FAILED\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
SUBJECT="Backup [${EMAIL_STATUS}] for $db_name on $SERVER_NAME - $(LC_TIME=C date)"
|
||||||
|
MESSAGE="Backup process completed with following status:\n\n${status_message}\nDetailed log:\n\n$(cat $LOG_FILE)"
|
||||||
|
|
||||||
|
if [ -f "$ERROR_LOG_FILE" ] && [ -s "$ERROR_LOG_FILE" ]; then
|
||||||
|
MESSAGE+="\n\nErrors encountered:\n\n$(cat $ERROR_LOG_FILE)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "Subject: $SUBJECT\nFrom: $SMTP_USER\nTo: $SMTP_USER\n\n$MESSAGE" | \
|
||||||
|
msmtp --debug --from="$SMTP_USER" -t
|
||||||
}
|
}
|
||||||
|
|
||||||
# Start time for the backup
|
# Function to perform backup for a single database
|
||||||
START_TIME=$(date +%s)
|
perform_backup() {
|
||||||
echo "$(LC_TIME=C date): Starting backup for database: $DB_NAME on server $SERVER_NAME" > $LOG_FILE
|
local db_name="$1"
|
||||||
|
local LOCAL_STATUS=1
|
||||||
|
local FTP_STATUS=1
|
||||||
|
local EMAIL_STATUS=""
|
||||||
|
|
||||||
# Perform database backup with CHECK option
|
echo "Starting backup process for database: $db_name"
|
||||||
$SQLCMD -S $HOST -U $USER -P $PASSWORD -Q "BACKUP DATABASE [$DB_NAME] TO DISK = N'$BACKUP_FILE' WITH CHECKSUM, COMPRESSION, INIT" -C >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
|
||||||
|
|
||||||
# Check if the local backup was successful
|
LOCAL_DB_DIR="$BACKUP_DIR/$db_name"
|
||||||
if [ $? -eq 0 ]; then
|
REMOTE_DB_DIR="$REMOTE_DIR/$db_name"
|
||||||
LOCAL_STATUS=0
|
BACKUP_FILE="$LOCAL_DB_DIR/${db_name}_backup_$DATE.bak"
|
||||||
echo "$(LC_TIME=C date): Local backup completed successfully for $DB_NAME." >> $LOG_FILE
|
REMOTE_BACKUP_FILE="${db_name}_backup_$DATE.bak"
|
||||||
else
|
|
||||||
LOCAL_STATUS=1
|
|
||||||
echo "$(LC_TIME=C date): Error during local backup of $DB_NAME. Check error log." >> $LOG_FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# End time and duration
|
# Create local backup directory if it doesn't exist
|
||||||
END_TIME=$(date +%s)
|
mkdir -p "$LOCAL_DB_DIR"
|
||||||
DURATION=$((END_TIME - START_TIME))
|
chown mssql:mssql "$LOCAL_DB_DIR"
|
||||||
echo "$(LC_TIME=C date): Backup ended for $DB_NAME." >> $LOG_FILE
|
|
||||||
echo "Start time: $(LC_TIME=C date -d @$START_TIME)" >> $LOG_FILE
|
|
||||||
echo "End time: $(LC_TIME=C date -d @$END_TIME)" >> $LOG_FILE
|
|
||||||
echo "Duration: $((DURATION / 60)) minutes and $((DURATION % 60)) seconds" >> $LOG_FILE
|
|
||||||
|
|
||||||
# Upload backup to remote FTP server
|
# Create remote directory on FTP server if it doesn't exist
|
||||||
echo "$(LC_TIME=C date): Starting FTP upload for $DB_NAME." >> $LOG_FILE
|
if check_ftp_connection; then
|
||||||
ftp -inv $FTP_SERVER >> $LOG_FILE 2>> $ERROR_LOG_FILE <<EOF
|
ftp -inv $FTP_SERVER <<EOF >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
||||||
user $FTP_USER $FTP_PASSWORD
|
user $FTP_USER $FTP_PASSWORD
|
||||||
cd $REMOTE_DB_DIR
|
mkdir "$REMOTE_DB_DIR"
|
||||||
put $BACKUP_FILE $REMOTE_BACKUP_FILE
|
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
# Check FTP status
|
# Start time for the backup
|
||||||
if [ $? -eq 0 ]; then
|
START_TIME=$(date +%s)
|
||||||
FTP_STATUS=0
|
echo "$(LC_TIME=C date): Starting backup for database: $db_name on server $SERVER_NAME" > $LOG_FILE
|
||||||
echo "$(LC_TIME=C date): FTP upload completed successfully for $DB_NAME." >> $LOG_FILE
|
|
||||||
else
|
|
||||||
FTP_STATUS=1
|
|
||||||
echo "$(LC_TIME=C date): Error during FTP upload for $DB_NAME. Check error log." >> $LOG_FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Local retention policy
|
# Perform database backup with CHECK option (fixed SQLCMD syntax)
|
||||||
ls -1tr $LOCAL_DB_DIR/${DB_NAME}_backup_*.bak | head -n -$RETENTION | xargs -d '\n' rm -f >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
$SQLCMD -S "$HOST" -U "$USER" -P "$PASSWORD" \
|
||||||
|
-Q "BACKUP DATABASE [$db_name] TO DISK = N'$BACKUP_FILE' WITH CHECKSUM, COMPRESSION, INIT" \
|
||||||
|
-C -b >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
||||||
|
|
||||||
# Remote retention policy
|
# Check if the local backup was successful
|
||||||
echo "$(LC_TIME=C date): Performing remote retention check." >> $LOG_FILE
|
if [ $? -eq 0 ] && [ -f "$BACKUP_FILE" ]; then
|
||||||
|
LOCAL_STATUS=0
|
||||||
|
echo "$(LC_TIME=C date): Local backup completed successfully for $db_name." >> $LOG_FILE
|
||||||
|
else
|
||||||
|
LOCAL_STATUS=1
|
||||||
|
echo "$(LC_TIME=C date): Error during local backup of $db_name. Check error log." >> $LOG_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
# Otteniamo la lista dei file remoti (escludiamo informazioni non rilevanti come dati FTP)
|
# End time and duration
|
||||||
ftp -inv $FTP_SERVER <<EOF > /tmp/ftp_file_list.txt 2>> $ERROR_LOG_FILE
|
END_TIME=$(date +%s)
|
||||||
|
DURATION=$((END_TIME - START_TIME))
|
||||||
|
echo "$(LC_TIME=C date): Backup ended for $db_name." >> $LOG_FILE
|
||||||
|
echo "Start time: $(LC_TIME=C date -d @$START_TIME)" >> $LOG_FILE
|
||||||
|
echo "End time: $(LC_TIME=C date -d @$END_TIME)" >> $LOG_FILE
|
||||||
|
echo "Duration: $((DURATION / 60)) minutes and $((DURATION % 60)) seconds" >> $LOG_FILE
|
||||||
|
|
||||||
|
# Upload backup to remote FTP server only if local backup was successful
|
||||||
|
if [ $LOCAL_STATUS -eq 0 ]; then
|
||||||
|
echo "$(LC_TIME=C date): Starting FTP upload for $db_name." >> $LOG_FILE
|
||||||
|
|
||||||
|
if ! check_ftp_connection; then
|
||||||
|
FTP_STATUS=1
|
||||||
|
echo "$(LC_TIME=C date): Cannot establish FTP connection. Upload failed." >> $LOG_FILE
|
||||||
|
echo "FTP connection failed - Cannot connect to server" >> $ERROR_LOG_FILE
|
||||||
|
else
|
||||||
|
if perform_ftp_upload "$BACKUP_FILE" "$REMOTE_BACKUP_FILE"; then
|
||||||
|
FTP_STATUS=0
|
||||||
|
echo "$(LC_TIME=C date): FTP upload completed successfully for $db_name." >> $LOG_FILE
|
||||||
|
else
|
||||||
|
FTP_STATUS=1
|
||||||
|
echo "$(LC_TIME=C date): Error during FTP upload for $db_name. Check error log." >> $LOG_FILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$(LC_TIME=C date): Skipping FTP upload due to local backup failure." >> $LOG_FILE
|
||||||
|
FTP_STATUS=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Local retention policy
|
||||||
|
if [ $LOCAL_STATUS -eq 0 ]; then
|
||||||
|
find "$LOCAL_DB_DIR" -name "${db_name}_backup_*.bak" -type f -mtime +$RETENTION -delete >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Remote retention policy
|
||||||
|
if [ $FTP_STATUS -eq 0 ]; then
|
||||||
|
echo "$(LC_TIME=C date): Performing remote retention check." >> $LOG_FILE
|
||||||
|
|
||||||
|
temp_list_file=$(mktemp)
|
||||||
|
ftp -inv $FTP_SERVER > $temp_list_file 2>> $ERROR_LOG_FILE <<EOF
|
||||||
user $FTP_USER $FTP_PASSWORD
|
user $FTP_USER $FTP_PASSWORD
|
||||||
cd $REMOTE_DB_DIR
|
cd $REMOTE_DB_DIR
|
||||||
ls
|
ls
|
||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Filtriamo la lista per estrarre solo i nomi dei file (ignoriamo righe di tipo 'drwxr-xr-x', 'total', etc.)
|
grep -E -o '\S+_backup_[0-9]{14}\.bak' $temp_list_file | while read -r file; do
|
||||||
grep -E -o '\S+_backup_[0-9]{14}\.bak' /tmp/ftp_file_list.txt | while read -r file; do
|
if [[ "$file" =~ ^$db_name ]]; then
|
||||||
# Verifica se il nome del file contiene il nome del database
|
file_date=$(echo "$file" | sed -n 's/.*_backup_\([0-9]\{14\}\)\.bak/\1/p')
|
||||||
if [[ "$file" =~ ^$DB_NAME ]]; then
|
|
||||||
# Estrai la data dal nome del file (formato DBNAME_backup_DATE.bak)
|
|
||||||
file_date=$(echo "$file" | sed -n 's/.*_backup_\([0-9]\{14\}\)\.bak/\1/p')
|
|
||||||
|
|
||||||
# Verifica che la data sia stata estratta correttamente
|
if [ -n "$file_date" ]; then
|
||||||
if [ -n "$file_date" ]; then
|
echo "$(LC_TIME=C date): Data estratta dal file remoto $file: $file_date" >> $LOG_FILE
|
||||||
# Aggiungi un messaggio di debug per verificare la data estratta
|
retention_date=$(LC_TIME=C date -d "-$REMOTE_RETENTION days" +%Y%m%d%H%M%S)
|
||||||
echo "$(LC_TIME=C date): Data estratta dal file remoto $file: $file_date" >> $LOG_FILE
|
|
||||||
|
|
||||||
# Confrontiamo direttamente la data come numeri (formato YYYYMMDDHHMMSS)
|
if [ "$file_date" -lt "$retention_date" ]; then
|
||||||
retention_date=$(LC_TIME=C date -d "-$REMOTE_RETENTION days" +%Y%m%d%H%M%S)
|
ftp -inv $FTP_SERVER <<EOF >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
||||||
|
user $FTP_USER $FTP_PASSWORD
|
||||||
# Verifica se la data estratta è più vecchia della retention
|
cd $REMOTE_DB_DIR
|
||||||
if [ "$file_date" -lt "$retention_date" ]; then
|
delete "$file"
|
||||||
# Elimina il file remoto se è troppo vecchio
|
bye
|
||||||
ftp -inv $FTP_SERVER <<EOF >> $LOG_FILE 2>> $ERROR_LOG_FILE
|
|
||||||
user $FTP_USER $FTP_PASSWORD
|
|
||||||
cd $REMOTE_DB_DIR
|
|
||||||
delete "$file"
|
|
||||||
bye
|
|
||||||
EOF
|
EOF
|
||||||
echo "$(LC_TIME=C date): File remoto $file eliminato perché più vecchio di $REMOTE_RETENTION giorni." >> $LOG_FILE
|
echo "$(LC_TIME=C date): File remoto $file eliminato perché più vecchio di $REMOTE_RETENTION giorni." >> $LOG_FILE
|
||||||
|
fi
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
done
|
||||||
echo "$(LC_TIME=C date): Data non estratta correttamente dal nome del file remoto $file. Skipping file." >> $LOG_FILE
|
rm -f $temp_list_file
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "$(LC_TIME=C date): Il file remoto $file non appartiene al database $DB_NAME. Skipping file." >> $LOG_FILE
|
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
|
|
||||||
# Determine email status
|
# Determine email status
|
||||||
if [ $LOCAL_STATUS -eq 0 ] && [ $FTP_STATUS -eq 0 ]; then
|
if [ $LOCAL_STATUS -eq 0 ] && [ $FTP_STATUS -eq 0 ]; then
|
||||||
EMAIL_STATUS="SUCCESS"
|
EMAIL_STATUS="SUCCESS"
|
||||||
|
elif [ $LOCAL_STATUS -eq 1 ] && [ $FTP_STATUS -eq 1 ]; then
|
||||||
|
EMAIL_STATUS="FAILED"
|
||||||
|
else
|
||||||
|
EMAIL_STATUS="WARNING"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Send email with log
|
||||||
|
send_email "$db_name"
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
rm -f $LOG_FILE
|
||||||
|
[ -f "$ERROR_LOG_FILE" ] && [ ! -s "$ERROR_LOG_FILE" ] && rm -f "$ERROR_LOG_FILE"
|
||||||
|
|
||||||
|
echo "Backup process complete for $db_name with status: $EMAIL_STATUS (Local: $LOCAL_STATUS, FTP: $FTP_STATUS)"
|
||||||
|
return $(( LOCAL_STATUS | FTP_STATUS ))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main script logic
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "No database specified, backing up all databases..."
|
||||||
|
OVERALL_STATUS=0
|
||||||
|
|
||||||
|
for db in $(get_all_databases); do
|
||||||
|
perform_backup "$db"
|
||||||
|
BACKUP_STATUS=$?
|
||||||
|
[ $BACKUP_STATUS -ne 0 ] && OVERALL_STATUS=1
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $OVERALL_STATUS
|
||||||
else
|
else
|
||||||
EMAIL_STATUS="FAILED"
|
perform_backup "$1"
|
||||||
|
exit $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Send the email with the log
|
|
||||||
send_email
|
|
||||||
|
|
||||||
# Remove the log file after sending the email
|
|
||||||
rm -f $LOG_FILE
|
|
||||||
|
|
||||||
echo "Backup process complete, local status: $LOCAL_STATUS, FTP status: $FTP_STATUS, and email sent."
|
|
||||||
|
|
||||||
# Send the email with the log
|
|
||||||
send_email
|
|
||||||
|
|
||||||
# Remove the log file after sending the email
|
|
||||||
rm -f $LOG_FILE
|
|
||||||
|
|
||||||
echo "Backup process complete, local status: $LOCAL_STATUS, FTP status: $FTP_STATUS, and email sent."
|
|
||||||
Loading…
Reference in New Issue
Block a user