2016-07-27 4 views
0

私はWindows OS用のバックアップアプリケーションを開発しています。まず、フルバックアップを取って、ファイル全体をバックアップメディアにコピーします。次に、増分バックアップを取っている間に、前回のフルバックアップが取られた後でファイルに加えられた変更だけを見つける必要があります。この目的のために、同じファイルの2つのバージョン間のブロックレベルまたはディスクレベルの変更を判断する必要があります。 FileSystemWatcher https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspxクラスについて調べましたが、変更が完了したときに通知するだけです。それは私にファイルのブロックレベルの変更を提供しません。これを達成する他の方法はありますか?同じファイルの2つのバージョン間のブロックレベルまたはディスクレベルの変更を見つけるにはどうすればよいですか?

+0

http://www.daemonology.net/bsdiff/ –

+1

ほとんどのファイル(オフィス文書、画像、ビデオなど)は、インプレースでは変更されませんが、保存すると新しい一時ファイルが作成されますに書き込むと、古いファイルが削除され、新しいファイルの名前が変更されます。データベースなどのレコードベースのアプリケーションだけが、ファイルを上書きします。 –

+1

それはおそらく努力の価値はありません。 1日に1〜2回、増分バックアップを使用して毎週(または毎月)完全バックアップを実行するとします。増分バックアップのために変更されたすべてのファイルについて、最後の完全バックアップに戻って、古いバージョンのファイルをそのバックアップから一部の作業スペースにコピーしてから、それぞれのコピーにその変更を適用する必要があります。フルバックアップ後に行われたすべての増分バックアップ - 新しい差分を見つけるために、再作成されたファイルの内容とバックアップしようとしているファイルの内容を比較します。それは少なくとも*トリプル*バックアップIOのニーズになります。 –

答えて

0

すべての書き込み操作(ファイルシステムに行くIRP)は、発生する前と正常に実行された直後に追跡する必要があります。これは、ファイルシステムフィルタドライバの助けを借りて行われます。 C言語で自分自身を作成することも、.NET、C++、Delphi用のドライバとユーザーモードのAPIを含むCallbackFilter製品を使用することもできます。

関連する問題