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

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

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

21
задан 6 July 2012 в 17:51

3 ответа

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

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

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

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

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

locate -d /home/user/databasefile Dylan

-d задает путь к базе данных

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

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
0
ответ дан 6 July 2012 в 17:51

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

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

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

  1. Используйте средство-отслеживания-gui инструмента
  2. Довольно хромое решение sudo находит "место Вашими поисковыми каталогами здесь"> files.list grep 'имя файла' files.list
1
ответ дан 6 July 2012 в 17:51

Отредактируйте файл /etc/updatedb.conf

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

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

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

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

0
ответ дан 6 July 2012 в 17:51

Другие вопросы по тегам:

Похожие вопросы: