Как заставить mlocate индексировать только определенные каталоги?


23

Я хотел бы использовать mlocate на моем сервере Ubuntu, но только для индексирования определенных каталогов (например, /homeи /data, но не всего, что в /). Однако стандартная конфигурация mlocate работает противоположным образом; Вы указываете пути, которые хотите удалить (с помощью PRUNE_PATHS).

Есть ли какой-нибудь простой способ добиться этого или какая-либо аналогичная утилита, которая будет делать то, что я хочу? (примечание: он должен поддерживать такой индекс, как mlocate, например , findнеприемлемо). Спасибо.

Ответы:


16

Вы можете использовать опцию -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-o пишет в выходной файл

-l 0 означает, что вы можете прочитать его, в противном случае он доступен только для поиска

Затем вы можете использовать его следующим образом:

locate -d /home/user/databasefile Dylan

-d устанавливает путь к базе данных

Чтобы использовать mlocate с более чем одним корневым каталогом, просто создайте два файла базы данных и используйте команду locate с двумя параметрами databasepath, например так:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Подводя итог и ответьте на вопрос более конкретно:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan

Upvoting, так как это частичный ответ. Тем не менее, это позволяет только для белого списка один путь. Мой вопрос был конкретно о том, как внести в белый список более одного пути.
— Эндрю Ферье

1
Улучшенный ответ и для более легкой обработки я предлагаю создать псевдоним
— Janghou

хороший ответ! Я не знал, что вы можете искать в двух базах данных параллельно, спасибо за разъяснения. Я собираюсь отметить это как принятое, если не получится лучший ответ!
— Эндрю Ферье

Является ли updatedb -l 0 -U /home/user/musicрекурсивным? Кажется, не в моем случае
— Gaia

22

Редактировать файл /etc/updatedb.conf

Настройте PRUNEPATHSкаталоги, которые вы не хотите искать

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Разделенный пробелами список путей к каталогам, которые не должны проверяться updatedb. Каждое имя пути должно быть точно в форме, в которой каталог будет сообщаться с помощью locate. По умолчанию пути не пропускаются.

Обратите внимание, что вся приведенная выше информация о конфигурации также может быть изменена или обновлена ​​с помощью параметров командной строки утилиты updatedb.


Нет, это полная противоположность того, что я хочу. Это будет индексировать все, кроме этих каталогов.
— Эндрю Ферье

Вы можете установить PRUNEPATHS со всем, кроме ваших каталогов. Таким образом, он будет сканировать только ваши каталоги.
— LnxSlck

ОК, спасибо за разъяснения. Это немного непрактично, потому что, когда я добавляю подкаталоги наряду с каталогами, которые я хочу индексировать, мне нужно помнить, чтобы добавлять их в PRUNEPATHS. Тем не менее, это будет работать. Спасибо за предложение.
— Эндрю Ферье

Да, я знаю, но я не могу найти много информации о mlocate, чтобы сделать это. Разве вы не можете использовать что-то вроде поиска?
— LnxSlck

Нет, у меня много данных, поэтому важно, чтобы они были проиндексированы. Уточнили в вопросе.
— Эндрю Ферье

1

Я нашел что-то еще, что вы можете попробовать:

  1. QuickSearch - «Так что мой SearchTool использует другой способ: он использует команду« ls »для вывода списка содержимого искомой папки, а затем выполняет поиск по этому выводу. Таким образом, скорость поиска очень высокая (за исключением первого раза, когда он должен сделать вывод 'ls). "

Не очень уверен насчет индексации.

  1. Используйте инструмент tracker-gui
  2. Довольно слабое решение sudo найти "разместить ваши каталоги поиска здесь"> files.list grep 'filename' files.list

Старайтесь не добавлять несколько ответов. При необходимости отредактируйте существующий ответ и добавьте дополнительную информацию. Спасибо.
— Джокердино

Да, я сделаю это
— LnxSlck
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.