inotify 是 Linux 系统中的一个内核子系统,它可以监控文件系统事件,如文件的创建、修改、删除等。rsync 是一个用于在本地和远程之间同步文件的工具。将 inotify 与 rsync 配合使用,可以实现实时的文件同步。
以下是一个简单的示例,展示如何使用 inotifywait(inotify 的一个命令行工具)和 rsync 配合实现实时同步:
inotify-tools 包,它包含了 inotifywait 命令。在基于 Debian 的系统上,可以使用以下命令安装:sudo apt-get install inotify-tools
在基于 RHEL 的系统上,可以使用以下命令安装:
sudo yum install inotify-tools
sync.sh 的 shell 脚本,并添加以下内容:#!/bin/bash
# 源目录和目标目录
src_dir="/path/to/source/directory"
dest_dir="/path/to/destination/directory"
# 使用 inotifywait 监控源目录中的文件变化
inotifywait -m -r -e create,modify,delete --format '%w%f' "${src_dir}" | while read file
do
# 当检测到文件变化时,使用 rsync 同步文件
rsync -avz --delete "${src_dir}/" "${dest_dir}"
done
请将 /path/to/source/directory 和 /path/to/destination/directory 替换为实际的源目录和目标目录。
sync.sh 脚本添加可执行权限:chmod +x sync.sh
sync.sh 脚本:./sync.sh
现在,每当源目录中的文件发生变化时,inotifywait 会检测到这些变化,并触发 rsync 同步文件到目标目录。
注意:这个示例仅用于演示目的,实际使用中可能需要根据需求进行调整。例如,可以考虑将 rsync 命令放入后台运行,以避免阻塞 inotifywait。此外,还可以考虑使用更高级的工具,如 rsyncd 或第三方实时同步工具(如 Unison 或 Syncthing)。