完全なチェックを避けることで、アップデートはどのように非常に迅速に実行できますか?親フォルダの mtime は、サブフォルダのファイルの影響を受けません。
存在するupdatedb
なぜプログラムはそんなに速く実行されますか?
@hugomg 実際にはそうではないと思います。直系親のmtimeのみを変更する必要があります。 – @クサラナンダ
検索しましたが、答えが見つかりませんでした。
ベストアンサー1
初めて実行するときにupdatedb
すべてのディレクトリを検索しない方法はありません。
ただし、後続のスキャンでは、ディレクトリがデータベースmtime
の以前のエントリと比較して変更されていない場合、locate
新しいファイルや新しいサブディレクトリはありません。したがって、ディレクトリ全体をスキャンするのではなく、以前のupdatedb
データベースを使用してすべての項目について学びます。既存のサブディレクトリの名前 - ディレクトリ。したがって、mtime
これらのサブディレクトリを直接確認し、同じ規則を適用できます。
つまり、ファイルシステムがupdatedb
最後の実行以降に変更されていない場合は、データベースにすでに存在するすべてのディレクトリエントリをupdatedb
確認し、変更されていないことを確認するだけです。stat()
mtime
変更されたディレクトリにのみmtime
完全なディレクトリ検索が必要です。これにより、新しいファイル、名前が変更された、または削除されたファイル、リンク、およびサブディレクトリが検索されます。新しい/名前が変更されたサブディレクトリが見つかった場合は、そのサブディレクトリも完全に検索する必要があります。