2

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

我希望它在文件被创建/编辑/删除时对文件执行操作,最好还有文件移动或重命名。

我搞砸了 fanotify,只是意识到它只适用于文件编辑。如果可以的话,我反对使用 inotify,因为我必须编辑最大文件监视,我不想这样做。我想这会对性能产生很大的影响。

我最好只设置一个文件监视,它可以递归地处理它下面的所有文件。有没有这方面经验的人知道什么是好方法?我应该去 inotify 并只接受性能打击吗?或者我可以采取不同的方法吗?

4

2 回答 2

2

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

int inotify_add_watch(int fd, const char *pathname, uint32_t mask);
于 2016-09-02T10:59:11.087 回答
0

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

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

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

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

于 2016-09-02T22:29:32.503 回答