web-dev-qa-db-ja.com

一部のパスを除外してupdatedbを実行し、それらのパスの以前のインデックス付きコンテンツを削除しない方法は?

奇妙な質問がありますが、これが実行可能なものかどうかはわかりません。そのため、スーパーユーザーに質問しています:)

したがって、追加のパーティション用のマウントポイントを備えたファイルシステムがあると想像してください。

次のようなことを言う

/ drives/driveA/partitionA/drives/driveA/partitionB/drives/driveB/partitionA ...など。

現在、これらすべてのパーティションがそれぞれのマウントポイントにマウントされている場合、updatedbを実行すると、ファイルシステム内のすべてのコンテンツにインデックスが付けられます。良い。

今、私はある種の低消費、低ハードディスク摩耗のファイルサーバーをセットアップしようとしています。そこでは自動マウントを使用したいのですが、ファイルにインデックスを付けたいのですが、これらの追加でインデックスを実行したくないのです毎日運転します。

したがって、私が達成したいのは、一部のパス(私の場合は上記のパス)をインデックスから除外できるようにupdatedbを実行することですが、同時に、それらのパスに対してインデックスが付けられた以前のコンテンツを破棄することはありません。

updatebにはいくつかの「プルーニング」オプションがあり、インデックス作成プロセスから特定のパスを除外できます。ただし、これは、これらのパスに関連するすべてのコンテンツ情報を破棄することも意味します。代わりに、特定のパスを除外し、それらのパスで以前にインデックスが作成されたものを保持したいと思います。

誰かがmlocateでこれを達成する方法、またはこれに使用する他のツールを知っていますか?ありがとう

4
Pa_

複数のインデックスを作成する

Mlocateを使用して、複数のデータベースファイルを同時に検索します。除外したいものは、そもそもスキャンしないでください。マウントされた除外ルールとマウントされていない除外ルールを忘れて、重要な場所のインデックスを作成します。

提供された例は、わずかな労力で状況に採用できます...

一般的に、updatedbを使用して複数のインデックスファイルを作成し、それらを同時に、または必要な頻度で1つずつ更新できます(たとえば、crondを使用)。

グローバル/etc/updatedb.confがある場合は、独自のインデックスを持つパスを除外することをお勧めします。同じ場所を複数回スキャン(インデックスを作成)すると、スキャン(検索)中に複数の結果が得られるためです。同じ場所。

すべての場所のバイナリ「辞書」を作成した後、シェルで関数を構成します。

 function fooLocate {
/usr/bin/locate\
-d /var/tmp/default.mlocate.db\
-d/my-stuff/mlocate-index2.db $ @ 
} 

関連ドキュメント

man updatedbあまりにも)

manlocate *スクロールスクロールスクロール*

-d、-database DBPATH 
デフォルトのデータベースをDBPATHに置き換えます。 DBPATHは、
データベースファイル名の:-区切りリストです。 (...)
 
空のデータベースファイル名はデフォルトのデータベースに置き換えられます。データベース
ファイル名-標準入力を参照します。データベースは、標準入力から
を1回だけ読み取ることができることに注意してください。

#updatedb -o /home/jaroslav/.locate/media-music.db -U/mnt/media/media/\ 
-n images\
-n movies\
-n Steamapps\
-n pr0n -v 
 
#locate -i glass -d /home/jaroslav/.locate/media-music.db | wc -l 
 35 
#locate -i glass -d /home/jaroslav/.locate/media-music.db\
-d/var/lib/mlocate/mlocate .db | wc -l 
 363