rsync+inotify-tools 实时同步数据
rsync
是 Linux 系统下的一个强大数据镜像备份工具,它可以在本地或远程系统之间同步文件和目录。该工具支持增量备份,速度快,占用资源少,操作简单,广泛应用于数据备份和同步场景中。
rsync 的特点
- 速度快,占用资源少:支持增量同步,传输速度快。
- 多种传输方式:可以通过
scp
、ssh
等方式传输文件,也可以通过直接的socket
连接。 - 支持特殊文件类型:支持拷贝特殊文件,如链接、设备文件等。
- 灵活的文件过滤:可以排除指定的文件或目录。
- 保留文件属性:同步时可以保持原来文件或目录的属性(权限、时间、软硬链接等)。
安装 rsync
可以通过多种方式安装 rsync,如源码安装或使用包管理工具安装。本文选择使用 yum
安装:
dnf install rsync -y
rsync 常用命令
以下是一些常用的 rsync 命令示例:
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 /lr/ /lr1
可以看到,只同步了有修改的文件。
远程文件同步
使用 rsync
命令可以轻松实现远程主机之间的文件同步:
rsync -avz /root/ root@192.168.10.210:/host1
由于配置了 SSH 免密认证,上述命令可以不需要输入密码。
实时数据同步
rsync
配合 inotify-tools
实现实时数据同步。inotify-tools
是由 Red Hat 开发的 Linux 文件系统监控工具,能够高效监控文件系统的变化。
配置同步主机之间的免密登录
首先,在主机之间配置 SSH 免密登录:
ssh-keygen
ssh-copy-id root@192.168.10.210
安装 inotify-tools
解压源码包:
tar -zxvf inotify-tools-3.13.tar.gz
安装 GCC 依赖:
dnf install gcc* -y
编译安装:
./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/ root@192.168.10.210:/host1
done
当被监控的目录内新增、修改或删除文件时,该脚本将触发监控,并实时同步到远程主机目录。
测试同步
向被监控的文件夹内复制新文件,此时将触发监控,自动同步文件到远程主机目录。登录远程主机查看目录文件,验证同步结果。
以上是 rsync
结合 inotify-tools
实现实时同步数据的完整流程及示例脚本,希望对你有所帮助!