设为首页 收藏本站
查看: 642|回复: 0

[经验分享] Rsync结合Inotify 实时同步配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-19 12:33:37 | 显示全部楼层 |阅读模式
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
[tmp]
path = /tmp//需要同步的目录
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 /tmp/ webuser@192.168.121.129::tmp





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


192.168.121.128源主机安装inotify 服务
下载安装
1
2
3
4
5
6
# wget http://nchc.dl.sourceforge.net/p ... y-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="/tmp/"#注意src如果为/tmp,将把tmp目录同步至目标主机,出现/tmp/tmp递归目录,所以需要同步那个目录下的文件,需要以/结尾。
host="192.168.121.129"
module="tmp"
/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 &





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316451-1-1.html 上篇帖子: Linux内核提权漏洞(CVE-2016-8655) 下篇帖子: brew安装php70出现configure: error: Cannot find libz 错误解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表