Bru*_*uno 5 windows disk-space-utilization block-level
我有个问题 :)
我想确定整个磁盘或特定文件在块级别发生了多少变化。
理想情况下,有一种工具可以在磁盘或文件上运行扫描,并为每个块生成“指纹”,然后能够在稍后阶段比较这些指纹,以得出自上次扫描以来发生更改的块的数量。
有没有人有任何想法?任何人都可以建议任何工具,命令行实用程序吗?
更新
我找到了以下项目:
https://github.com/OctopusDeploy/Octodiff
这是 rdiff 工具的 C# 实现,它本身基于 rsync 算法,基本上符合我所希望的。
现在我需要的是一个无需写出增量文件即可输出数据更改统计信息的工具。
我不会讨论太多细节,并且我意识到这是一个 Windows Server 问题,但我会向您指出两个我认为可能适合您的目的的方向。
1) 您可以使用日志文件系统,并捕获日志条目,因为它们碰巧生成了一个不完美但非常接近的近似值,即在特定时间片中进行了多少更改。然后,您可以使用一些数学来确定块级别的更改,以达到相当高的准确度。
许多日志文件系统允许您将日志本身放置在与数据完全不同的存储块上,因此您可以想象将其(例如使用 XFS)放置在大块存储上,然后在时间片上分析日志一个单独的工具或观察者。
我没有提到这种方法的很多可能性......天空是极限。
2) 如果您需要在块级别上的时间片 (1) 与时间片 (2) 在更改/未更改方面的实际准确映射,我可能会考虑使用 DRBD 和两个单独的只读从属设备(或软件 RAID 1) ,这会更容易,并且在 Windows Server 上是可能的,但更多的物理限制).. 在时间 (a) 引入然后断开连接。然后在时间 (b) 引入第二个块,然后断开连接,然后使用您希望的任何类型的工具进行静态比较。您只需从两个源读取每个块并进行异或。如果结果大于零,则它发生变化。