4

現在、ツリー内のすべてのファイルについて、変更されたファイル時間 (fstat の st_mtime) の XOR チェックサムをチェックしています。これを、見つかったファイルの数とファイルサイズのチェックサム(オーバーフローを許可する)と組み合わせて安全にしていますが、これが最も極端な病理学的ケースで誤検知につながる可能性があることを非常に心配しています。

私が検討している代替の (安全な) オプションの 1 つは、すべてのファイルのマニフェストを名前とファイルの内容の CRC32 で保持することです。ただし、このオプションは非常に遅いか、少なくとも多くのファイル (数千としましょう) では必要以上に遅いです。

質問は、ディレクトリ ツリー内でファイルが変更されたかどうかを判断するためのヒントやコツは何ですか? 信頼性をあまり犠牲にすることなく、バイトごとの比較を避けたいと思います。

ご提案いただきありがとうございます。

4

1 に答える 1

2

(プラットフォームに関係なく)ファイルが持つ「最終変更日」プロパティを使用できます。

履歴値を保存し、履歴値を現在の値と照合するだけです。

boost :: filesystemには、この値を読み取るための優れたクロスプラットフォームAPIがあります。

編集:具体的に見てください: http ://www.pdc.kth.se/training/Talks/C++/boost/libs/filesystem/doc/operations.htm#last_write_time

于 2011-03-23T22:25:17.940 に答える