rsync+inotify实时数据同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync+inotify实时数据同步相关的知识,希望对你有一定的参考价值。

Remote Sync,远程同步

1,rsync命令用法
格式:rsync [选项..] 源目录 目标目录
区别:同步与复制的差异
复制:完全拷贝源到目标
同步:增量拷贝,只传输变化过的数据

2,本地同步
rsync [选项..] 本地目录1 本地目录2 #把目录1同步到目录2下
rsync [选项..] 本地目录1/ 本地目录2 #把目录1下的数据同步到目录2下
-a :归档模式,相当于-rlptgoD
-v :显示详细信息
-z :传输过程中启用压缩/解压
-n :测试同步过程,不做实际修改 #与-avz连用
--delete :删除目标文件夹内多余的文档 #与-avz连用

3,远程同步
rsync+ssh
--命令
rsync [email protected]:远程目录/ #列出ssh服务端资源
rsync [选项..] [email protected]:远程目录 本地目录 #下行(下载) 不常用
rsync [选项..] 本地目录 [email protected]:远程目录 #上行(上传) 常用
-a :归档模式,相当于-rlptgoD
-v :显示详细信息
-z :传输过程中启用压缩/解压
-n :测试同步过程,不做实际修改 #与-avz连用
--delete :删除目标文件夹内多余的文档 #与-avz连用
提示:同步目录时在目录后加/,表示同步目录里的数据;同步目录不加/,表示同步此目录。

4,实现实时同步
1)部署公钥、私钥,实现ssh无密码验证
[[email protected] /]# ssh-keygen #虚拟机A生成公钥、私钥 一路回车
[[email protected] /]# ls /root/.ssh #公钥、私钥生成的位置
id_rsa id_rsa.pub known_hosts
[[email protected] /]# ssh-copy-id [email protected] #传递公钥到目标主机(入虚拟机B)
[[email protected] ~]# ls /root/.ssh #查看上传到虚拟机B的公钥
authorized_keys #上传到客户机的公钥文件

2)inotify实时同步
--源码安装inotify-tools工具,实现监控目录内容的变化
[[email protected] /]# mkdir /myrpm
[[email protected] /]# tar -xf /tools/inotify-tools-3.13.tar.gz -C /myrpm #减压
[[email protected] /]# yum -y install gcc make #安装编译环境gcc make
[[email protected] /]# cd /myrpm/inotify-tools-3.13/
[[email protected] inotify-tools-3.13]# ./configure #生成Makefile文件
[[email protected] inotify-tools-3.13]# make #编译成二进制文件
[[email protected] inotify-tools-3.13]# make install #安装
[[email protected] inotify-tools-3.13]# which inotifywait #查看命令位置
/usr/local/bin/inotifywait

--inotifywait基本用法
inotifywait [选项] 目标文件夹
-m :持续监控(捕获一个事件后不退出)
-r :递归监控,包括子目录及文件
-q :减少屏幕输出信息
-qq:无屏幕输出信息
-e :指定监控的modify move create delete attrib等事件类别

3)书写shell 脚本
--利用while循环来实现反复检查单次监控
语法:
while [ 条件 ]
do
循环执行
done

--实现
#vim /jluocc/rsync.sh
#/bin/bash
while inotifywait -rqq /opt
do
rsync -az --delete /opt/ [email protected]:/opt #同步本地opt目录下的数据到另一台主机的/opt目录下
done
#chmod +x /jluocc/rysnc.sh #给脚本执行权限
#/jluocc/rsync.sh #运行脚本达到实时数据同步

4)实现开机运行数据同步脚本
#vim /etc/rc.local #打开系统开机默认运行文件
/jluocc/rsync.sh #在文件里写入刚才写的脚本的绝对路径
#chmod +x /etc/rc.local #rc.local默认没有执行权限,需要赋予执行权限

5,总结
rsync:实现数据同步
inotifywait:实现监控指定目录下的数据变化,发生变化返回相应结果
shell脚本:实现inotifywait实时监控,一旦数据变化,将实现rsync数据同步,达到数据的实时同步

以上是关于rsync+inotify实时数据同步的主要内容,如果未能解决你的问题,请参考以下文章

inotify+rsync实现实时同步

inotify和rsync实现数据实时同步

0基础linux运维教程 Rsync结合inotify实现数据实时同步

rsync+inotify实时同步

Linux三阶段之四:实时同步(inotify+rsync,sersync+rsync)

(转)rsync+inotify实时同步