监视linux中文件系统变化的最好方法

我正在研究构build一个监视文件系统活动的文件系统同步实用程序,但似乎Linux内核中的一些文件系统监视function已经过时或者没有完全显示。

我的研究发现

dnotify先来通知具有通知删除,修改,访问,属性,创build,移动可以确定文件描述符的function,但现在过时了inotify和fanotify

inotify出来第二个通知具有通知访问,修改,attrib,closures,移动,删除,创build等function,但它不给你一个文件描述符或过程,并会过时fanotify

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

我需要一种确定过程(例如从fd)和删除,修改,attribs等东西,以同步一切,有什么build议? 不幸的是,dnotify似乎是最好但最落伍的

你应该使用库而不是inotify和朋友 – 像FAMGamin (这是两个相同的API)。 这将使您的程序可移植到其他Unix。

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

我强烈不同意,fanotify会过时inotify。

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

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 $#