Saturday, 12 March 2016

VPS Backup On OpenVZ Script


Here, We are going to use a 'vzbackup.sh' bash script to schedule backups. You may customize this script according to you needs. You may schedule backup on remote server or on the same node. For this you need to edit 'vzbackup.sh' script. Steps to schedule backup is are as follows,

1. Make passwordless login enabled to backup server from openvz server.

2. vzdump, scp, rsync and crontab must be running/installed on OpenVZ server.

3. Copy, Edit and set execute permissions to backup script:

    ]# cp -rvp /media/pendrive/vzbackup.sh /vz/backup/
    ]# vi /vz/backup/vzbackup.sh
        [EDIT]
    ]# chmod +x /vz/backup/vzbackup.sh

4. Schedule regular backup through crontab command:

    ]# crontab -e
       41 21 * * * /vz/backup/vzbackup.sh >/dev/null 2>&1

    ]# crontab -l  (Crontab File : /var/spool/cron/root)

    ]# service crond restart


===========================

Script :


#!/bin/sh

#############################################################
# File:         vzbackup.sh
# Description:  A shell script to backup Multiple VPS using vzdump
# Cron Example: 0 2 * * * sh /path/to/vzbackup.sh
#############################################################

####DEFINE THESE#############################################
VPSLIST="4001 4002 3003 3002 3004 4006";
#VPSLIST="3002 3003 3004 3006 4001 4002 4003 4005 4006 4007 4008";
EMAILNOTIFICATION=1;
EMAILADDRESS="audit@hostindia.net";
SCPTOREMOTE=0;
REMOTESERVER="tlv4.hostinservices.com";
REMOTEDIR="/vz/backup/tlv2";
VZDUMP="/usr/sbin/vzdump";
#VZDUMPBASEDIR="/vz/backup/tlv2";
VZDUMPBASEDIR="/backups/tlv1";
VZFLAGS="--suspend --compress";
####END CHANGE HERE###########################################

DATE=`/bin/date "+%Y-%b-%d"`;
VZDUMPDIR="$VZDUMPBASEDIR/$DATE";

if [ ! -d $VZDUMPDIR ];
then
    echo "Creating Directory: ".$VZDUMPDIR;
    mkdir $VZDUMPDIR;
fi

if [ $EMAILNOTIFICATION -eq "0" ];
then
    VZMAILTO="";
else
    VZMAILTO="--mailto $EMAILADDRESS";
fi
   
for VPS in $VPSLIST
do
    echo "VPS $VPS Backup Started";
    $VZDUMP $VZFLAGS --dumpdir $VZDUMPDIR $VZMAILTO $VPS
    echo "VPS $VPS Backup Completed";
done

if [ $SCPTOREMOTE -eq "1" ]
then
    echo "Backing up data to remote server";
    scp -r $VZDUMPDIR $REMOTESERVER:$REMOTEDIR
fi
echo "Done";
exit;

No comments: