4

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

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

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

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

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

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

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

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

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

1 ответ1

3

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

Используйте 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 тоже)

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

-d, --database DBPATH
  Replace the default database with DBPATH. DBPATH is a :-separated list of
  database file names. (...) 

  An empty database file name is replaced by the default database. A database
  file name - refers to the standard input. Note that a database can be read 
  from the standard input only once.

пример

# 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .