inotify 是 Linux 系统中的一个内核子系统,它可以监控文件系统事件,如文件的创建、修改、删除等。要使用 inotify 实现文件同步,你可以编写一个程序来监听源目录中的变化,并在检测到变化时将文件复制到目标目录。以下是一个简单的示例,展示了如何使用 inotify 和 rsync 命令实现文件同步。
首先,确保你的系统已经安装了 inotify-tools 软件包,它包含 inotifywait 命令。在基于 Debian 的系统上,可以使用以下命令安装:
sudo apt-get 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 -av --delete "${file}" "${dest_dir}" done 在这个脚本中,我们使用 inotifywait 命令监听源目录中的创建、修改和删除事件。当检测到这些事件时,我们将发生变化的文件路径传递给 rsync 命令,以便将文件同步到目标目录。
确保脚本具有可执行权限:
chmod +x sync.sh 现在,你可以运行 sync.sh 脚本来启动文件同步:
./sync.sh 这个脚本将持续运行并监听源目录中的变化。当检测到文件发生变化时,它会自动将更改同步到目标目录。
请注意,这个示例仅用于演示目的。在实际应用中,你可能需要根据具体需求对脚本进行优化和调整。例如,你可以添加日志记录、错误处理等功能。