当在 Linux 中写入/删除新文件时是否存在某种可捕获的触发器?

当在 Linux 中写入/删除新文件时是否存在某种可捕获的触发器?

我想要一个简单的工具来同步远程服务器上的两个文件夹......

从理论上讲,我只需要一个可用于自动触发 rsync 的 OS 可捕获触发器(或类似的东西)?

是否有类似的东西,或者有简单的工具可以做到这一点?

每分钟进行一次 rsync 根本不是一个完美的解决方案......我想在每次在任何一台服务器的特定文件夹中写入/删除文件时调用 rsync......

目标是轻松维护远程文件夹同步

更新:也许是类似野孩子... ?

谢谢 !

一杆

答案1

我对这个问题的回答, 我建议因克龙。设置系统范围和用户特定的配置文件的方式与 类似,非常简单cron。您可以指定在触发文件系统事件时运行的脚本。它使用 Linux 内核 inotify API。您可以查看它并查看它是否适合您。

答案2

尝试通知. 对于您的相对简单的要求,这应该是最适合的。

示例脚本:

while { inotifywait -e create -e delete /directory2watch; }; do
  echo rsync -avz /directory2watch
done

或类似的东西。

使用 inotify 您可以访问这些事件:

  • access – 文件已被访问
  • 修改 – 文件已被修改
  • attrib – 文件属性已改变
  • close_write – 文件以可写模式打开后关闭
  • close_nowrite – 文件以只读模式打开后关闭
  • close – 文件已关闭,无论读/写模式如何
  • open – 文件已打开
  • 移动 – 监视目录中的文件被移动
  • create – 在监视的目录中创建了一个文件
  • delete – 在监视的目录中删除了一个文件
  • delete_self – 监视的文件已被删除
  • unmount – 监视文件所在的文件系统已卸载

答案3

这好像是DRBD会满足您的需要。它在块设备级别工作,因此如果您不想为这些同步数据维护单独的分区,您可以创建一个磁盘映像并将其挂载回环,使用 DRBD 使所有内容与远程服务器保持同步。

答案4

这里显而易见的解决方案是安息香

除了在节点间连接性较高的小型 LAN 上使用 DRBD 之外,在其他任何设备上使用 DRBD 都存在各种各样的复杂情况。

但是你可以使用自己的解决方案通知

相关内容