2013-12-17 131 views
2

我正在编写一个程序来监视文件系统。但是我无法检测到文件被删除的时间。我尝试使用FAN_MARK_ONLYDIR标志进行监视,希望fanotify在删除受监视目录中的文件时引发一些事件,但没有结果。如何检测文件已被删除

这甚至可以做到这一点使用fanotify?有什么可以帮助我做到这一点?

回答

3

根据linuxquestions.org threadfanotify未检测到文件替换或删除或子目录的创建,重命名或删除。另请参见baach.de discussion,该文件与其他文件或目录更改监视器进行比较(或提及)inotify, dnotify, fam, Fanotify, tripwire, Python-fuse,llfuse(python)。

inotify支持IN_DELETEIN_DELETE_SELF事件,如果您使用的目录数量有限,而不是整个文件系统,则可以使用。

编辑:inotify限制或在其网页上提到的注意事项有以下几点:

inotify监控目录不是递归:监控目录下的子目录,必须创建额外的手表。这对于大型目录树可能会花费大量时间。 ...如果监视整个目录子树,并且在该树中创建了新的子目录,请注意,当您为新子目录创建监视时,可能已经在该子目录中创建了新文件。因此,您可能希望在添加手表后立即扫描子目录的内容。

+0

我正在处理整个文件系统,但我会从inotify中检查IN_DELETE和IN_DELETE_SELF。为什么你认为将它用于整个文件系统并不实际?我想读你的意见。 –

+0

@RaydelMiranda,它可能适用于一个小文件系统,或者如果你可以做一个渐进的启动,但如手册页(见编辑)和baach.de讨论中指出的那样,为所有子目录设置监视器可以采取而。 –

+0

我从一开始就没有使用inotify,因为它无法递归地监视目录。 fanotify确实如此,但只能在安装点上工作。参见:http://stackoverflow.com/questions/19528432/fanotify-recursivity-does-really-works/19543049#19543049 –

相关问题