日期:2014-05-16  浏览次数:20711 次

linux设置rsync+inotify实时同步文件

应用场景:

同步接收方:test01

接收目录:/opt/software/test/a/

同步发起方:test02

同步目录:/opt/software/test/a/

?

在test02的 /opt/software/test/a/ 目录下做新增、创建、删除、移动操作都会同步到test01的/opt/software/test/a/目录

?

第一步:安装rsync(test01和test02都要安装)

yum install rsync

?

第二步:安装inotify(同步发起方test02安装)

解压inotify

?

[root@test02 software]# tar zxvf inotify-tools-3.14

[root@test02 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify

[root@test02 inotify-tools-3.14]# make

[root@test02 inotify-tools-3.14]# make install

?

?

第三步:配置rsync(同步接收方test01)

在/etc 目录下新建rsyncd.conf,内容如下

pid file=/var/run/rsyncd.pid
port=873

#test01所在ip地址
address=192.168.1.114
uid=root
gid=root
use chroot=yes

#test02 所在ip地址
hosts allow=192.168.1.107
hosts deny=*
max connections=5
motd file=/etc/rsyncd.motd
log file=/var/log/rsync.log
#transfer logging=yes
log format=%t %a %m %f %b
syslog facility=local3
timeout=300
read only=no
write only=no
[ggly]
path=/opt/software/test/a/
auth users=owenzhang
list=yes
igonre errors
secrets file=/etc/rsyncd.secrets
comment=ggly rsyc files

?

在/etc 目录下新建 rsyncd.secrets并赋予600权限内容如下

#用户:密码,密码不一定要和linux用户的密码一致,用户必须是linux用户

owenzhang:123123

?

在/etc目录下新建 rsyncd.motd,内容随便写,rsync的欢迎信息

?

运行test01的rsync

service xinetd start

没有安装xinetd 可以使用 yum install xinetd 来安装

?

第四步:配置inotify(同步发起方test02)

新建文件 gglyrsync.sh 并赋予执行权限,文件名、位置随便,内容如下

?

#!/bin/bash

#同步接收方ip
client=192.168.1.114
src=/opt/software/test/a/

#同步接收方配置的rsync模块名
dest=ggly

#同步接收方鉴权时的用户
user=owenzhang
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib $src | while read files
do
/usr/bin/rsync -vzrtopgq --delete --progress --password-file=/opt/software/rsyncpasswd $src $user@$client::$dest
done

?

在/opt/software/目录下新建rsyncpasswd文件,内容为test01中rsyncd.secrets中owenzhang对应密码即123123并赋予600权限

?

?

最后运行 gglyrsync.sh 就可以了。

?