一尘不染

如何在Linux中监视整个目录树的更改?

linux

如何在Linux( ext3 文件系统)中监视 整个目录树 的更改? __

当前,该目录包含大约 3,000个子目录* 中的大约 一百万个文件 ,这些 文件 分为三个目录级别。 *

这些文件大多是小文件(<1kb,有些则最大100 kb)。这是一种队列,我需要知道在发生这种情况的5-10秒内何时创建,删除文件或修改其内容。

我知道这里有 inotify 和sorting,但是AFAIK它们只监视一个目录,这意味着我需要3,000个inotify句柄-
比单个进程允许的通常1024个句柄还要多。还是我错了?

万一Linux系统不能告诉我我需要什么:也许有一个
FUSE
项目可以模拟文件系统(在真实文件系统上复制所有文件访问权限)并单独记录所有修改(不能进行修改)吗?


阅读 238

收藏
2020-06-02

共1个答案

一尘不染

据我所知,除了inotify在每个目录上递归设置监视外,别无其他方法。

就是说,您将不会用完文件描述符,因为inotify不必保留fd来监视文件或目录(其前身dnotify确实遭受了此限制)。inotify而是使用“监视描述符”。

根据inotifywatch的文档,默认限制是8192个监视描述符,您可以通过将新值写入来增加它/proc/sys/fs/inotify/max_user_watches

2020-06-02