rsync + inotify 实现数据监控同步

本文介绍了如何结合rsync和inotify工具实现实时数据同步。首先讲解了rsync的基本用法和远程同步实例,然后详细阐述了通过ssh无密码验证、源码编译安装inotify,以及编写shell脚本来监控目录变化。最后,配置了Rsync+Inotify的实时同步,包括主机配置、内核参数优化和脚本编写,用于在文件系统变动时自动触发同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、rsync 数据同步

同步与复制的差异:

复制:完全拷贝源文件到目标文件(cp scp(远程复制))

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

  1. rsync的命令用法:

rsync [选项] 源目录 目标目录

  1. rsync常用的操作选项:

-n:测试同步过程,不做实际修改

--delete: 删除目标文件内多余的文件

-a: 归档模式,表示以递归方式传输文件,并保持所有文件属性,相当于-rlptgoD

-v: 显示详细的操作信息

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

  1. 本地同步实例

# 在 / 下创建两个目录
[root@web1 ~]# mkdir /socdir    /destdir

# 在socdir目录中存放两个文件
[root@web1 ~]# cp /etc/passwd   /socdir/
[root@web1 ~]# touch /socdir/1.txt
[root@web1 ~]# ls /socdir/     # 查看 socdir 目录中有两个文件
1.txt  passwd

# 同步目录到目标文件夹中   注意: /socdir 写法 和   /socdir/ 写法
[root@web1 ~]# rsync -av /socdir    /destdir/   # 将整个源目录socdir都同步到目标目录destdir中
[root@web1 ~]# rsync -av /socdir/  /destdir/    # 将源目录中的文件同步到目标目录中

# --delete 参数,删除目标文件中多余的参数
[root@web1 ~]# touch /destdir/2.txt
[root@web1 ~]# touch /socdir/3.txt
[root@web1 ~]# rsync -av --delete /socdir/   /destdir/

3.远程同步实例

与远程的ssh目录保持同步

上行: rsync [.. ] 本地目录 user@host:远程目录

下行: rsync [....] user@host:远程目录 本地目录

# 虚拟机A中/socdir目录内容与虚拟机B中/test进行同步
# 虚拟机A中执行:
[root@web1 ~]# rsync -av --delete /socdir/   [email protected]:/test
[email protected]'s password:

# 虚拟机B中查看
[root@web2 ~]# ls /test

二、实时数据同步

rsync 和 inotify工具共同使用,当监控到源目录中的数据有变化时,立刻将其同步到目标目录中

环境:虚拟机A中/socdir目录内容与虚拟机B中/test进行同步

1.实现ssh无密码验证(公钥与私钥)

# 虚拟机A,生成公钥与私钥
[root@web1 ~]# ssh-keygen         #一路回车
[root@web1 ~]# ls    /root/.ssh/
id_rsa(私钥)   id_rsa.pub(公钥)    known_hosts(记录曾经远程管理过的机器)

2.虚拟机A上操作,将公钥传递给虚拟机B
web1]# ssh-copy-id     [email protected]
web1]#  rsync -av --delete /socdir/   [email protected]:/test

2.源码编译安装inotify

  1. wget 下载

  1. 下载后安装源码包:解压缩

./configure配置

make编译

make install 安装

# 源码编译安装步骤
# 步骤一:安装开发工具
]# yum   -y   install   make
]# yum   -y   install   gcc

# 步骤二:进行tar解包  
]# tar  -xf  /root/tools.tar.gz  -C   /usr/local/
]# ls   /usr/local/
]# ls   /usr/local/tools/

]# tar -xf   /usr/local/tools/inotify-tools-3.13.tar.gz   -C /usr/local/
]# ls   /usr/local/

# 步骤三:运行configure脚本进行配置
# 作用1:检测系统是否安装gcc  
# 作用2:可以指定安装位置及功能
]# cd    /usr/local/inotify-tools-3.13/  # 要cd到源码所在目录
]# ./configure     --prefix=/opt/myrpm       #指定安装位置

# 步骤四:make进行编译,产生可以执行的程序
]# cd    /usr/local/inotify-tools-3.13/
]# make

# 步骤五:make   install进行安装
]# cd    /usr/local/inotify-tools-3.13/
]# make    install

]# ls  /opt/myrpm/ 
]# ls  /opt/myrpm/bin/    # 查看编译后的程序文件
  1. 基本用法

inotifywait [选项] 目标文件夹

常用命令:

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

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

-q: 减少屏幕输出信息

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

4.书写一个shell脚本,监控一个目录的变化,有内容变化时,即进行同步数据

[root@svr7 /]# vim   /etc/rsync.sh  # 监控变化时同步
while   /opt/myrpm/bin/inotifywait    -rqe    /mydir/
do
rsync -a  --delete   /mydir/    [email protected]:/opt
done
[root@svr7 /]# chmod   +x    /etc/rsync.sh    #赋予执行权限
[root@svr7 /]# /etc/rsync.sh   &     #运行脚本程序
[root@svr7 /]# jobs  -l
[1]+ 17707 运行中               /etc/rsync.sh &
[root@svr7 /]# kill  17707      #停止脚本

rsync 服务的配置文件解析

  1. 配置环境

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值