2

多くのフォルダーで約 2 テラバイトのデータを処理することになっているバックアップ ユーティリティを作成しようとしています。

ファイルが作成/編集/削除されたときに、できればファイルの移動や名前の変更時にファイルに対してアクションを実行したい。

私は fanotify をいじりましたが、ファイル編集でしか機能しないことに気付きました。そして、できれば inotify を使用することに反対しています。なぜなら、最大のファイル監視を編集する必要があるからです。これはやりたくないことです。それは私が推測するパフォーマンスに大きな影響を与えるでしょう。

その下にあるすべてのファイルに対して再帰的に機能する単一のファイルウォッチを設定することをお勧めします。これを経験したことがあり、良い方法が何かを知っている人はいますか? inotify を使用して、パフォーマンス ヒットだけを取得する必要がありますか? または、私が取ることができる別のアプローチはありますか?

4

2 に答える 2

2

ディレクトリ ツリーの変更を再帰的に監視する方法はないと思います。一方、inotify では、監視するディレクトリごとに 1 つのファイル記述子を作成する必要はありません。単一の inotify オブジェクトを作成し、多くのディレクトリを追加します。inotify_add_watch

int inotify_add_watch(int fd, const char *pathname, uint32_t mask);
于 2016-09-02T10:59:11.087 に答える
0

小さな RAMDrive 用のポーリング バックアップ アプリケーションを作成しました。いくつかの問題を修正して復元した経験がたくさんあります。私は一般的にポーリングのファンではありませんが、Windows を使用しており、std.file ライブラリは古くなっています。Windows 10 では、lib 5 メジャー バージョンが遅れています。そのため、移植性について心配する必要はありません。

私は 2 つのモードを計画していました。アクティブ モードとスリープ モードは、ディスクが無意味にスピン ダウンするのを防ぐため、より長い時間に切り替えてスピン ダウンを維持できるようにします。検出と修復についてはまだ考え始めたばかりで、中規模レプリケーションの ZFS ソリューションはナイーブに思えます。なぜなら、WinRAR ではアーカイブでこれを実行できるからです。

1 か月前に新しいコンピューターを購入しましたが、まだファイルをバックアップしようとしています。phobos、つまり std.anything の使用に注意してください。std.file' のコピーは作成時刻を変更しますが、これは復元されたファイルでは正しくありません。コピー後、古いファイルの作成時刻を読み取り、OS 関数を自分で呼び出して作成時刻を設定する必要があります。すべてのメタデータには Windows システム コールが付属しているため、Linux システム コールでデータの調査を開始するのに適しています。

今こそ、Python に戻って試してみる良い機会かもしれません: https://docs.python.org/3/library/pathlib.html スポイラー: 3.5.2 で壊れています。

于 2016-09-02T22:29:32.503 に答える