浅谈Rsync+Inotify实时同步

   Rsync是Unix/Linux旗下的一款应用软件,利用它可以是多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下次只传输修改过的文件

Rsync在传输数据的过程中可以实行压缩及解压缩的操作,因此可以使用更少的贷款,可以很容易做到保持原来文件的权限,时间,软硬链接等

    在同步备份数据时,默认情况下,rsync通过其独特的“quick check”算法,它仅能同步大小或者最后修改时间的发生变化的文件或目录,当然可以根据权限,属主等属性的变化同步,但需要指定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可以实现快速的同步备份数据

【Rsync服务端】-源端

[root@Rsync-server ~]# yum install -y rsync xinetd

[root@Rsync-server ~]# vim /etc/xinetd.d/rsync

disable = no

uid = 0                                                      #这个uid和gid要注意,同步文件的路径一定要与其属主属组保持一致
gid = 0
port = 873
address = 192.168.2.140                                      #本地IP地址
use chroot = no
max connections = 200                                        #最大连接
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
hosts allow=192.168.2.0/255.255.255.0                         #模块允许通过的IP,也就是说允许推送拉去数据的IP地址范围          

[Web]
read only = no                            #read only为no的即为上传,yes则为只读
write only = no #客户端可下载文件,yes则不能下载
list = yes #是否提供资源列表 path
= /var/www/html/ #本地需要同步的目录 auth users = test #登陆系统所使用虚拟用户名 secrets file = /etc/rsync.pas #密码文件存放的位置(ps:权限需要600)

 

[root@Rsync-server ~]#vim  /etc/rsync.pas
test:test123

[root@Rsync-server ~]# chmod 600 /etc/rsync.pas
[root@Rsync-server ~]# /etc/init.d/xinetd start

[root@Rsync-server ~]# netstat -anput | grep xinetd
tcp 0 0 :::873 :::* LISTEN 3113/xinetd

【客户端】

客户端不需要做什么配置,只需要安装rsync并启动,同时将Rsync源端秘钥拿过来即可

[root@localhost ~]# cat /etc/rsync.pas
test123

root@localhost web]# rsync -avz /var/web/ test@192.168.2.140::Web --password-file=/etc/rsync.pas      #推送,将本地/var/web/文件推送到rsync端

[root@localhost ~]# rsync -avz  test@192.168.2.140::Web /var/web/  --password-file=/etc/rsync.pas        #拉去,将rsync数据源端拉取到本地/var/web目录

【Rsynx实时同步部配置-inotfy】

Inotify是一个Linux特性,它监控文件系统操作,比如读取,写入和创建。Inotfy反应灵敏,用法非常简单,并且比cron任务的繁忙轮训高效的多,

 Rsync安装完成之后,需要安装inotfy文件检查软件,同事为了同步的时候不需要输入密码,这样,可以使用ssh免秘钥的方式进行传输同步

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

[root@localhost ~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure && make && make install

[root@localhost inotify-tools-3.14]# vim auto_inotify.sh 

 

#!/bin/sh 
src=/var/web/
des=/var/www/html/
ip=192.168.2.140
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file 
do
/usr/bin/rsync -aP --delete  $src test@$ip::Web --password-file=/etc/rsync.pas
done

最后我们可以将其放到后台运行这个脚本nohup sh auto_inotify.sh 

在客户端端目录新建或者删除,源数据端都会实时进行相关操作。

posted @ 2018-06-16 14:52  Mr&Yu  阅读(345)  评论(0编辑  收藏  举报