在Ubuntu系统中,inotify
是一个Linux内核子系统,它可以监控文件系统事件,如文件的创建、修改、删除等。而rsync
是一个用于在本地和远程之间同步文件的工具。将inotify
与rsync
结合使用,可以在文件发生变化时自动触发rsync
进行文件同步。
以下是使用inotifywait
(inotify
的一个用户空间工具)与rsync
结合使用的方法:
inotify-tools
包。如果没有安装,请运行以下命令进行安装:sudo apt-get update
sudo apt-get install inotify-tools
sync.sh
的脚本文件,并添加以下内容:#!/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
替换为实际的源目录和目标目录路径。
chmod +x sync.sh
./sync.sh
现在,每当源目录中的文件发生变化时,inotifywait
会检测到这些变化,并触发rsync
进行文件同步。
注意:这个脚本会一直运行,直到手动停止。如果你想在后台运行它,可以使用以下命令:
nohup ./sync.sh &
这将在后台运行脚本,并将输出重定向到nohup.out
文件。