フルスキャンを実行しないことでupdatebをより速く実行する方法(mtimeではない可能性があります)

フルスキャンを実行しないことでupdatebをより速く実行する方法(mtimeではない可能性があります)

完全なチェックを避けることで、アップデートはどのように非常に迅速に実行できますか?親フォルダの mtime は、サブフォルダのファイルの影響を受けません。

存在するupdatedbなぜプログラムはそんなに速く実行されますか?

@hugomg 実際にはそうではないと思います。直系親のmtimeのみを変更する必要があります。 – @クサラナンダ

検索しましたが、答えが見つかりませんでした。

ベストアンサー1

初めて実行するときにupdatedbすべてのディレクトリを検索しない方法はありません。

ただし、後続のスキャンでは、ディレクトリがデータベースmtimeの以前のエントリと比較して変更されていない場合、locate新しいファイルや新しいサブディレクトリはありません。したがって、ディレクトリ全体をスキャンするのではなく、以前のupdatedbデータベースを使用してすべての項目について学びます。既存のサブディレクトリの名前 - ディレクトリ。したがって、mtimeこれらのサブディレクトリを直接確認し、同じ規則を適用できます。

つまり、ファイルシステムがupdatedb最後の実行以降に変更されていない場合は、データベースにすでに存在するすべてのディレクトリエントリをupdatedb確認し、変更されていないことを確認するだけです。stat()mtime

変更されたディレクトリにのみmtime完全なディレクトリ検索が必要です。これにより、新しいファイル、名前が変更された、または削除されたファイル、リンク、およびサブディレクトリが検索されます。新しい/名前が変更されたサブディレクトリが見つかった場合は、そのサブディレクトリも完全に検索する必要があります。

おすすめ記事