用于在10M记录中检查和查找已修改文件的脚本

时间:2013-01-16 11:14:39

标签: optimization hash md5

我在很多文件夹中有很多小(10KB - 1MB)文件(大约10M)这样的结构:

 - LEVEL 1 
  - LEVEL 2
   - LEVEL 3
    - file 1;
    - file 2; 
    ...

(文件存储在USB3.0 1TB磁盘上。文件总大小约为700MB)

和文件哈希的同一磁盘(Microsoft Access 2007)上的数据库:

 file 1 - hash 1;
 file 2 - hash 2;
 ....

每天我需要计算每个文件的哈希并获取已更改文件的列表(如果存在)。

如何编写适当的算法以最小化脚本工作时间?我想有几个瓶颈:

  • 磁盘I / O--如何优化磁盘读取?
  • 数据库读取问题 - Access如何使用10M行表?
  • CPU - 我是否需要并行化哈希计算?
  • 我更喜欢C#,但也许我需要另一种语言?
  • 计算dir的哈希值而不是文件更有效吗?

还有别的吗?

1 个答案:

答案 0 :(得分:1)

不要重新发明轮子 - md5deep/hashdeep已存在多年,并且正是如此。它是跨平台的,可以在Windows上运行,可以作为C#的外部进程调用。