Backup with Rsnapshot tool
How To Set Red hat / CentOS Linux Remote Backup / Snapshot Server
A. rsnapshot is easy, reliable and disaster recovery backup solution. It is a remote backup program that uses rsync to take backup snapshots of filesystems. It uses hard links to save space on disk and offers following features:
Filesystem snapshot – for local or remote systems.
Database backup – MySQL backup
Secure – Traffic between remote backup server is always encrypted using openssh
Full backup – plus incrementals
Easy to restore – Files can restored by the users who own them, without the root user getting involved.
Automated backup – Runs in background via cron.
Bandwidth friendly – rsync used to save bandwidth
Sample setup
snapshot.example.com – HP box with RAID 6 configured with Red Hat / CentOS Linux act as backup server for other clients.
DNS ns1.example.com – Red Hat server act as primary name server.
DNS ns2.example.com – Red Hat server act as secondary name server.
www.example.com – Red Hat running Apache web server.
mysql.example.com – Red Hat mysql server.
Install rsnapshot
Login to snapshot.example.com. Download rsnapshot rpm file, enter:
# cd /tmp
# wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.0-1.noarch.rpm
# wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.0-1.noarch.rpm.md5
# cd /tmp
# wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.0-1.noarch.rpm
# wget http://www.rsnapshot.org/downloads/rsnapshot-1.3.0-1.noarch.rpm.md5
Configure rsnapshot
You need to perform following steps
Step # 1: Configure password less login
To perform remote backup you need to setup password less login using openssh. Create ssh rsa key and upload they to all servers using scp (note you are overwriting ~/ssh/authorized_keys2 files). You need to type following commands on snapshot.example.com server:
# ssh-keygen -t rsa
# scp .ssh/id_rsa.pub root@ns1.example.com:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub root@ns2.example.com:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub root@www.example.com:.ssh/authorized_keys2
# scp .ssh/id_rsa.pub root@mysql.example.com:.ssh/authorized_keys2
Step # 2: Configure rsnapshot
The default configuration file is located at /etc/rsnapshot.conf. Open configuration file using a text editor, enter:
# vi /etc/rsnapshot.conf
Configuration rules
You must follow two configuration rules:
rsnapshot config file requires tabs between elements.
All directories require a trailing slash. For example, /home/ is correct way to specify directory, but /home is wrong.
First, specify root directory to store all snapshots such as /snapshots/ or /dynvol/snapshot/ as per your RAID setup, enter:
snapshot_root /raiddisk/snapshots/
You must separate snapshot_root and /raiddisk/snapshots/ by a [tab] key i.e. type snapshot_root hit [tab] key once and type /raiddisk/snapshots/.
Define snapshot intervals
You need to specify backup intervals i.e. specify hourly, daily, weekly and monthly intervals:
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
The line “interval hourly 6” means 6 hourly backups a day. Feel free to adapt configuration as per your backup requirements and snapshot frequency .
Remote backup directories
To backup /var/named/ and /etc/ directory from ns1.example.com and ns2.example.com, enter:
backup root@ns1.example.com:/etc/ ns1.example.com/
backup root@ns1.example.com:/var/named/ ns1.example.com/
backup root@ns2.example.com:/etc/ ns2.example.com/
backup root@ns2.example.com:/var/named/ ns2.example.com/
To backup /var/www/, /var/log/httpd/ and /etc/ directory from www.example.com, enter
backup root@www.example.com:/var/www/ www.example.com/
backup root@www.example.com:/etc/ www.example.com/
backup root@www.example.com:/var/log/httpd/ www.example.com/
To backup mysql database files stored at /var/lib/mysql/, enter:
backup root@mysql.example.com:/var/lib/mysql/ mysql.example.com/dbdump/
Save and close the file. To test your configuration, enter:
# rsnapshot configtest
Sample output:
Syntax OK
Schedule cron job
Create /etc/cron.d/rsnapshot cron file. Following values used correspond to the examples in /etc/rsnapshot.conf.
0 */4 * * * /usr/bin/rsnapshot hourly
50 23 * * * /usr/bin/rsnapshot daily
40 23 * * 6 /usr/bin/rsnapshot weekly
30 23 1 * * /usr/bin/rsnapshot monthly
Save and close the file. Now rsnapshot will work as follows to backup files from remote boxes:
6 hourly backups a day (once every 4 hours, at 0,4,8,12,16,20)
1 daily backup every day, at 11:50PM
1 weekly backup every week, at 11:40PM, on Saturdays (6th day of week)
1 monthly backup every month, at 11:30PM on the 1st day of the month
How do I see backups?
To see backup change directory to
# cd /raiddisk/snapshots/
# ls -l
Sample output:
drwxr-xr-x 4 root root 4096 2008-07-04 06:04 daily.0
drwxr-xr-x 4 root root 4096 2008-07-03 06:04 daily.1
drwxr-xr-x 4 root root 4096 2008-07-02 06:03 daily.2
drwxr-xr-x 4 root root 4096 2008-07-01 06:02 daily.3
drwxr-xr-x 4 root root 4096 2008-06-30 06:02 daily.4
drwxr-xr-x 4 root root 4096 2008-06-29 06:05 daily.5
drwxr-xr-x 4 root root 4096 2008-06-28 06:04 daily.6
drwxr-xr-x 4 root root 4096 2008-07-05 18:05 hourly.0
drwxr-xr-x 4 root root 4096 2008-07-05 15:06 hourly.1
drwxr-xr-x 4 root root 4096 2008-07-05 12:06 hourly.2
drwxr-xr-x 4 root root 4096 2008-07-05 09:05 hourly.3
drwxr-xr-x 4 root root 4096 2008-07-05 06:04 hourly.4
drwxr-xr-x 4 root root 4096 2008-07-05 03:04 hourly.5
drwxr-xr-x 4 root root 4096 2008-07-05 00:05 hourly.6
drwxr-xr-x 4 root root 4096 2008-07-04 21:05 hourly.7
drwxr-xr-x 4 root root 4096 2008-06-22 06:04 weekly.0
drwxr-xr-x 4 root root 4096 2008-06-15 09:05 weekly.1
drwxr-xr-x 4 root root 4096 2008-06-08 06:04 weekly.2
How do I restore backup?
Let us say you would like to restore a backup for www.example.com. Type the command as follows (select day and date from ls -l output):
# cd /raiddisk/snapshots/
# ls -l
# cd hourly.0/www.example.com/
# scp -r var/www/ root@www.example.com:/var/www/
# scp -r etc/httpd/ root@www.example.com:/etc/httpd/
How do I exclude files from backup?
To exclude files from backup, open rsnapshot.conf file and add following line:
exclude_file /etc/rsnapshot.exclude.www.example.com
Create /etc/rsnapshot.exclude.www.example.com as follows:
/var/www/tmp/
/var/www/*.cache
Further readings:
man rsnaspshot, ssh, ssh-keygen
Recent Comments