如何在Linux( ext3 文件系统)中监视 整个目录树 的更改? __
当前,该目录包含大约 3,000个子目录* 中的大约 一百万个文件 ,这些 文件 分为三个目录级别。 *
这些文件大多是小文件(<1kb,有些则最大100 kb)。这是一种队列,我需要知道在发生这种情况的5-10秒内何时创建,删除文件或修改其内容。
我知道这里有 inotify 和sorting,但是AFAIK它们只监视一个目录,这意味着我需要3,000个inotify句柄- 比单个进程允许的通常1024个句柄还要多。还是我错了?
万一Linux系统不能告诉我我需要什么:也许有一个 FUSE项目可以模拟文件系统(在真实文件系统上复制所有文件访问权限)并单独记录所有修改(不能进行修改)吗?
据我所知,除了inotify在每个目录上递归设置监视外,别无其他方法。
inotify
就是说,您将不会用完文件描述符,因为inotify不必保留fd来监视文件或目录(其前身dnotify确实遭受了此限制)。inotify而是使用“监视描述符”。
dnotify
根据inotifywatch的文档,默认限制是8192个监视描述符,您可以通过将新值写入来增加它/proc/sys/fs/inotify/max_user_watches。
/proc/sys/fs/inotify/max_user_watches