inotify 和 rsync 是两个非常强大的工具,可以配合使用来实现高效的文件同步。inotify 是 Linux 内核提供的一种文件系统事件监控机制,而 rsync 是一个快速且多功能的文件复制工具。通过结合这两个工具,你可以在文件发生变化时自动触发 rsync 进行同步。
以下是一个基本的步骤指南,介绍如何将 inotify 与 rsync 配合使用:
确保你的系统上已经安装了 inotify-tools 和 rsync。如果没有安装,可以使用包管理器进行安装。
在 Debian/Ubuntu 上:
sudo apt-get update
sudo apt-get install inotify-tools rsync
在 CentOS/RHEL 上:
sudo yum install epel-release
sudo yum install inotify-tools rsync
创建一个脚本来监控文件变化并触发 rsync 同步。以下是一个示例脚本:
#!/bin/bash
# 监控的源目录和目标目录
SOURCE_DIR="/path/to/source"
TARGET_DIR="/path/to/target"
# 使用 inotifywait 监控源目录的变化
inotifywait -m -r -e modify,attrib,close_write,move,create,delete --format '%w%f' "${SOURCE_DIR}" | while read FILE
do
# 当检测到文件变化时,执行 rsync 同步
rsync -avz --delete "${SOURCE_DIR}/" "${TARGET_DIR}"
done
chmod +x /path/to/your/script.sh
你可以手动运行这个脚本,或者将其放入后台运行:
nohup /path/to/your/script.sh &
inotifywait: 这是 inotify-tools 包中的一个工具,用于监控文件系统事件。
-m: 持续监控模式。-r: 递归监控子目录。-e: 指定要监控的事件类型,例如 modify, attrib, close_write, move, create, delete。--format '%w%f': 输出格式,显示发生变化的文件路径。rsync: 用于同步文件。
-a: 归档模式,保留符号链接、权限、时间戳等。-v: 详细模式,输出更多信息。-z: 压缩数据传输。--delete: 删除目标目录中存在但源目录中不存在的文件。通过这种方式,你可以实现实时的文件同步,确保源目录和目标目录始终保持一致。