Simple Disaster Recovery Plan – RBackup
#!/bin/bash
if [ -f /var/cpanel/mainip ];then
/usr/local/cpanel/cpkeyclt
if [ $(IP=$(cat /var/cpanel/mainip);lynx -dump https://verify.cpanel.net/app/verify?ip=$IP|grep "cPanel/WHM active"|awk '{print $4}') != "active" ]; then
echo "invalid license"
exit
fi
else
echo "This script wont work without cPanel/WHM license"
exit
fi
BACKUPDIR=$(grep BACKUPDIR /var/cpanel/backups/config|cut -d: -f2)
BACKUPENABLE=$(grep BACKUPENABLE /var/cpanel/backups/config|cut -d: -f2)
DSTHOST=192.168.1.10
DSTPORT=6789
LHOST=$(hostname|cut -d. -f1)
DSTDIR=/data/$LHOST
DATE=$(date +%F)
TMPDIR=/tmp/$LHOST
LOG=/var/log/rbackup-$DATE
[email protected]
DAILY=1
WEEKLY=1
MONTHLY=1
if [ $(id -u) -ne 0 ];then
echo "$(date +%F) $(date +%T) root only" > $LOG
mail -s "RBackup Failed: $HOSTNAME $DATE" $EMAIL < $LOG
exit
fi
if [ $BACKUPENABLE != "'yes'" ];then
echo "$(date +%F) $(date +%T) Backup was disabled. Please enable your backup from WHM -> Backup -> Backup Configuration" > $LOG
mail -s "RBackup Failed: $HOSTNAME $DATE" $EMAIL < $LOG
exit
fi
if [ $(ssh -o "StrictHostKeyChecking no" -o BatchMode=yes -o ConnectTimeout=5 -p $DSTPORT root@$DSTHOST echo ok 2>&1|grep -Ev $DSTHOST) != "ok" ];then
echo "$(date +%F) $(date +%T) SSH connection failed, please check your SSH connection to $DSTHOST or your $HOSTNAME PubkeyAuth in $DSTHOST:/root/.ssh/authorized_keys" > $LOG
mail -s "RBackup Failed: $HOSTNAME $DATE" $EMAIL < $LOG
exit
fi
mkdir -p $TMPDIR
rsync -aH $TMPDIR -e "ssh -p $DSTPORT" root@$DSTHOST:/data
function fdaily {
if [ -d $BACKUPDIR/$DATE ]; then
echo > $LOG
echo "rsync -avHP $BACKUPDIR/$DATE -e "ssh -p $DSTPORT" root@$DSTHOST:$DSTDIR" >> $LOG
mail -s "RBackup Report $HOSTNAME $DATE" $EMAIL < $LOG
fi
}
function fweekly {
if [ -d $BACKUPDIR/weekly/$DATE ]; then
echo > $LOG
echo "rsync -avHP $BACKUPDIR/weekly/$DATE -e "ssh -p $DSTPORT" root@$DSTHOST:$DSTDIR/weekly" >> $LOG
mail -s "RBackup Report $HOSTNAME $DATE" $EMAIL < $LOG
fi
}
function fmonthly {
if [ -d $BACKUPDIR/monthly/$DATE ]; then
echo > $LOG
echo "rsync -avHP $BACKUPDIR/monthly/$DATE -e "ssh -p $DSTPORT" root@$DSTHOST:$DSTDIR/monthly" >> $LOG
mail -s "RBackup Report $HOSTNAME $DATE" $EMAIL < $LOG
fi
}
if [ $DAILY -eq 1 ];then fdaily;fi
if [ $WEEKLY -eq 1 ];then fweekly;fi
if [ $MONTHLY -eq 1 ];then fmonthly;fi