Я хотел бы использовать mlocate на моем сервере Ubuntu, но только для индексирования определенных каталогов (например, /home
и /data
, но не всех в /
). Однако стандартная конфигурация mlocate работает противоположным образом; Вы указываете пути, которые хотите удалить (с помощью PRUNE_PATHS
).
Есть ли какой-нибудь простой способ добиться этого или какая-либо аналогичная утилита, которая будет делать то, что я хочу? (примечание: он должен поддерживать индекс как mlocate
, поэтому find
неприемлем, например) Спасибо.
Вы можете использовать опцию -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
Я нашел что-то еще, что Вы могли попробовать:
Не очень уверенный в индексации.
Отредактируйте файл /etc/updatedb.conf
Настройте PRUNEPATHS
с каталогами, которые вы НЕ хотите искать
PRUNEPATHS="/tmp /var/spool /media"
PRUNEPATHS
: список имен путей, разделенных пробелами из каталогов, которые не должны быть проверены updatedb. Каждое имя пути должно быть точно в форме, в которой каталог будет сообщаться с помощью locate. По умолчанию пути не пропускаются.
Обратите внимание, что вся вышеуказанная информация о конфигурации также может быть изменена или обновлена с помощью параметров командной строки утилиты updatedb
.