rsync可以用来实现数据本地镜像和远程备份。
1,可以镜像保存整个目录和文件。
2,可以增量同步数据,文件传输率高。
3,可以保持原文件的权限,时间等属性。
4,可以加密传输数据。
5,可以使用rcp、ssh等方式来传输文件。
6,支持匿名传输。
很多操作系统默认都已经安装rsync服务,如果没有安装可以下载安装。
下载wget http://rsync.samba.org/
安装:
#tar zxvf rsync-3.0.4.tar.gz
#cd rsync-3.0.4
#make
#make install
利用rsync可以实现远程容灾备份。
如:A、B两个linux系统,A系统作为网站服务器,B系统作为A的远程容灾备份机。因此需要A、B两个都安装有rsync软件,同时A系统作为服务端,B系统作为客户端。在A系统上运行rsync守护进程,在B系统上通过crontab来定时备份A系统的数据。
在A系统上配置:
# vim /etc/rsyncd.conf
编辑添加内容:
uid = nobody
gid = nobody
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[ixdba]
path = /webdata
comment = ixdba file
ignore errors
read only = no
hosts allow = *
hosts deny = 192.168.1.100
list = false
uid = root
gid = root
auth users = backup
secrets file = /etc/server.pass
其中,/etc/server.pass中添加如下:
#cat /etc/server.pass
backup:ixdba123
#chmod 600 /etc/server.pass
在A系统上启动rsync进程
#/usr/local/bin/rsync --daemon
#ps -ef | grep rsync
root 20345 1 0 15:37 ? 00:00:00 /usr/local/bin/rsync --daemon
在B系统上配置rsync
为了使同步过程中不用输入密码,在B系统上创建一个secrets file ,此文件内容为A 系统rsyncd.conf文件中“auth users” 选项指定用户的密码。
#/usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exculde "debug*" backup@192.168.1.100::ixdba /ixdba.net --password-file=/etc/server.pass
#cat /etc/server.pass
ixdba123
#chmod 600 /etc/server.pass
设置定时备份策略
触发同步知道方式有很多,可以将指令放到crontab来执行。自动完成数据备份。比如:
crontab -e
10 1 * * * /usr/local/bin/rsync -vzrtopg --delete --progress --exclude "*access*" --exculde "debug*" backup@192.168.1.100::ixdba /ixdba.net --password-file=/etc/server.pass
就可以实现远程容灾备份。
但是通过这样的方法有个问题,就是rsync通过crontab来触发执行,但是在两次触发同步操作的时间间隔内,服务器和客户端数据肯能出现不一致。如果在这个时间间隔出现问题,那就意味着数据丢失。那么就需要另外的一个工具来实现0丢失,这就是inotify
需要rsync + inotify来实现数据实时备份。
inotify从linux2.6.13版本开始支持。它是一个文件系统监控工具,通过它可以监控文件添加、删除、修改、移动等操作事件。随时随地实时监控数据的变化,并触发rsync来实时同步数据。
#uname -r
2.6.18-194.el5PAE
# ll /proc/sys/fs/inotify/
总计 0 -rw-r--r-- 1 root root 0 04-18 15:32 max_queued_events -rw-r--r-- 1 root root 0 04-18 15:32 max_user_instances -rw-r--r-- 1 root root 0 04-18 15:32 max_user_watches有以上3项输出表示系统默认支持inotify,可以开始安装inotify-tools。
wget http://inotify-tools.sourceforge.net
# tar zxvf inotify-tools-3.14.tar.gz
#cd inotify-tools-3.14
#./configure
#make
#make install
#ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 37264 04-14 12:30 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 37264 04-14 12:30 /usr/local/bin/inotifywatch
... ...