#journal #file-change #linux #fanotify #usn #watch

change-journal

一个针对 Linux 和 Windows 的统一变更日志 API,允许您监视整个文件系统、挂载点以及/或卷的文件变更事件。它使用 Linux 上的 fanotify 和 Windows 上的 USN 日志。

1 个不稳定版本

0.1.0 2020 年 10 月 26 日

#1571文件系统

MIT 许可证

5KB

变更日志

此库为 Linux 和 Windows 提供了一个统一的变更日志 API。也就是说,它允许您监视整个文件系统、挂载点以及/或卷的文件变更事件。

在 Linux 上,它使用 fanotify API。

在 Windows 上,它使用 USN 日志 API。

目前,两个后端都不受支持。首先将添加 Linux 的 fanotify 后端,然后是 Windows 的 USN 日志后端。

权限

在 Linux 上,使用 fanotify 需要具有 CAP_SYS_ADMIN 权限(即 sudo)。

在 Windows 上,读取 USN 日志需要管理员权限。

支持的操作系统

fanotify 需要 Linux 支持,它添加在 Linux 内核版本 2.6.37 中。然而,许多有用的 fanotify 操作仅在 Linux 内核版本 5.1 中添加。

NTFS USN 日志在 Windows 上已经存在很长时间了,至少从 Windows 7 开始。对于此版本,不应该有任何问题。

macOS 目前不受支持,主要是因为此库可以启用的实时文件搜索功能已经被 Spotlight 非常好地满足了。

路线图

  • file-descriptors crate 贡献或分叉以包含对较新 fanotify API/标志的支持。不需要真正的新代码,只需添加新的标志。

  • 使用 file-descriptors crate 实现 fanotify 后端。

  • 实现 USN 日志后端。

  • 与文件搜索程序(如 lolcate)集成,以提供实时文件系统监控,从而无需执行缓慢的手动索引。

依赖项

~0.3–1MB
~19K SLoC