Как запустить updatedb, исключая некоторые пути, но не удаляя предыдущий проиндексированный контент для этих путей?

У меня странный вопрос, и я не уверен, что это вообще что-то выполнимое, поэтому я задаю его SuperUser:)

Итак, представьте, что у вас есть файловая система с некоторыми точками монтирования для дополнительных разделов.

сказать что-то вроде

/ диски / диск A/ раздел A/ диски / диск A/ раздел B / диски / диск B / раздел A ... и т. д.

теперь, если все эти разделы смонтированы в соответствующих точках монтирования, при запуске updatedb будет проиндексирован весь контент в их файловой системе. Хорошо.

Теперь я пытаюсь настроить своего рода файловый сервер с низким потреблением и жестким диском, где я хотел бы использовать автомонтирование, где я хотел бы индексировать файлы, но где я не хочу запускать индексацию для этих дополнительных ездит каждый день.

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

я вижу, что updatedb имеет несколько опций "сокращения", которые позволяют исключить определенные пути из процесса индексации. Но это также подразумевает отказ от всей информации о содержании, связанной с этими путями. Вместо этого я хотел бы исключить определенные пути, сохранив то, что ранее уже было проиндексировано в этих путях.

У кого-нибудь есть идеи, как добиться этого с помощью mlocate, или какой другой инструмент использовать для этого? Спасибо

1 ответ

Решение

Создать несколько индексов

Используйте mlocate для поиска нескольких файлов базы данных одновременно. Все, что вы хотите исключить, не следует сканировать в первую очередь. Забудьте о правилах монтируемых и неустановленных исключений и создайте индексы для важных расположений.

Приведенный пример может быть адаптирован к вашей ситуации без особых усилий...

Вообще говоря, вы можете создать несколько индексных файлов с updatedb и обновлять их одновременно или по очереди так часто, как вы хотите (через crond, например).

Если существует глобальный файл /etc/updatedb.conf, то, вероятно, целесообразно исключить пути, которые будут иметь свои собственные индексы - поскольку сканирование (создание индекса) одного и того же местоположения более одного раза даст несколько результатов при сканировании (поиске) для поиска то же место

После создания двоичных "словарей" для всех местоположений настройте функцию в оболочке;

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

Соответствующая документация

(сделать man updatedb тоже)

человек найти * прокрутка прокрутка прокрутка *

DBDATH
  Замените базу данных по умолчанию на DBPATH. DBPATH - это:-отдельный список
  имена файлов базы данных. (...) 

  Пустое имя файла базы данных заменяется базой данных по умолчанию. База данных
  Имя файла - относится к стандартному вводу. Обратите внимание, что базу данных можно прочитать 
  со стандартного ввода только один раз.

пример

# updatedb -o /home/jaroslav/.locate/media-music.db -U /mnt/media/media/ \
    -n изображения \
    -n фильмы \
    -n steamapps \
    -n pr0n -v

# locate -i glass -d /home/jaroslav/.locate/media-music.db | туалет
35
# locate -i glass -d /home/jaroslav/.locate/media-music.db \
                  -d /var/lib/mlocate/mlocate.db  | туалет
363
Другие вопросы по тегам