温馨提示×

Linux inotify与rsync如何配合使用

小樊
60
2025-09-27 09:06:04
栏目: 智能运维

inotify 是 Linux 系统中的一个内核子系统,它可以监控文件系统事件,如文件的创建、修改、删除等。rsync 是一个用于在本地和远程之间同步文件的工具。将 inotifyrsync 配合使用,可以实现实时的文件同步。

以下是一个简单的示例,展示如何使用 inotifywaitinotify 的一个命令行工具)和 rsync 配合实现实时同步:

  1. 首先,确保已经安装了 inotify-tools 包,它包含了 inotifywait 命令。在基于 Debian 的系统上,可以使用以下命令安装:
sudo apt-get install inotify-tools

在基于 RHEL 的系统上,可以使用以下命令安装:

sudo yum install inotify-tools
  1. 创建一个名为 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 替换为实际的源目录和目标目录。

  1. sync.sh 脚本添加可执行权限:
chmod +x sync.sh
  1. 运行 sync.sh 脚本:
./sync.sh

现在,每当源目录中的文件发生变化时,inotifywait 会检测到这些变化,并触发 rsync 同步文件到目标目录。

注意:这个示例仅用于演示目的,实际使用中可能需要根据需求进行调整。例如,可以考虑将 rsync 命令放入后台运行,以避免阻塞 inotifywait。此外,还可以考虑使用更高级的工具,如 rsyncd 或第三方实时同步工具(如 Unison 或 Syncthing)。

0