通常、フルディスクスキャンを実行し、システム内のすべてのファイルを処理するプログラムがある場合、実行に非常に長い時間がかかります。なぜupdatedbは比較してそれほど速く動作しないのですか?
答えは、使用しているlocate
のバージョンによって異なりますが、それが mlocate
である可能性は十分にあります。このupdatedb
は、ディスク全体のスキャンを行わないことですばやく実行されます。
mlocateは、locate/updatedbの実装です。 「m」は「マージ」の略です。updatedbは既存のデータベースを再利用して、ほとんどのファイルシステムの再読み取りを回避します。これにより、updatedbがより高速になり、システムキャッシュを無駄にすることがなくなります。
(データベースには、各ディレクトリのタイムスタンプ、ctime
またはmtime
のどちらか新しい方が格納されます。)
updatedb
のほとんどの実装と同様に、mlocate
も無視するように構成されているファイルシステムとパスをスキップします。デフォルトでは、mlocate
の場合はありませんが、通常、ディストリビューションは基本的なupdatedb.conf
これは、ネットワーク化されたファイルシステム、仮想ファイルシステムなどを無視します(たとえば、 Debianの構成ファイル を参照してください。これは、Debianの標準的なプラクティスであるため、GNUのupdatedb
は 同様に構成されています )。
変更時間のチェックに加えて、mlocate
は、/ etc/updatedb.confで指定されている(および man updatedb .conf ):