监视linux中文件系统更改的最佳方法

时间:2011-12-05 06:04:01

标签: linux filesystems inotify

我正在寻找构建一个监视文件系统活动的文件系统同步实用程序,但似乎linux内核中的某些文件系统监视功能已过时或功能不全。

我的研究结果

dnotify首先发布通知具有通知删除,修改,访问,属性,创建,移动可以确定文件描述符的功能,但现在已经过时了inotify和fanotify

inotify排在第二位,通知具有通知访问,修改,属性,关闭,移动,删除,创建等功能,但它不会给你一个文件描述符或进程,并且会被fanotify过时

fanotify是最新的通知访问,修改,关闭,但不通知删除或属性,但确实提供文件描述符

我需要一种方法来确定流程(例如来自fd)以及删除,修改,属性等等,以便同步所有内容,任何建议?不幸的是,dnotify似乎是最好但最过时的

3 个答案:

答案 0 :(得分:8)

您应该使用库而不是inotify和朋友 - 例如FAMGamin(这两者都是相同的API)。这将使您的程序可移植到其他Unix。

答案 1 :(得分:3)

有一个很好的lib提供 inotify 的文件描述符或进程。它有自己的C API和inotifywatch util(适用于脚本),都在inotify-tools包中。

我非常不同意fanotify会过时。“

FAM和gamin是非常好的服务器/客户端选项。他们都使用inotify作为过时的dnotify和民意调查的第一选择。我更喜欢gamin。

答案 2 :(得分:1)

incron是这样的操作的有用工具。您可以为要监视的目录或文件创建配置文件。

http://inotify.aiken.cz/?section=incron&page=about&lang=en

在ubuntu中

sudo apt-get install incron

/etc/incron.d/mynotification.conf

# notification for user creation
/home IN_ALL_EVENTS /opt/notify_user_created.sh $#