Added error handling
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
#Check for Backup-Util config file
|
#Check for Backup-Util config file
|
||||||
ScriptLocation="`dirname \"$0\"`"
|
ScriptLocation="`dirname \"$0\"`"
|
||||||
if [ ! -f "$ScriptLocation/Backup-Util.conf" ]; then
|
if [ ! -f "$ScriptLocation/Backup-Util.conf" ]; then
|
||||||
@@ -7,6 +8,36 @@ if [ ! -f "$ScriptLocation/Backup-Util.conf" ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Use this function to check the exit code and set the first argment is used to set the error message
|
||||||
|
Errored=false
|
||||||
|
ErrorCMD=False
|
||||||
|
function ErrorCheck (){
|
||||||
|
#Check if command exited correctly, else repport the error
|
||||||
|
ExitCode=$?
|
||||||
|
if [ $ExitCode -eq 0 ] ; then
|
||||||
|
unset ExitCode
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
ErrorMSG=$1
|
||||||
|
#Store Error log
|
||||||
|
ErrorLog="$ErrorLog $ErrorMSG (ExitCode $ExitCode)\n"
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
SendErrorMSG
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
export Errored=True
|
||||||
|
unset ExitCode ErrorMSG
|
||||||
|
}
|
||||||
|
|
||||||
|
function SendErrorMSG (){
|
||||||
|
#Print error log
|
||||||
|
printf "Error:\n$ErrorLog"
|
||||||
|
#Check if Custom error command is setup, if so execute it
|
||||||
|
if [ "$ErrorCMD" != False ] ; then
|
||||||
|
$ErrorCMD "$ErrorLog"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function SiteBackup () {
|
function SiteBackup () {
|
||||||
|
|
||||||
WPUPDATE=0
|
WPUPDATE=0
|
||||||
@@ -96,9 +127,11 @@ if [ "$AI1" = "1" ]; then
|
|||||||
sudo -u "$SITENAME" wp --path="$SITEDIR" ai1wm backup
|
sudo -u "$SITENAME" wp --path="$SITEDIR" ai1wm backup
|
||||||
if [ $SITEBACKENC -eq 1 ] ; then
|
if [ $SITEBACKENC -eq 1 ] ; then
|
||||||
find "$SITEDIR"/wp-content/ai1wm-backups/ -name "*.wpress" -printf "%P\n"| tar -czf - --no-recursion -C "$SITEDIR"/wp-content/ai1wm-backups/ -T - | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-ai1wm.tar.gz #Create ai1wm tar File
|
find "$SITEDIR"/wp-content/ai1wm-backups/ -name "*.wpress" -printf "%P\n"| tar -czf - --no-recursion -C "$SITEDIR"/wp-content/ai1wm-backups/ -T - | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-ai1wm.tar.gz #Create ai1wm tar File
|
||||||
|
ErrorCheck "WP-ENC-Backup $SITENAME"
|
||||||
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-ai1wm.key.enc
|
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-ai1wm.key.enc
|
||||||
else
|
else
|
||||||
find "$SITEDIR"/wp-content/ai1wm-backups/ -name "*.wpress" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-ai1wm.tar.gz --no-recursion -C "$SITEDIR"/wp-content/ai1wm-backups/ -T - #Create ai1wm tar File
|
find "$SITEDIR"/wp-content/ai1wm-backups/ -name "*.wpress" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-ai1wm.tar.gz --no-recursion -C "$SITEDIR"/wp-content/ai1wm-backups/ -T - #Create ai1wm tar File
|
||||||
|
ErrorCheck "WP-Backup"
|
||||||
fi
|
fi
|
||||||
rm -f "$SITEDIR"/wp-content/ai1wm-backups/*.wpress
|
rm -f "$SITEDIR"/wp-content/ai1wm-backups/*.wpress
|
||||||
fi
|
fi
|
||||||
@@ -108,23 +141,28 @@ if [ "$NODB" != "1" ]; then
|
|||||||
for i in "${DBARRY[@]}"
|
for i in "${DBARRY[@]}"
|
||||||
do
|
do
|
||||||
mysqldump -u "$DBUSER" "$i" --password="$DBPASS" --default-character-set=utf8 > "$TMPDIR"/"$SITENAME"-"$i".sql
|
mysqldump -u "$DBUSER" "$i" --password="$DBPASS" --default-character-set=utf8 > "$TMPDIR"/"$SITENAME"-"$i".sql
|
||||||
|
ErrorCheck "Mysql-Backup $SITENAME-$i"
|
||||||
done
|
done
|
||||||
if [ $SITEBACKENC -eq 1 ] ; then
|
if [ $SITEBACKENC -eq 1 ] ; then
|
||||||
find "$TMPDIR" -name "*.sql" -printf "%P\n"| tar -czf - --no-recursion -C "$TMPDIR" -T - | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-DB.tar.gz #Create tar File
|
find "$TMPDIR" -name "*.sql" -printf "%P\n"| tar -czf - --no-recursion -C "$TMPDIR" -T - | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-DB.tar.gz #Create tar File
|
||||||
|
ErrorCheck "Mysql-Backup-ENC $SITENAME-$i"
|
||||||
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-DB.key.enc
|
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-DB.key.enc
|
||||||
else
|
else
|
||||||
find "$TMPDIR" -name "*.sql" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-DB.tar.gz --no-recursion -C "$TMPDIR" -T - #Create tar File
|
find "$TMPDIR" -name "*.sql" -printf "%P\n"| tar -czf /"$SITESENDDIR"/"$SITENAME"-DB.tar.gz --no-recursion -C "$TMPDIR" -T - #Create tar File
|
||||||
fi
|
ErrorCheck "Mysql-Backup-Pack $SITENAME-$i"
|
||||||
|
fi
|
||||||
rm -f /"$TMPDIR"/*.sql
|
rm -f /"$TMPDIR"/*.sql
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Taronmogelijking SiteFiles files
|
#Tar SiteFiles files
|
||||||
if [ "$SNOTAR" != "1" ]; then
|
if [ "$SNOTAR" != "1" ]; then
|
||||||
if [ $SITEBACKENC -eq 1 ] ; then
|
if [ $SITEBACKENC -eq 1 ] ; then
|
||||||
tar -zcf - $SITEDIR $SITEEF | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-Files.tar.gz #Create tar File
|
tar -zcf - $SITEDIR $SITEEF | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SITESENDDIR"/"$SITENAME"-Files.tar.gz #Create tar File
|
||||||
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-Files.key.enc
|
ErrorCheck "SiteTar-Backup-ENC $SITENAME"
|
||||||
|
cp "$ScriptLocation"/key.bin.enc /"$SITESENDDIR"/"$SITENAME"-Files.key.enc
|
||||||
else
|
else
|
||||||
tar $tarextracmd -zcf /"$SITESENDDIR"/"$SITENAME"-Files.tar.gz $SITEDIR $SITEEF
|
tar $tarextracmd -zcf /"$SITESENDDIR"/"$SITENAME"-Files.tar.gz $SITEDIR $SITEEF
|
||||||
|
ErrorCheck "SiteTar-Backup $SITENAME"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -132,20 +170,25 @@ fi
|
|||||||
if [ $WPUPDATE = 1 ]; then
|
if [ $WPUPDATE = 1 ]; then
|
||||||
wp cli update
|
wp cli update
|
||||||
sudo -u "$SITENAME" wp --path="$SITEDIR" core update
|
sudo -u "$SITENAME" wp --path="$SITEDIR" core update
|
||||||
|
ErrorCheck "WP-Update_Core $SITENAME"
|
||||||
sudo -u "$SITENAME" wp --path="$SITEDIR" plugin update --all
|
sudo -u "$SITENAME" wp --path="$SITEDIR" plugin update --all
|
||||||
|
ErrorCheck "WP-Update_Plugin $SITENAME"
|
||||||
sudo -u "$SITENAME" wp --path="$SITEDIR" theme update --all
|
sudo -u "$SITENAME" wp --path="$SITEDIR" theme update --all
|
||||||
|
ErrorCheck "WP-Update_Theme $SITENAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$SRSYNC" = "1" ]; then
|
if [ "$SRSYNC" = "1" ]; then
|
||||||
rsync -e "ssh -p$RSPORT" -a ${SITEDIR} "$REMOTEUSER"@"$REMOTESERVER":"$REMOTEPATH/$SITENAME-Rsync"
|
rsync -e "ssh -o PasswordAuthentication=no -p$RSPORT" -a ${SITEDIR} "$REMOTEUSER"@"$REMOTESERVER":"$REMOTEPATH/$SITENAME-Rsync"
|
||||||
|
ErrorCheck "Rsync $SITENAME"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $DOM == $DOMC ] && [ "$SRSYNCDEL" = "1" ]; then
|
if [ $DOM == $DOMC ] && [ "$SRSYNCDEL" = "1" ]; then
|
||||||
rsync -e "ssh -p$RSPORT" --delete -a ${SITEDIR} "$REMOTEUSER"@"$REMOTESERVER":"$REMOTEPATH/$SITENAME-Rsync"
|
rsync -e "ssh -o PasswordAuthentication=no -p$RSPORT" --delete -a ${SITEDIR} "$REMOTEUSER"@"$REMOTESERVER":"$REMOTEPATH/$SITENAME-Rsync"
|
||||||
|
ErrorCheck "Monthly-Rsync $SITENAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset DOMAIN SITENAME DBNAME SITEDIR SITEEF AI1 WPUPDATE NODB DBARRY SNOTAR SRSYNC SRSYNCDELL
|
unset DOMAIN SITENAME DBNAME SITEDIR SITEEF AI1 WPUPDATE NODB DBARRY SNOTAR SRSYNC SRSYNCDEL
|
||||||
}
|
}
|
||||||
|
|
||||||
#Setting static Vars and getting Configuration
|
#Setting static Vars and getting Configuration
|
||||||
@@ -157,22 +200,25 @@ TODAY=$(date "+%d-%m-%Y") #Today's date like DD-MM-YY
|
|||||||
RMDATE=$(date "+%d-%m-%Y" -d "$RMDAYS days ago") #TODAY minus X days - too old files
|
RMDATE=$(date "+%d-%m-%Y" -d "$RMDAYS days ago") #TODAY minus X days - too old files
|
||||||
DOM=`date '+%d'` #Day of the month
|
DOM=`date '+%d'` #Day of the month
|
||||||
source "$ScriptLocation/Backup-Util.conf"
|
source "$ScriptLocation/Backup-Util.conf"
|
||||||
|
ErrorCheck "Unable to load config" 1
|
||||||
|
|
||||||
echo "Making backup of System"
|
echo "Making backup of System"
|
||||||
#SYSTEM run
|
#SYSTEM run
|
||||||
if [ ! -f "$ScriptLocation/key.bin" ] && [ $SYSBACKENC -eq 1 ] ; then
|
if [ ! -f "$ScriptLocation/key.bin" ] && [ $SYSBACKENC -eq 1 ] ; then
|
||||||
echo "Encription key not found"
|
echo "Encription key not found"
|
||||||
exit
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#Taring SiteFiles files
|
#Taring SystemFiles
|
||||||
SYSSENDDIR="$SENDDIR/$TODAY/System/"
|
SYSSENDDIR="$SENDDIR/$TODAY/System/"
|
||||||
mkdir -p $SYSSENDDIR
|
mkdir -p $SYSSENDDIR
|
||||||
if [ $SYSBACKENC -eq 1 ] ; then
|
if [ $SYSBACKENC -eq 1 ] ; then
|
||||||
tar -zcf - $SYSTEMFILES | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SYSSENDDIR"/$(hostname -s)-Files.tar.gz
|
tar -zcf - $SYSTEMFILES | openssl enc -e -aes256 -pass file:"$ScriptLocation"/key.bin -out /"$SYSSENDDIR"/$(hostname -s)-Files.tar.gz
|
||||||
|
ErrorCheck "SystemFiles-ENC"
|
||||||
cp "$ScriptLocation"/key.bin.enc /"$SYSSENDDIR"/$(hostname -s)-Files.key.enc
|
cp "$ScriptLocation"/key.bin.enc /"$SYSSENDDIR"/$(hostname -s)-Files.key.enc
|
||||||
else
|
else
|
||||||
tar -zcf /"$SYSSENDDIR"/$(hostname -s)-Files.tar.gz $SYSTEMFILES
|
tar -zcf /"$SYSSENDDIR"/$(hostname -s)-Files.tar.gz $SYSTEMFILES
|
||||||
|
ErrorCheck "SystemFiles"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -180,18 +226,20 @@ echo "Sending files to remote server"
|
|||||||
if [ $BACKUPSERVICE = ftp ]; then
|
if [ $BACKUPSERVICE = ftp ]; then
|
||||||
#Uploading and remove first backup on FTP
|
#Uploading and remove first backup on FTP
|
||||||
lftp -c "open -u ${REMOTEUSER},${FTPPW} ftp://${REMOTESERVER}:${REMOTEPORT}; mirror -p -O ${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf ${REMOTEPATH}/${RMDATE}"
|
lftp -c "open -u ${REMOTEUSER},${FTPPW} ftp://${REMOTESERVER}:${REMOTEPORT}; mirror -p -O ${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf ${REMOTEPATH}/${RMDATE}"
|
||||||
|
ErrorCheck "FTP-Upload"
|
||||||
#Checking and running monthly backup to FTP
|
#Checking and running monthly backup to FTP
|
||||||
if [ $DOM == $DOMC ]; then
|
if [ $DOM == $DOMC ]; then
|
||||||
lftp -c "open -u ${REMOTEUSER},${FTPPW} ftp://${REMOTESERVER}:${REMOTEPORT}; rm -rf ${REMOTEPATH}/Monthly/; mkdir -p ${REMOTEPATH}/Monthly/; mirror -p -O /${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
lftp -c "open -u ${REMOTEUSER},${FTPPW} ftp://${REMOTESERVER}:${REMOTEPORT}; rm -rf ${REMOTEPATH}/Monthly/; mkdir -p ${REMOTEPATH}/Monthly; mirror -p -O /${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
||||||
|
ErrorCheck "Monthly FTP-Upload"
|
||||||
fi
|
fi
|
||||||
elif [ $BACKUPSERVICE = sftp ]; then
|
elif [ $BACKUPSERVICE = sftp ]; then
|
||||||
#Uploading and remove first backup on SFTP
|
#Uploading and remove first backup on SFTP
|
||||||
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}:${REMOTEPORT}; mirror -p -O ${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf ${REMOTEPATH}/${RMDATE}"
|
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}:${REMOTEPORT}; mirror -p -O ${REMOTEPATH} -R -F ${SENDDIR}/*; rm -rf ${REMOTEPATH}/${RMDATE}"
|
||||||
|
ErrorCheck "SFTP-Upload"
|
||||||
#Checking and running monthly backup to SFTP
|
#Checking and running monthly backup to SFTP
|
||||||
if [ $DOM == $DOMC ]; then
|
if [ $DOM == $DOMC ]; then
|
||||||
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}:${REMOTEPORT}; rm -rf ${REMOTEPATH}/Monthly/; mkdir -p ${REMOTEPATH}/Monthly/; mirror -p -O ${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
lftp -c "open -u ${REMOTEUSER}, sftp://${REMOTESERVER}:${REMOTEPORT}; rm -rf ${REMOTEPATH}/Monthly/; mkdir -p ${REMOTEPATH}/Monthly; mirror -p -O ${REMOTEPATH}/Monthly/ -R -F ${SENDDIR}/${TODAY}/*"
|
||||||
|
ErrorCheck "Monthly SFTP-Upload"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -204,3 +252,9 @@ rm -r "$SENDDIR" && rm -r "$TMPDIR"
|
|||||||
if test -f "$ScriptLocation/Post-backup-hook.sh"; then
|
if test -f "$ScriptLocation/Post-backup-hook.sh"; then
|
||||||
source "$ScriptLocation/Post-backup-hook.sh"
|
source "$ScriptLocation/Post-backup-hook.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#if error occurs then set exit code to 1
|
||||||
|
if [ $Errored == True ] ; then
|
||||||
|
SendErrorMSG
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
2
conf.sh
2
conf.sh
@@ -7,7 +7,7 @@ mbranch=master
|
|||||||
|
|
||||||
sed -i -e '$a set ssl:verify-certificate no' /etc/lftp.conf
|
sed -i -e '$a set ssl:verify-certificate no' /etc/lftp.conf
|
||||||
sed -i -e '$a set sftp:auto-confirm yes' /etc/lftp.conf
|
sed -i -e '$a set sftp:auto-confirm yes' /etc/lftp.conf
|
||||||
|
echo "set cmd:fail-exit true " >> /etc/lftp.conf
|
||||||
|
|
||||||
##############
|
##############
|
||||||
# wp-cli #
|
# wp-cli #
|
||||||
|
|||||||
@@ -1,4 +1,10 @@
|
|||||||
##General Configuration
|
##General Configuration
|
||||||
|
#Error reporting
|
||||||
|
##Command for sending error messages
|
||||||
|
## Comment out when not in use, the error message as the argument
|
||||||
|
#ErrorCMD=
|
||||||
|
|
||||||
|
#Core
|
||||||
RMDAYS=14 #Days until first backup gets removed
|
RMDAYS=14 #Days until first backup gets removed
|
||||||
DOMC=01 #Day of month for monthly backups
|
DOMC=01 #Day of month for monthly backups
|
||||||
SYSTEMFILES="/etc/nginx/ /etc/apache2/ /etc/php/ /etc/mysql/ /etc/crontab /opt/" #Folders and files that will be backed
|
SYSTEMFILES="/etc/nginx/ /etc/apache2/ /etc/php/ /etc/mysql/ /etc/crontab /opt/" #Folders and files that will be backed
|
||||||
|
|||||||
Reference in New Issue
Block a user