1

ハードドライブ全体をバックアップするソフトウェアを作成しようとしています。

ハードディスクのセクターから生データを読み取るためのコードを書くことができました。ただし、増分バックアップが必要です。そのためには、OS 設定の変更、ファイルの変更、すべてを知る必要があります。

私の質問は -

FileSystemWatcherInotifyを使用すると、ハード ドライブのすべてのセクタに加えられたすべての変更を知ることができますか? (OSの設定等)

LinuxおよびWindows用のC++でコーディングしています。

( Stackoverflowでこの質問を見て、いくつかのアイデアが得られました)

4

2 に答える 2

1

Inotify は、プログラムの実行中に変更を検出することです。FilySystemWatches も似ていると思います。

これを解決する 1 つの方法は、各セクターまたは複数のセクターにチェックサムを設定し、バックアップを作成するときに、チェックサムを既存のリストと比較し、変更されたバックアップ ブロックのみを比較することです。

于 2012-10-10T09:35:20.513 に答える
0

MS Windows のFileSystemWatcherメカニズムは、 Linux の Inotifyよりも制限されていますが、おそらくどちらも必要なことを実行します。Linux メカニズムは、ファイル読み取りの (オプションの) 通知を提供します。これにより、「アクセス タイムスタンプ」が更新されます。

ただし、アプリケーションの観点から見た弱点は、システムの起動からプログラムのロード (およびシャットダウンへのアンロード) までに行われたすべてのファイル変更が監視されないことです。対象とする監視のレベルによっては、変更されたファイルを特定するために、アプリケーションで多くのファイルのファイル変更タイムスタンプを調べなければならない場合があります。

どちらのアーキテクチャも、ファイルが最後にアクセスされたときを追跡する各ファイルのタイムスタンプを保持します。その更新がバックアップ通知のトリガーである場合、そのような通知がない Windows メカニズムにより、プラットフォームで不一致の動作が発生します。Windows のメカニズムでは、バッファ サイズの制限により、通知がドロップされることもあります。ドキュメントからの実際の宝石は次のとおりです。

Windows オペレーティング システムとの依存関係により、 FileSystemWatcherは、イベントが見逃された場合やバッファー サイズを超えた場合にErrorイベントを発生させないことに注意してください。イベントを見逃さないようにするには、次のガイドラインに従ってください。

  • InternalBufferSizeプロパティを使用してバッファー サイズを大きくすると、ファイル システム変更イベントの欠落を防ぐことができます。

  • 長いファイル名を持つファイルを監視しないでください。短い名前を使用して名前を変更することを検討してください。

  • イベント処理コードはできるだけ短くしてください。

少なくとも、これらのうちの 3 つのうち 2 つを制御できます....

于 2012-10-10T18:18:54.453 に答える