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
相关文章
|
机器学习/深度学习 TensorFlow API
基于CNN的图像识别(Tensorflow)
基于CNN的图像识别(Tensorflow)
|
存储 对象存储
radosgw高可用对象存储网关实战指南
关于radosgw高可用对象存储网关的实战指南,涵盖了从基本概念到具体操作案例,再到架构设计和使用技巧的全面介绍。
441 6
|
JavaScript 前端开发
在 JavaScript 中,实现继承的方法有多种
【6月更文挑战第15天】JavaScript 继承常见方法包括:1) 原型链继承,利用原型查找,实例共享原型属性;2) 借用构造函数,避免共享,但方法不在原型上复用;3) 组合继承,结合两者优点,常用但有额外开销;4) ES6 的 class,语法糖,仍基于原型链,提供直观的面向对象编程。
138 7
|
存储 Unix Linux
LabVIEW与实时目标之间的FTP文件
LabVIEW与实时目标之间的FTP文件
519 0
|
Java Spring
java202304java学习笔记第六十天-ssm-spring配置文件-spring产生数据源对象2
java202304java学习笔记第六十天-ssm-spring配置文件-spring产生数据源对象2
145 0
|
算法 Java
JDK8到JDK19版本升级的新特性问题之在JDK12中,switch表达式扩展带来了什么变化
JDK8到JDK19版本升级的新特性问题之在JDK12中,switch表达式扩展带来了什么变化
150 0
|
存储 数据库
什么是网站空间
。这个空间允许网站在互联网上稳定运行,确保内容能够快速加载并在用户访问时可用。
194 1
|
XML 存储 JavaScript
黑马全套Java教程(十)(二)
黑马全套Java教程(十)
104 0
|
Windows
[✔️]让FFMpeg 在Win7上运行
[✔️]让FFMpeg 在Win7上运行
1400 0
|
Anolis 芯片 开发者
龙蜥开发者说:给芯片以系统、给系统以社区 | 第 17 期
每一次感受到社区设施逐渐完善的点滴里,收到专业、严谨的建议时,积极沟通的信息中,都感受到了社区的专业、认真、开放。
龙蜥开发者说:给芯片以系统、给系统以社区 | 第 17 期