目录校验和
Directory checksum
本文关键字:校验和 更新时间:2023-10-16
我有80个文件的目录,我想检查目录的校验和。
我想验证目录的内容是否与最新版本匹配。
我使用实时系统,因此需要高效。
我找到了一些文件检查功能。
我的问题是:我可以在不循环所有文件的情况下进行校验和目录吗?
一种可能的解决方案是维护一个特殊的(隐藏)文件,在该文件中,您可以在其中修改每个文件,并在更改文件时进行更新。然后将该文件的哈希作为目录的哈希。这不会阻止计算所有文件的校验和,而是在更改文件时减少工作量。如果您需要制作DIR的快照,那么您别无选择,但需要签到每个文件。
注意:您可以考虑避免加密哈希,除非您有很强的要求不能伪造它们。加密哈希相当缓慢且效率低下,这是故意的。
我不确定您的应用程序。MD5校验和通常用于精确度优于速度的情况(或给出犯规的其他障碍。)
)在速度为king的构建系统中,文件约会通常用于评估目录平等。例如,给定最新目录是:filesystem::path foo
,所讨论的目录是:filesystem::path bar
您可以简单地评估:
equal(filesystem::directory_iterator(foo), filesystem::directory_iterator(), filesystem::directory_iterator(bar), filesystem::directory_iterator(), [](const auto& lhs, const auto& rhs) { return filesystem::last_write_time(lhs) == filesystem::last_write_time(rhs); })
实时示例
关于这个单线的一些注释:
- 这不是递归功能,它仅评估
foo
和bar
之内的日期 - 如果您是使用目录,Visual Studio的
last_write_time
实现似乎与目录有问题 - 例如,在构建系统中,这比MD5校验和可以将lambda中的
==
更改为<
具有巨大的优势
相关文章:
- 如何用尽可能少的数据将数据缓冲区计算为零校验和值
- 计算校验和的逐位运算符
- 如何从存储在 QByteArray 中的十六进制值计算校验和
- 如何在 c++ 中计算对象的哈希/校验和/指纹?
- C++文件传输的校验和算法
- 如何从 IP 校验和字段中计算十六进制值
- 计算句子的校验和(XOR)(由不同变量/类型的组合形成)
- 目录校验和
- 编译后如何计算某些二进制功能(或基本块)的校验和
- PMS5003带有ESP8266-许多校验和错误
- 未正确的校验和释放对象 - 打印时错误
- 将C++校验和函数转换为 Java
- 确定是否使用boost.asio计算UDP校验和
- 校验和CRC 16从C 到Java
- 不同的CRC32校验和同一文件
- Qt,tcp/ip通信校验和
- 正在计算ICMP数据包校验和
- 错误的校验和错误遍布程序
- 如何计算 dmg 文件上的主校验和和数据分叉校验和
- C++中的校验和