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

rsync+inotify文件实时同步

时间:2015-09-01 18:31:52      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:rsync

安装环境:

server:192.168.2.183

 client:192.168.2.222

两台服务器上分别安装:

yum install rsync -y

sever端配置rsync文件vi /etc/rsyncd.conf 默认配置文件不存在自己创建,以下为配置

 uid = nobody
gid = nobody
port = 873
host all = 192.168.2.222
use chroot = on
max connections = 4
timeout = yes
[web]
path = /var/www/html/
comment = rsync files
ignore errors
read only = no
list = yes
auth users = rsync
secrets file = /etc/rsync_server.passwd
~

创建密码通信文件vi /etc/rsync_server.passwd 并给与600权限

[root@localhost ~]# cat  /etc/rsync_server.passwd   
rsync:rsync 
chmod 600 /etc/rsync_server.passwd

启动rsync

rsync --daemon

查看监听端口

[root@localhost ~]# netstat -ntulp | grep rsync
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      20404/rsync         
tcp        0      0 :::873                      :::*                        LISTEN      20404/rsync

rsync配置完毕

 

client端配置

实现实时同步需要安装inotify文件检查工具

 

下载安装

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
  ./configure --prefix=/usr/local/inotify 
  
  make && make install

编写脚本inotify.sh然后后端执行,脚本内容如下:

#!/bin/bash
host=192.168.2.183 
src=/var/www/html/
dst=web
user=rsync
inotifywait=/usr/local/inotify/bin/inotifywait
rsync=/usr/bin/rsync
$inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e modify,delete,create,attrib $src | while read files
do
$rsync -vzrtopg --delete ./  --timeout=100  --progress --password-file=/etc/rsync_client.passwd  $user@$host::$dst $src
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done~

 客户端创建rsync同步密码文件rsync_client.passwd  并给与600权限

[root@node2 ~]# cat /etc/rsync_client.passwd  
rsync 
chmod 600  /etc/rsync_client.passwd  
rsync

然后

后台运行inotify.sh脚本

nohup sh inotify.sh &
[root@node2 ~]# jobs
[1]+  Running                 nohup sh inotify.sh &
fg是调用后台运行的程序的,

 然后测试:

在server端cp文件到/var/www/html/目录下,然后在客户端client的/var/www/html/目录下查看,文件同步过来了,在server执行for a in `seq 200`;do touch $a;done创建文件,可以在客户端查看

 

以上实验是服务端同步到客户端,那怎么将客户端的文件推送到服务端了,其实只需要改一下脚本里面的同步命令就可以了

 

 

本文出自 “毛毛鸭” 博客,请务必保留此出处http://woshitieren.blog.51cto.com/2466034/1690555

rsync+inotify文件实时同步

标签:rsync

原文地址:http://woshitieren.blog.51cto.com/2466034/1690555

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