1、环境介绍

192.168.1.2 (rsync+inotify)-----------FTP主节点

192.168.1.3 (rsync)-------------------backup备份节点

实验目的:实现文件实时同步

FTP主节点(192.168.1.2)-------> 文件备份节点(192.168.1.3) 


一、FTP主节点(需同时安装rsync+inotify)

1、准备软件包

[root@ftp ~]# mkdir /mnt/ftpdata

[root@ftp ~]# wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz

[root@ftp ~]# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 

2、安装Rsync

[root@ftp ~]# tar -zxvf rsync-3.0.9.tar.gz

[root@ftp ~]# cd rsync-3.0.9

[root@ftp rsync-3.0.9]# ./configure --prefix=/usr/local/rsync

[root@ftp rsync-3.0.9]# make;make install 

配置两台主机互信

[root@ftp ~]# echo "111111">/etc/rsyncd.secrets

[root@ftp ~]# less /etc/rsyncd.secrets 

test123

*其中test123可以自己设置密码,rsyncd.secrets名字也可以自己设置;

权限:要将/etc/rsyncd.secrets设置为root拥有且权限为600

[root@ftp ~]# chmod 600 /etc/rsyncd.secrets

[root@ftp ~]# ll /etc/rsyncd.secrets

-rw------- 1 root root 7 Jun9 21:24 /etc/rsyncd.secrets 

3、安装inotify

[root@ftp ~]# tar -zxvf inotify-tools-3.14.tar.gz 

[root@ftp ~]# cd inotify-tools-3.14

[root@ftp inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify

[root@ftp inotify-tools-3.14]# make;make install 

4、创建rsync复制脚本

此项功能主要是将ftp端的目录/data/ftpdata里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给backup的/data/ftpdata里,下面是通过shell脚本实现的。

#!/bin/bash
SRC=/data/ftpdata/
DST=root@192.168.1.3::ftpdata
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format'%T %w%f' -e modify,delete,create,attrib $SRC| while 
read files
do
/usr/bin/rsync -vzrtopg --delete --password-file=/etc/rsyncd.secrets$SRC $DST> /dev/null
done

:wq

[root@ftp ~]# chmod 755 /opt/rsync.sh 

rsync.sh脚本加入开机启动项

[root@ftp ~]# echo "/opt/rsync.sh" >> /etc/rc.local 

防火墙开启rsync端口:873

[root@ftp ~]# vim /etc/sysconfig/iptables

添加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT

重启:

[root@ftp ~]# /etc/init.d/iptables restart

说明:源机器主要是一个inotify的监控脚本,这个脚本如同一个守护进程,会一直运行监控着相应目录的增删减动作,一经发现,立即运行rsync进行同步(推送),不要担心源目录下的文件权限与客户机的不一致,只要源机能读取到,推送过去的文件或目录,客户机都会根据rsyncd.conf文件配置的uid,gid进行重置。

二、备份服务器(rsync)

1、准备工作

创建备份目录:

[root@backup ~]# mkdir /data/ftpdata

2、准备软件包

[root@backup ~]# wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz

3、安装rsync(备份服务器只安装rsync)

[root@backup ~]# tar -zxvf rsync-3.0.9.tar.gz 
[root@backup ~]# cd rsync-3.0.9
[root@backup rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@backup rsync-3.0.9]# make;make install

4、建立用户与密码认证文件

[root@backup ~]# echo "root:test123" > /etc/rsyncd.secrets
[root@backup ~]# less /etc/rsyncd.secrets
root:test123

注意:

请记住,在ftp端建立的密码文件,只有密码,没有用户名;而在备份服务端backup里建立的密码文件,用户名与密码都有。

权限:要将/etc/rsyncd.secrets设置为root拥有且权限为600

[root@backup ~]#chmod 600 /etc/rsyncd.secrets

5、建立rsync配置文件

[root@backup ~]# vim /etc/rsyncd.conf
uid = root
gid = root
port = 873
use chroot = yes
read only = yes
hosts allow=192.168.1.0/255.255.255.0
hosts deny=*
max connections = 5
log file =/var/log/rsyncd.log
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsyncd.lock
log format = %t %a %m %f%b
syslog facility = local3
timeout = 300
 
[ftpdata]
path = /data/ftpdata
list = no
read only = no
ignore errors
auth users = root
secrets file =/etc/rsyncd.secrets

:wq 

启动rsync服务

[root@backup ~]# /usr/local/rsync/bin/rsync --daemon--config=/etc/rsyncd.conf
[root@backup ~]# ps -ef |grep rsync

Rsync服务加入开机启动项

[root@backup ~]# echo "/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.local

防火墙开启rsync端口:873

[root@backup ~]# vim /etc/sysconfig/iptables

添加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -jACCEPT

重启:

[root@backup ~]# /etc/init.d/iptables restart

现在rsyncinotifyftp端安装完成,rsync在备份服务器backup端也安装完成! 

重启

[root@ftp ~]# reboot
[root@backup ~]# reboot

三、测试验证

1、在ftp/data/ftpdata 目录上创建一个文件夹:

[root@ftp ftpdata]# mkdir zl

2、在backup端查看/data/ftpdata目录是否相同;

[root@backup ~]# ll /data/ftpdata/

四、备份与恢复

1、手动备份

192.168.1.2---------->192.168.1.3 

[root@ftp ~]# /usr/bin/rsync -vzrtopg --delete--password-file=/etc/rsyncd.secrets /data/ftpdata/ root@192.168.1.3::ftpdata

2、手动恢复

192.168.1.3 ---------->192.168.1.2

[root@ftp ~]# /usr/bin/rsync -vzrtopg --delete--password-file=/etc/rsyncd.secrets root@192.168.1.3::ftpdata /data/ftpdata/

五、常见问题:

upper limit on inotify watches reached!

解决:

echo 81920 > /proc/sys/fs/inotify/max_user_watches