您的位置:首页 > 其它

rsync+inotify实时数据同步

2018-11-02 20:15 501 查看

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

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

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

--inotifywait基本用法
inotifywait [选项] 目标文件夹
-m :持续监控(捕获一个事件后不退出)
-r :递归监控,包括子目录及文件
-q :减少屏幕输出信息
-qq:无屏幕输出信息
-e 5b4 :指定监控的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/ root@192.168.4.207:/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数据同步,达到数据的实时同步

< 38f8 /div>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rsync inotify 数据同步