inotify+Rsync
要求:
把源服务器192.168.1.100服务器的/data/book/ 同步到目标服务器192.168.1.101服务器的/data/book/
要求实时同步,
第一部分:在目标服务器192.168.1.101上操作
一、在目标服务器安装Rsync服务端
1、关闭SELINUX
2、开启防火墙tcp 873端口(Rsync默认端口)
3、安装Rsync服务端软件
yum -y install rsync xinetd #安装
chkconfig rsync on #rsync属于临时服务,是把rsync交由xinnetd来管理。
service xinetd start #启动
4、创建rsyncd.conf配置文件,我同步两个目录,所以创建两个rsync模块,用户名可以用一个。
vi /etc/rsyncd.conf #创建配置文件,添加以下代码
log file = /var/log/rsyncd.log pidfile = /var/run/rsyncd.pid lock file = /var/run/rsync.lock secrets file = /etc/rsync.pass uid = root gid = root use chroot = no max connections = 1200 timeout = 600 #模块1 [book] path = /data/book/ comment = book port=873 read only = no list = no auth users = bookuser hosts allow = 192.168.1.100 hosts deny = 192.168.21.254
:wq! #保存,退出
参数说明:
log file = /var/log/rsyncd.log #日志文件位置,启动rsync后自动产生这个文件,无需提前创建
pidfile = /var/run/rsyncd.pid #pid文件的存放位置
lock file = /var/run/rsync.lock #支持max connections参数的锁文件
secrets file = /etc/rsync.pass #用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件
motd file = /etc/rsyncd.Motd #rsync启动时欢迎信息页面文件位置(文件内容自定义)
[home_www.osyunwei.com] #自定义名称
path = /data/book/ #rsync服务端数据目录路径
comment = book #模块名称与[book]自定义名称相同
uid = root #设置rsync运行权限为root
gid = root #设置rsync运行权限为root
port=873 #默认端口
use chroot = no #默认为true,修改为no,增加对目录文件软连接的备份
read only = no #设置rsync服务端文件为读写权限
list = no #不显示rsync服务端资源列表
max connections = 200 #最大连接数
timeout = 600 #设置超时时间
auth users = bookuser #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
hosts allow = 192.168.1.100 #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
hosts deny = 192.168.21.254 #禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
5、创建用户认证文件
vi /etc/rsync.pass #配置文件,添加以下内容
bookuser:123456 #格式,用户名:密码,可以设置多个,每行一个用户名:密码
:wq! #保存退出
6、设置文件权限
chmod 600 /etc/rsyncd.conf #设置文件所有者读取、写入权限
chmod 600 /etc/rsync.pass #设置文件所有者读取、写入权限
service xinetd restart #重新启动
第二部分:在源服务器192.168.1.100上操作
一、安装Rsync客户端
1、关闭SELINUX
2、开启防火墙tcp 873端口(Rsync默认端口,做为客户端的Rsync可以不用开启873端口)
3、安装Rsync客户端端软件
yum -y install rsync xinetd
chkconfig rsync on
/etc/init.d/xinetd start #启动(以xinetd来管理rsync服务)
4、创建认证密码文件
vi /etc/passwd.txt #编辑文件,添加以下内容
123456 #密码
:wq! #保存退出
chmod 600 /etc/passwd.txt #设置文件权限,只设置文件所有者具有读取、写入权限即可
5、测试源服务器192.168.1.100到目标服务器192.168.1.101,之间的数据同步
mkdir /data/testfile
rsync -av /data/testfile bookuser@192.168.1.101::book --password-file=/etc/passwd.txt
到目标服务器192.168.1.101 上查看 /data/book/ 此目录下是否有testfile 。
第三部分:在源服务器192.168.1.100上操作
下载inotify
编译安装
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xf inotify-tools-3.14.tar.gz ;cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify && make && make install
创建个脚本,加入后台运行.
vim /usr/local/inotify/inotify.sh
#!/bin/bash #para host01=192.168.1.101 #inotify-slave的ip地址 src=/data/book #本地监控的目录 dst=book #inotify-slave的rsync服务的模块名 user=bookuser #inotify-slave的rsync服务的虚拟用户 rsync_passfile=/etc/passwd.txt #本地调用rsync服务的密码文件 inotify_home=/usr/local/inotify #inotify的安装目录 #judge if [ ! -e "$src" ] || [ ! -e "${rsync_passfile}" ] || [ ! -e "${inotify_home}/bin/inotifywait" ] || [ ! -e "/usr/bin/rsync" ]; then echo "Check File and Folder" exit 9 fi ${inotify_home}/bin/inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete,create,attrib $src | while read file do # rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1 cd $src && rsync -aruz -R --delete ./ $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1 done exit 0
chmod +x /usr/local/inotify/inotify.sh #添加执行权限
/usr/local/inotify/inotify.sh & #后台运行此脚本
###########启动脚本时报错error while loading shared libraries: libinotifytools.so.0: cannot open shared object fil########
系统找不到该库
进入目录
cd /usr/local/inotify/
find . -name libinotifytools.so.0
把查找的文件路径加到 /usr/lib64/
ln -s /usr/local/inotify/lib/libinotifytools.so.0 /usr/lib64/
配置就完成了,自己检查一下数据同步的情况吧。
中途遇到一些坑,rsync -av /data/testfile bookuser@192.168.1.101::book --password-file=/etc/passwd.txt
源目录/data/testfile/ 最后面有没有/的区别很大的,平时没注意,今天中招了。
后面没加斜杠,/data/testfile ,同步此目录下的子目录,包括此目录。
后面加了斜杠,/data/testfile/,同步此目录下的子目录,不包括此目录。
......
说的我自己都有点懵逼了,还是自己去体会吧。
本文出自 “Linux运维-小墨” 博客,请务必保留此出处http://xmomo.blog.51cto.com/5994484/1963741
原文地址:http://xmomo.blog.51cto.com/5994484/1963741