2016-07-27 19 views
0

我正在開發Windows OS的備份應用程序。首先,我進行完整備份並將整個文件複製到備份介質。接下來,在進行增量備份的同時,我只需要查找在完成上一次完整備份後對文件所做的更改。爲此,我需要確定同一文件的兩個版本之間的塊級別或磁盤級別更改。我檢查了FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx類,但它只是在更改完成時通知我。它不提供文件的塊級更改。有沒有其他方法可以實現這一點?如何在相同文件的兩個版本之間查找塊級別或磁盤級別更改?

+0

這可能是你感興趣的:http://www.daemonology.net/bsdiff/ –

+1

大多數文件(辦公文檔,圖像,視頻等)不會在原地進行修改,但保存後會創建一個新的臨時文件,寫入,然後刪除舊文件並重命名新文件。只有基於記錄的應用程序才能覆蓋文件。 –

+1

這可能是不值得的努力。設想一下每週(甚至每月)完整備份,每天一次或兩次增量備份。對於任何增量備份已更改的每個文件,都必須返回上一次完整備份,將舊版本的文件從該備份複製到某個工作空間,然後將更改應用於每個備份中的副本在完整備份後進行的每次增量備份 - 然後將重新創建的文件內容與您要備份的內容進行比較,以便找出新的差異。那至少會有* triple *備份IO需求。 –

回答

0

您需要跟蹤所有寫入操作(IRP進入文件系統),然後才能發生,並且在執行成功後立即執行。這是在文件系統過濾器驅動程序的幫助下完成的。您可以使用C語言自己創建一個,也可以使用我們的CallbackFilter產品,該產品包含用於.NET,C++和Delphi的驅動程序和用戶模式API。