当在linux中写入/删除新文件时,是否有某种可触发的触发器?

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

不寻常的是,我只需要一个操作系统可触发的触发器(或类似的东西),可以用来自动启动rsync

有没有这种types的东西,还是一个简单的工具可以做到这一点?

rsync每一分钟都不是一个优雅的解决scheme的问题…我想调用rsync每次在任何一个服务器,在特定的文件夹中写入/删除文件…

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

更新:也许像gamin …?

谢谢 !

一杆

在回答这个问题时 ,我build议incron 。 以类似于cron的方式设置系统范围和用户特定的configuration文件是很容易的。 您可以指定在触发文件系统事件时将运行的脚本。 它使用Linux内核inotify API。 你可以看看它,看看它是否适合你。

DRBD似乎只会做你所需要的。 它在块设备级别工作,所以如果你不想为这个同步的数据维护一个单独的分区,你可以创build一个磁盘映像并挂载它的环回,使用DRBD保持与远程服务器同步。

尝试inotify 。 为了您的相对简单的要求,这应该是最适合的。

示例脚本:

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

或类似的东西。

通过inotify你可以访问这些事件:

  • 访问文件被访问
  • 修改 – 文件被修改
  • 属性 – 文件属性已更改
  • close_write – 文件在可写模式下打开后closures
  • close_nowrite – 在只读模式下打开文件后closures
  • closures – 文件closures,不pipe读/写模式
  • 打开文件被打开了
  • 移动 – 移动了目录中的文件
  • 创build – 在监视的目录中创build文件
  • 删除 – 在监视的目录中删除文件
  • delete_self – 观看的文件被删除
  • unmount – 卸载已存在监视文件的文件系统

这里明显的解决scheme是afs

在任何情况下,使用DRBD都会遇到各种各样的复杂情况,但节点之间具有高度连接性的小型局域网。

但是你可以使用inotify来推出自己的解决scheme