码迷,mamicode.com
首页 > 其他好文 > 详细

inotify+Rsync数据同步

时间:2017-09-08 18:07:38      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:inotify+rsync

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

inotify+Rsync数据同步

标签:inotify+rsync

原文地址:http://xmomo.blog.51cto.com/5994484/1963741

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!