4

目前,我正在检查树中每个文件的修改文件时间(来自 fstat 的 st_mtime)的 XOR 校验和。我将它与找到的文件数量和文件大小校验和(允许溢出)结合起来是安全的,但我非常偏执地认为这可能并且会在最极端的病理情况下导致误报。

我正在考虑的一个替代(安全)选项是按名称和文件内容的 CRC32 保留每个文件的清单。但是,此选项非常慢,或者至少比我想要的许多文件(比如说数千个)要慢。

所以问题是,您可能有哪些提示或技巧来确定目录树中的任何文件是否已更改?我想避免逐字节比较而不牺牲太多可靠性。

非常感谢您的建议。

4

1 回答 1

2

您可以使用文件具有的“最后修改时间”属性(无论平台如何)。

只需经常存储历史值并对照当前值检查历史值。

boost::filesystem 有一个很好的跨平台 API 来读取这个值。

编辑:具体看: http ://www.pdc.kth.se/training/Talks/C++/boost/libs/filesystem/doc/operations.htm#last_write_time

于 2011-03-23T22:25:17.940 回答