summaryrefslogtreecommitdiffstats
path: root/abs/core/LinHES-system/lh_system_backup_job
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/LinHES-system/lh_system_backup_job')
-rw-r--r--abs/core/LinHES-system/lh_system_backup_job161
1 files changed, 119 insertions, 42 deletions
diff --git a/abs/core/LinHES-system/lh_system_backup_job b/abs/core/LinHES-system/lh_system_backup_job
index 99838be..d2c80ab 100644
--- a/abs/core/LinHES-system/lh_system_backup_job
+++ b/abs/core/LinHES-system/lh_system_backup_job
@@ -2,65 +2,142 @@
#process that uses this system backup script
# - myth_mtc.py
# - supplemental web, process.py backup
-#
-echo "#########################################################"
-echo "Starting backup "
MYTH_RUN_STATUS="1"
. /etc/profile
. /etc/systemconfig
BACKUPDIR=/data/storage/disk0/backup/system_backups
DELETE_DAYS=21
DATE=`date +%F_%H-%M`
-mkdir -p $BACKUPDIR/$DATE
+#
+function backup(){
+ echo "#########################################################"
+ echo "Starting backup "
+ mkdir -p $BACKUPDIR/$DATE
-#backup db
-pacman -Q mysql 2>/dev/null
-if [ $? = 0 ]
-then
- mysqldump mythconverg > $BACKUPDIR/$DATE/mythconverg
- mysqldump ncid > $BACKUPDIR/$DATE/ncid
-fi
+ #backup db
+ pacman -Q mysql 2>/dev/null
+ if [ $? = 0 ]
+ then
+ mysqldump mythconverg > $BACKUPDIR/$DATE/mythconverg
+ mysqldump ncid > $BACKUPDIR/$DATE/ncid
+ fi
-#backup etc
-cp -rp /etc $BACKUPDIR/$DATE/etc
-cp -rp /var/lib/oss $BACKUPDIR/$DATE/oss
+ #backup etc
+ cp -rp /etc $BACKUPDIR/$DATE/etc
+ cp -rp /var/lib/oss $BACKUPDIR/$DATE/oss
-#backup func keys
-cp -rp /data/srv/func $BACKUPDIR/$DATA/func
+ #backup func keys
+ cp -rp /etc/pki $BACKUPDIR/$DATA/pki
-#make_zip file
-cd $BACKUPDIR
-tar -zcvf $BACKUPDIR/backup.$DATE.tgz $DATE
-if [ -d $BACKUPDIR/$DATE ]
-then
- rm -rf $BACKUPDIR/$DATE
-fi
+ #make_zip file
+ cd $BACKUPDIR
+ tar -zcvf $BACKUPDIR/backup.$DATE.tgz $DATE
-if [ -f /home/xymon/server/ext/hbnotes.py ]
-then
- /home/xymon/server/ext/hbnotes.py
- chown nobody:nobody /data/srv/httpd/htdocs/hobbit/notes/* 2> /dev/null >/dev/null
-fi
+ if [ -d $BACKUPDIR/$DATE ]
+ then
+ rm -rf $BACKUPDIR/$DATE
+ fi
-#remove old backups
-find $BACKUPDIR/backup*.tgz -type f -mtime +$DELETE_DAYS -delete
+ if [ -f /home/xymon/server/ext/hbnotes.py ]
+ then
+ /home/xymon/server/ext/hbnotes.py
+ chown nobody:nobody /data/srv/httpd/htdocs/hobbit/notes/* 2> /dev/null >/dev/null
+ fi
+ echo "#########################################################"
+}
-#Remote copy
-if [ x$RemoteBackup = x1 ]
-then
- localRemoteCheck=`echo $RemoteBackupDir | cut -d: -f1`
- if [ x$localRemoteCheck = xdir ]
+function remove_old_backups(){
+ #remove old backups
+ find $BACKUPDIR/backup*.tgz -type f -mtime +$DELETE_DAYS -delete
+}
+
+
+function remote_backup(){
+ #Remote copy
+ if [ x$RemoteBackup = x1 ]
+ then
+ localRemoteCheck=`echo $RemoteBackupDir | cut -d: -f1`
+ if [ x$localRemoteCheck = xdir ]
+ then
+ localRemotedir=`echo $RemoteBackupDir | cut -d: -f2`
+ echo "copying $BACKUPDIR/backup.$DATE.tgz to $localRemotedir "
+ cp $BACKUPDIR/backup.$DATE.tgz $localRemotedir
+ else
+ /usr/bin/func ${RemoteBackupDir} ping| grep -q "FAILED"
+ rc=$?
+ if [ $rc = 0 ]
+ then
+ #this is here to mark failed copy of the backup.
+ #There is a cron.hourly job that will attempt to retransfer the file
+ echo "Remote backup failed to ${RemoteBackupDir}"
+ echo backup.$DATE.tgz >> $BACKUPDIR/remote_backup_failed.txt
+ else
+ echo "copying $BACKUPDIR/backup.$DATE.tgz to ${RemoteBackupDir}:$BACKUPDIR/MBE_$DATE.tgz"
+ /usr/bin/func ${RemoteBackupDir} copyfile -f $BACKUPDIR/backup.$DATE.tgz --remotepath $BACKUPDIR/MBE_$DATE.tgz
+ fi
+ fi
+ fi
+}
+
+function remote_transfer(){
+ transfer_file=${1}
+ echo $transfer_file
+ /usr/bin/func ${RemoteBackupDir} ping| grep -q "FAILED"
+ rc=$?
+ if [ $rc = 0 ]
then
- localRemotedir=`echo $RemoteBackupDir | cut -d: -f2`
- cmd="cp $BACKUPDIR/backup.$DATE.tgz $localRemotedir"
- echo "copying$BACKUPDIR/backup.$DATE.tgz to $localRemotedir "
+ #this is here to mark failed copy of the backup.
+ #There is a cron.hourly job that will attempt to retransfer the file
+ echo "Remote backup failed to ${RemoteBackupDir}"
+ echo $transfer_file >> $BACKUPDIR/remote_backup_failed.txt
else
- /usr/bin/func ${RemoteBackupDir} copyfile -f $BACKUPDIR/backup.$DATE.tgz --remotepath $BACKUPDIR/backup.$DATE.tgz
+ echo "copying $BACKUPDIR/$transfer_file to ${RemoteBackupDir}:$BACKUPDIR/MBE_$transfer_file"
+ /usr/bin/func ${RemoteBackupDir} copyfile -f $BACKUPDIR/$transfer_file --remotepath $BACKUPDIR/MBE_$transfer_file
+ fi
+}
- echo "copying$BACKUPDIR/backup.$DATE.tgz to ${RemoteBackupDir}:/data/database_backup/"
+function add_link(){
+ if [ -f $BACKUPDIR/remote_backup_failed.txt ]
+ then
+ RETRYFILE="/etc/cron.hourly/lh_backup_retry.sh"
+ echo "#!/bin/bash" > $RETRYFILE
+ echo "#This file was autogenerated and removed by lh_system_backup_job" >> $RETRYFILE
+ echo "MYTH_RUN_STATUS=1">> $RETRYFILE
+ echo ". /etc/profile">> $RETRYFILE
+ echo "lh_system_backup_job retry">> $RETRYFILE
+ chmod 755 $RETRYFILE
fi
- $cmd
+}
+
+function remove_link(){
+ RETRYFILE="/etc/cron.hourly/lh_backup_retry.sh"
+ if [ ! -f $BACKUPDIR/remote_backup_failed.txt ]
+ then
+ rm -f $RETRYFILE
+ fi
+}
+#------------------------------------
+if [ "x$1" = "x" ]
+then
+ remove_old_backups
+ backup
+ remote_backup
+ add_link
+else
+ #this is where we attempt to transfer again as part of the cronjob
+ if [ -f $BACKUPDIR/remote_backup_failed.txt ]
+ then
+ mv -f $BACKUPDIR/remote_backup_failed.txt /tmp
+ while read line
+ do
+ echo $line
+ remote_transfer $line
+ done < /tmp/remote_backup_failed.txt
+ rm -f /tmp/remote_backup_failed.txt
+ fi
+ remove_link
fi
-echo "#########################################################"
+
+