2013-01-16 29 views
-1

我有很多的小(10KB - 1MB)在許多文件夾,例如結構文件(約10M):腳本10M記錄中查詢,發現修改過的文件

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

(文件存儲在USB3.0 1TB硬盤的文件總數約700MB大小)

而且同一磁盤上的數據庫文件哈希(微軟Access 2007年):

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

每天我都需要計算每個文件的散列和得到改變的文件列表(S )(如果存在)。

如何編寫適當的算法以最小化腳本工作時間?我猜有幾個瓶頸:

  • 磁盤I/O - 如何優化磁盤讀取?
  • 數據庫讀取問題 - Access如何處理10M行表?
  • CPU - 我需要並行散列計算嗎?
  • 我更喜歡C#,但也許我需要另一種語言?
  • 計算dir而不是文件的哈希值更有效嗎?

還有什麼?

回答

1

不要重新發明輪子 - md5deep/hashdeep已經存在多年了,完全是這樣。它是跨平臺的,將在Windows上運行,並且可以作爲來自C#的外部進程調用。

+0

謝謝。我希望得到這個答案。 – taofos