单向实时同步文件rsync+inotify-tools的配置教程

发布时间:2020-03-08编辑:脚本学堂
本文介绍下,在linux下,使用rsync+inotify-tools配置单向文件实时同步的方法,有需要的朋友参考下。

本节介绍的内容为:使用rsync+inotify-tools配置文件单向同步的方法。

一,server端安装rsync inotify-tools
 

复制代码 代码示例:
[root@nginx src]# tar zxvf rsync-3.0.9.tar.gz 
[root@nginx src]# cd rsync-3.0.9
[root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@nginx rsync-3.0.9]# make  && make install

二,建立密码文件
 

复制代码 代码示例:
[root@nginx ~]# echo "NteS0btuJ7rCg" >> /etc/server.pass
[root@nginx ~]# cat /etc/server.pass
NteS0btuJ7rCg (另一台机器www密码 为了权限及文件所有者考虑server端与client的www账号uid gid 均一样)
[root@nginx rsync]# chmod 600 /etc/server.pass
[root@nginx src]# tar zxvf inotify-tools-3.14.tar.gz 
[root@nginx src]# cd inotify-tools-3.14 
[root@nginx inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify 
[root@nginx inotify-tools-3.14]# make  && make install

三,创建rsync复制脚本
将server端的目录/www里的内容,如果修改了(无论是添加、修改、删除文件)能够通过inotify监控到,并通过rsync实时的同步给client的/www里。
实现此操作的shell/ target=_blank class=infotextkey>shell脚本:
 

复制代码 代码示例:
#!/bin/bash
src=/www/
des=www
ip=192.168.1.251
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib  $src | while read files
 do
   /usr/local/rsync/bin/rsync -vzrtopg --delete --progress $src www@$ip::$des --password-file=/etc/server.pass &&
   echo "$src was rsyncd" >>/tmp/rsync.log 2>&1
done
 

后台运行脚本:
 

复制代码 代码示例:
nohup  sh /tmp/rsync.sh

另外,可以把rsync.sh脚本加入到开机启动项中:
 

复制代码 代码示例:
[root@nginx tmp]# echo "/tmp/rsync.sh" >> /etc/rc.local

四、客户端只安装rsync 与服务器端安装一样
 

复制代码 代码示例:
[root@nginx src]# tar zxvf rsync-3.0.9.tar.gz 
[root@nginx src]# cd rsync-3.0.9
[root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync
[root@nginx rsync-3.0.9]# make  && make install

五、建立密码文件
 

复制代码 代码示例:
[root@web2 ~]# touch /etc/server.pass
[root@web2 www]# cat /etc/server.pass
www:NteS0btuJ7rCg
[root@web2 rsync]# chmod 600 /etc/server.pass

六、在rsync的安装路径里面添加配置文件rsyncd.conf
 

复制代码 代码示例:
uid = root
gid = root
user chroot = no
max connetction = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log
[www]
path = /www
ignore errors
read only = no
list = no
auth user = www
secrets file = /etc/rsyncd.password

七、启动客户端rsync服务
 

复制代码 代码示例:
/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf

把rsync脚本加入到开机启动项中:
 

复制代码 代码示例:
[root@nginx-backup rsync]# echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsync.conf" >> /etc/rc.local

客户端关闭防火墙或添加防火墙规则:
 

复制代码 代码示例:
iptables -I INPUT -p tcp --dport 873 -j ACCEPT

接下来就是测试环节了,可以测试在server端修改文件、修改权限等,客户端均跟着发生变化。