【问题标题】:How to detect a file has been deleted如何检测文件已被删除
【发布时间】:2013-12-17 14:08:36
【问题描述】:

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

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

【问题讨论】:

    标签: linux fanotify


    【解决方案1】:

    根据linuxquestions.org thread fanotify 不检测文件替换或删除或子目录创建、重命名或删除。另请参阅baach.de discussion,它在其他文件或目录更改监视器中比较(或提及)inotify, dnotify, fam, Fanotify, tripwire, Python-fuse,llfuse (python)。

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

    编辑:inotify 网页中提到的限制或警告如下:

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

    【讨论】:

    • 我正在使用整个文件系统,但无论如何我都会从 inotify 中检查 IN_DELETE 和 IN_DELETE_SELF。为什么您认为将它用于整个文件系统并不实用?我想看看你的意见。
    • @RaydelMiranda,对于小型文件系统可能没问题,或者如果您可以逐步启动,但如手册页(见编辑)和 baach.de 讨论中所述,设置手表对于所有子目录可能需要一段时间。
    • 我没有从一开始就使用inotify,因为它不能递归地监控一个目录。 fanotify 可以,但仅限于在挂载点上工作时。见:stackoverflow.com/questions/19528432/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2023-04-11
    • 2017-01-27
    相关资源
    最近更新 更多