Rsync结合Inotify 实时同步配置

简介:

 Rsync结合Inotify 实时同步配置

 系统环境:192.168.121.128(源) 192.168.121.129(目的)

 

 

 192.168.121.129(目的)安装rsync服务:

 yum install rsync 或者 wget rsync官网的rsync-3.1.2.tar.gz编译安装,不需要带参数 ./configure --prefix=/usr/local/rsync

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
cat  /etc/rsyncd .conf
uid=root //RSYNC 守护进程的用户
git=root //// 运行RSYNC守护进程的组
use chroot = no  //  // 不使用chroot
max connections = 10   // 最大连接数限制
strict modes =  yes // 如果为 true ,则密码文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。默认值为 true
pid  file  /var/run/rsyncd .pid 
lock  file  /var/run/rsync .lock 
log  file  /var/log/rsyncd .log 
[svn] 
path =  /data/svn 需要同步的目录
comment =  rsync  from 192.168.121.128
read  only = no 
write only = no 
hosts allow = 192.168.121.128
hosts deny = * 
list =  false
uid = root 
gid = root 
auth  users  = webuser // 此用户与系统用户无关
secrets  file  /etc/rsync . passwd // 定义认证的用户密码文件

cat /etc/rsync.passwd 

1
2
webuser:password
// 用户和密码以分号隔开


并且设置600文件属性:

1
chmod  600  /etc/rsync . passwd


启动rsync服务:

1
/usr/local/rsync/bin/rsync  --port=873 --address=192.168.121.129 --daemon


在192.168.121.128(源)主机做推送测试:

1
rsync  -avH --delete  --password- file = /etc/rsync . passwd  /data/svn  webuser@192.168.121.129::svn


#注意:/data/svn目录默认系统是已经有的,如果同步其他目录,源主机肯定有的,但目的主机可能没有,需要手动创建,否则会报错,找不到目录,同步失败。



192.168.121.128源主机安装inotify 服务

下载安装

1
2
3
4
5
6
# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
# tar xzvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.13
# ./configure  --prefix=/usr/local/inotify
# make
# make install


创建inotify_rsync.sh脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat  inotify_rsync.sh
#!/bin/sh
#function:rysnc 192.168.121.128  to  192.168.121.129
if  [ ! -f  /etc/rsync . passwd  ]; then
         echo  "password" > /etc/rsync . passwd
         /bin/chmod  600  /etc/rsync . passwd
fi
log= /usr/local/inotify/logs/rsync .log
src= "/data/svn/" #注意src如果为/tmp,将把tmp目录同步至目标主机,出现/tmp/tmp递归目录,所以需要同步那个目录下的文件,需要以/结尾。
host= "192.168.121.129"
module= "svn"
/usr/local/inotify/bin/inotifywait  -mr --timefmt  '%d/%m/%y %H:%M'  -- format  '%T %w %f'  -e close_write,modify,delete,create,attrib $src |   while  read  DATE TIME DIR FILE;  do
FILECHANGE=${DIR}${FILE}
/usr/bin/rsync  -avH --delete  --progress --password- file = /etc/rsync . passwd  $src  --exclude-from= "/usr/local/inotify/logs/rules.txt"  webuser@$host::$module &
echo  "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync"  >> $log
done



#脚本中有delete参数,测试环境可以随便来,生产环境建议禁止delete参数。


1
2
mkdir  /usr/local/inotify/logs// 如果没有目录或文件需要手动创建
touch  /usr/local/inotify/logs/rules .txt


相关注解如下:

/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib ${src}

-m 是保持一直监听

-r 是递归查看目录

-q 是打印出事件


-e close_write,modify,delete,create,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件


/usr/bin/rsync -avH --delete  --progress --password-file

-a 存档模式

-H 保存硬连接

-delete 删除于多余文件

--password-file 密码文件

今天参数可以man rsync


要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径,具体查看man rsync。

要排除某个目录的事件监听的处理时,为inotifywait添加--exclude或--excludei参数,具体查看man inotifywait。

--exclude-from="/usr/local/inotify/logs/rules.txt" 可以匹配过滤文件:

如排除包括 .svn的文件:

#cat /usr/local/inotify/logs/rules.txt

- *.svn*


inotifywait 命令产生三个返回值,分别是“日期,时间,文件” 这3个返回值会做为参数传给read,因此脚本中的“while read D E F” 写法细化了返回值。


赋予脚本可执行权限

1
#chmod +x   inotify_rsync.sh


运行

1
#sh iotify_rsync.sh &



本文转自青衫解衣 51CTO博客,原文链接:http://blog.51cto.com/215687833/1883500

相关文章
|
6月前
|
监控 安全 Unix
Rsync+Inotify实现数据实时同步
Rsync+Inotify实现数据实时同步
|
监控
inotify+rsync实现实时同步数据
inotify+rsync实现实时同步数据
114 0
|
监控 Linux
rsync+inotify实时同步
rsync+inotify实时同步
|
监控 安全 Shell
使用 inotify 和 rsync 实现文件实时同步
使用 inotify 和 rsync 实现文件实时同步
308 1
|
监控 Linux
配置inotify + rsync 实现实时同步
配置inotify + rsync 实现实时同步
268 0
配置inotify + rsync 实现实时同步
|
监控 测试技术 Linux
rsync+inotify实时同步案例
rsync+inotify实时同步案例 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。
1266 0
|
监控 安全 Shell
inotify+rsync实现实时同步
1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 1.2 实现实时同步的方法    inotify+rsync 方式实现数据同步    sersync 方式实现实时数据同步 详情参照:http://www.cnblogs.com/clsn/p/7707828.html 1.2.1 实时同步原理介绍   1.3 inotify+rsync 方式实现数据同步 1.3.1 Inotify简介   Inotify是一种强大的,细粒度的。
1852 0
|
Web App开发 监控 网络协议