ディレクトリ内の一連のファイルを処理するユーティリティがあります-プロセスは比較的遅い(そしてファイルがたくさんある)ため、「最後に」を持つファイルのみを処理することでプロセスを最適化しようとしました最終処理日より後で変更されました」。
通常、これはうまく機能しますが、ファイルをコピーしても最終更新日は変更されないため、変更された特定のファイルがプロセスによってスキップされるファイルのコピーに関するさまざまなシナリオがあることがわかりました。たとえば、次のようになります。
- ユーザーは 9:00 にディレクトリを処理します。
- 次に、ファイルがこのディレクトリからコピーされ、最終変更日が 9:30 になるように変更されます。
- その後、ディレクトリは 10:00 に再度処理されます
- 変更されたファイルは、10:30 にディレクトリにコピーされます。
- 最後に、ディレクトリは 11:00 に再度処理されます
指定されたファイルの変更日は 9:30 で、ディレクトリが最後に処理されたのは 10:00 であるため、ファイルはスキップされるべきでない場合にスキップされます。
残念ながら、上記は特定の状況 (ソース管理などの共同作業環境など) で非常に頻繁に発生する傾向があります。明らかに私の論理には欠陥があります。私が本当に必要としているのは、「最後に変更またはコピーされた」日付です。そのようなものは存在しますか?
それに失敗した場合、特定のファイルが変更されたかどうかを合理的な信頼性で迅速に判断する別の方法はありますか?