rsync+inotify-tools实时同步数据
原创 青菜浪人 青菜浪人 2023-10-09 12:42 发表于陕西 听全文rsync是Linux系统下的数据镜像备份工具,可以在本地或远程系统之间同步文件和目录,支持增量备份,速度快,占用资源少,使用简单方便。
rsync特点
- 速度快,占用资源少。
- 可以使用scp、ssh等方式来传输文件也可以通过直接的socket连接。
- 支持拷贝特殊文件如链接,设备文件等
- 可以排除指定文件或目录
- 可以保持原来文件或目录的属性(权限、时间、软硬链接均不变)
安装rsync
- 安装方式
- 源码安装
- yum安装
官网下载地址:https://rsync.samba.org/
- 这里使用yum安装
dnf install rsync -y
同步命令
rsync -avz 本地目录A 本地目录B #同步整个目录A到目录B
rsync -avz 本地目录/A/ 本地目录B #只同步目录A下的数据到目录B
常用选项
--delete 删除目标目录下多余的文档
-v 显示详细操作信息
-z 传输过程中启用压缩/解压缩
-a 递归同步
本地同步
新建两个文件夹,在其中一个文件夹内复制多个文件后执行同步。
mkdir /lr
mkdir /lr2
rsync -avz /lr/ /lr1 #只同步lr文件夹内的文件到lr1文件夹内
修改ping.yml文件的内容,再次执行同步
- 可以看到,只同步了有修改的文件。
远程同步文件
rsync -avz /root/ [email protected]:/host1
由于我这里配置了ssh免密认证,所以是不需要输入密码的。
实时同步数据
rsync+inotify-tools
inotify-tools是由Red Hat开发的一款Linux文件系统监控工具,该工具高效率、细粒度、异步地对用户空间文件进行安全、高性能的监控。
下载地址:https://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz
- 配置同步主机之间免密登录
ssh-keygen
ssh-copy-id [email protected]
安装inotify-tools
- 解压源码包
#"z"表示使用gzip进行压缩和解压缩。
#"x"表示从归档文件中提取文件到当前目录。
#"v"表示在提取过程中显示详细信息,即输出过程。
#"f"表示指定要操作的归档文件名。
tar -zxvf inotify-tools-3.13.tar.gz
- 安装gcc依赖
dnf install gcc* -y
- 编译安装
#--prefix指定安装目录
./configure --prefix=/usr/local/inotify && make && make install
为主程序创建软链接
ln -s /usr/local/inotify/bin/inotifywait /usr/sbin/
ln -s /usr/local/inotify/bin/inotifywatch /usr/sbin/
inotify常用选项
-m 持续监控
-r 递归监控
-q 减少屏幕输出信息
-e 指定监控的属性(modify(修改)、move(移动,改名)、create(创建)、delete(删除)、attrib(权限))
- 编写实时监控脚本
#!/bin/bash
while true
do
inotifywait -rq -e modify,create,delete /lr/
rsync -avz --delete /lr/ [email protected]:/host1
done
当被监控的目录内新增、修改或删除文件时就会触发监控,实时同步到远程主机目录
- 向被监控的文件夹内复制新文件
- 此时就会触发监控,实时同步到远程主机目录
- 登录远程主机查看目录文件