运维的那点事

rsync+inotify实时数据同步

2019-04-29  本文已影响43人  无字天书

一工具准备

操作系统:centos7

rsync:数据同步软件,linux系统自带

inotify:监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多

inotify链接:https://sourceforge.net/projects/inotify-tools/

或    https://pan.baidu.com/s/1zLHiX1kQFrTyf9RkclQ3yg     提取码:6quo

二语法格式

2.1,rsync命令用法

格式:rsync [选项..] 源目录 目标目录

区别:同步与复制的差异

复制:完全拷贝源到目标

同步:增量拷贝,只传输变化过的数据

2.2,本地同步

rsync [选项..] 本地目录1 本地目录2 #把目录1同步到目录2下

rsync [选项..] 本地目录1/ 本地目录2 #把目录1下的数据同步到目录2下

-a :归档模式,相当于-rlptgoD

-v :显示详细信息

-z :传输过程中启用压缩/解压

-n :测试同步过程,不做实际修改 #与-avz连用

--delete :删除目标文件夹内多余的文档 #与-avz连用

2.3,远程同步

rsync+ssh

--命令

rsync user@host:远程目录/ #列出ssh服务端资源

rsync [选项..] user@host:远程目录 本地目录 #下行(下载) 不常用

rsync [选项..] 本地目录 user@host:远程目录 #上行(上传) 常用

-a :归档模式,相当于-rlptgoD

-v :显示详细信息

-z :传输过程中启用压缩/解压

-n :测试同步过程,不做实际修改 #与-avz连用

--delete :删除目标文件夹内多余的文档 #与-avz连用

提示:同步目录时在目录后加/,表示同步目录里的数据;同步目录不加/,表示同步此目录。

2.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) inotifywait基本用法

inotifywait [选项] 目标文件夹

-m :持续监控(捕获一个事件后不退出)

-r :递归监控,包括子目录及文件

-q :减少屏幕输出信息

-qq:无屏幕输出信息

-e :指定监控的modify move create delete attrib等事件类别

3) inotify安装

[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

4)书写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 #运行脚本达到实时数据同步

5)实现开机运行数据同步脚本

#vim /etc/rc.local #打开系统开机默认运行文件

/jluocc/rsync.sh #在文件里写入刚才写的脚本的绝对路径

#chmod +x /etc/rc.local #rc.local默认没有执行权限,需要赋予执行权限

三总结

rsync:实现数据同步

inotifywait:实现监控指定目录下的数据变化,发生变化返回相应结果

shell脚本:实现inotifywait实时监控,一旦数据变化,将实现rsync数据同步,达到数据的实时同步


看官福利:


结束语:

更多精彩内容持续更新中,关注我,有你更精彩。

上一篇 下一篇

猜你喜欢

热点阅读