rsync+inotify实现实时同步(小业务场景解决方案)

简介: 一、rsync功能介绍 rsync同步操作• 命令用法– rsync [选项...] 源目录 目标目录 • 同步与复制的差异– 复制:完全拷贝源到目标– 同步:增量拷贝,只传输变化过的数据 • 本地同步– rsync [选项.

一、rsync功能介绍

rsync同步操作
• 命令用法
– rsync [选项...] 源目录 目标目录

• 同步与复制的差异
– 复制:完全拷贝源到目标
– 同步:增量拷贝,只传输变化过的数据

• 本地同步
– rsync [选项...] 本地目录1 本地目录2
– rsync [选项...] 本地目录1/ 本地目录2
[root@svr7 ~]# mkdir /todir
[root@svr7 ~]# rsync -a /boot /todir //同步整个文件夹
[root@svr7 ~]# rsync -a /boot/ /todir/ //只同步目录下的数据

同步控制
• rsync操作选项
– -n:测试同步过程,不做实际修改
– --delete:删除目标文件夹内多余的文档
– -a:归档模式,相当于-rlptgoD
– -v:显示详细操作信息
– -z:传输过程中启用压缩/解压

二、inotify功能介绍

• 基本用法
– inotifywait [选项] 目标文件夹

• 常用命令选项
– -m,持续监控(捕获一个事件后不退出)
– -r,递归监控、包括子目录及文件
– -q,减少屏幕输出信息
– -e,指定监视的 modify、move、create、delete、attrib 等事件类别

三、rsync+ssh远程同步

与远程的 SSH目录保持同步
– 下行:rsync [...] user@host:远程目录 本地目录
– 上行:rsync [...] 本地目录 user@host:远程目录

四、实时远程同步

虚拟机A:
一、无密码验证
1.生成公钥 私钥验证

[root@svr7 /]# ssh-keygen     #一路回车
[root@svr7 /]# ls /root/.ssh

   /root/.ssh/known_hosts     #记录ssh远程客户端标识文件

2.传递公钥 到对方机器

[root@svr7 /]# ssh-copy-id root@192.168.4.207

3.测试无需密码

rsync -avz --delete /opt/  root@192.168.4.207:/opt/

二、目录内容的监控
1.安装 inotify-tools 控制工具可调用此机制实现监控
标准的源码、编译安装即可

[root@svr7 /]# tar -xf /root/tools.tar.gz -C /
[root@svr7 /]# ls /tools/

rpm包: 利用 yum rpm -ivh 进行安装

步骤1:安装gcc与make

[root@svr7 /]# yum -y install gcc make

步骤2:tar进行解包

tar -xf  /tools/inotify-tools-3.13.tar.gz  -C   /
ls /
cd /inotify-tools-3.13
ls

步骤3: ./configure 配置,指定功能模块等选项
检测系统是否安装gcc
--prefix=路径 #指定安装目录

cd /inotify-tools-3.13
 ./configure

常见错误提示:gcc软件没有安装
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.

步骤4:make 编译,生成可执行的二进制程序文件

cd /inotify-tools-3.13
make

步骤5:make install 安装,将编译好的文件复制到安装目录

cd /inotify-tools-3.13
make  install
[root@svr7 /]# which inotifywait     #查看是否具备该程序
/usr/local/bin/inotifywait
[root@svr7 /]# inotifywait -rq /opt/

三、书写Shell脚本

for循环 适合次数固定 的事件
while循环 适合死循环

 while  [条件]
  do
          循环执行的语句  
  done
[root@svr7 /]# vim /root/rsync.sh
  #!/bin/bash 
   while inotifywait -rqq /opt/
    do
       rsync -az --delete /opt/  root@192.168.4.207:/opt/
    done &

[root@svr7 /]# chmod +x /root/rsync.sh
相关文章
|
监控 Perl Shell
真正的inotify+rsync实时同步 彻底告别同步慢
我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题。但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法都尝试过,问题根本没有解决。
2651 0
|
监控 测试技术 Linux
rsync+inotify实时同步案例
rsync+inotify实时同步案例 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。
1256 0
|
监控 网络协议 网络安全
rynsc +sersync实时数据同步
转载:https://www.cnblogs.com/liangml/p/5959571.html 一.为什么要用Rsync+sersync架构 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。
1320 0
|
网络协议 Shell 应用服务中间件