私は大きなファイルディレクトリツリーを持っています。私はしばしばこのfind
コマンドを使ってこのツリーで何かを見つけます。再起動後、最初は少し時間がかかりますが、その後の使用はほとんどすぐに行われます。find
再起動後に再生成する必要があるいくつかの内部データ構造が使用されているようです。
再起動の間にこのデータ構造を保存する方法はありますか?
追加情報:
- ディレクトリツリーのルートは常に同じですが、常にマウントされていない別のドライブにあります。
- 約50000個のファイルと約2000個のディレクトリがあります。
- 私は
-iregex
オプションを使うfind
答え1
find
2番目のコマンドを非常に高速にするのはカーネルファイルシステムキャッシュです。私が知っている限り、ファイルシステムキャッシュをダンプして復元する方法はありません。とにかく、キャッシュを最初にディスクに書き込んでから再読み込みすることは、find
コマンドを再実行するよりも遅いと予想されます。
答え2
ディレクトリツリーが比較的静的である場合(つまり、ファイルやディレクトリがほとんど作成または削除されない場合)、代わりに使用してみることができfind
ますlocate
。
locate(1) General Commands Manual locate(1)
NAME
locate - find files by name
SYNOPSIS
locate [OPTION]... PATTERN...
DESCRIPTION
locate reads one or more databases prepared by updatedb(8)
and writes file names matching at least one of the
PATTERNs to standard output, one per line.
If --regex is not specified, PATTERNs can contain globbing characters.
If any PATTERN contains no globbing characters,
locate behaves as if the pattern were *PATTERN*.
By default, locate does not check whether files found in database
still exist (but it does require all parent directories to exist
if the database was built with --require-visibility no).
locate can never report files created after the most recent
update of the relevant database.
…