在没有 inotify 的情况下观察目录树

Watching a directory tree without inotify

我正在尝试编写一个备份实用程序,该实用程序应该可以处理许多文件夹中大约 2 TB 的数据。

我希望它在文件收到时对文件执行操作 created/edited/deleted 最好还有文件移动或重命名。

我已经弄乱了 fanotify,才意识到它只适用于文件编辑。 如果可以的话,我反对使用 inotify,因为我将不得不编辑最大文件监视,而我不想这样做。 我认为这会对性能产生很大影响。

我最好只设置一个 filewatch,它递归地作用于它下面的所有文件。 有没有人有这方面的经验谁知道什么是好方法? 我应该去 inotify 并只承受性能损失吗? 或者我可以采取不同的方法吗?

我认为没有一种方法可以递归地监视目录树中的更改。另一方面,使用 inotify,您不需要为您监视的每个目录创建一个文件描述符。您创建一个单独的 inotify 对象,然后使用 inotify_add_watch

添加许多目录
int inotify_add_watch(int fd, const char *pathname, uint32_t mask);

我为一个微型 RAMDrive 写了一个轮询备份应用程序;我有大量修复已解决的问题的经验。我一般不喜欢轮询,但我使用的是 windows 和 std.file 库是古老的:Windows 10 使他们的库 5 主要版本落后;所以不用担心便携性。

我正在计划 2 种模式:活动模式和睡眠模式,这将防止磁盘在切换到更长的时间之前毫无意义地旋转一次,从而使它们保持旋转。我才刚刚开始考虑检测和修复,介质复制的 ZFS 解决方案似乎很幼稚,因为 WinRAR 允许您对存档执行此操作。

我一个月前买了一台新电脑,但我仍在尝试备份我的文件。小心使用 phobos,即 std.anything。 std.file'副本更改了创建时间,这对恢复的文件来说是不正确的;复制后需要读取旧文件的创建时间,自己调用OS函数设置创建时间;所有这些元数据都带有一个 windows 系统调用,因此这是开始研究 Linux 系统调用中的数据的好地方。

现在可能是重新访问 Python 并尝试的好时机:https://docs.python.org/3/library/pathlib.html 剧透:它在 3.5.2 中被破坏了。