updatedb

Что делает команда updatedb в Linux

Команда updatedb является частью пакета mlocate, который отвечает за создание и поддержание индекса файловой системы. Индекс позволяет выполнять быстрый поиск по именам, типам и атрибутам файлов без сканирования всей дисковой структуры каждый раз. При запуске updatedb система перечитывает дерево каталогов, обновляет метаданные и сохраняет их в базе данных /var/lib/mlocate/mlocate.db.

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

Как использовать updatedb в практических сценариях

1. Полное обновление базы данных

Bash
sudo updatedb

Эта команда без параметров сканирует все доступные файловые системы, за исключением тех, которые явно указаны в файле /etc/updatedb.conf. После завершения вы получите сообщение вида:

Bash
Updated database in 0.12 seconds.

Проверка актуальности индекса позволяет быстро найти файл после его добавления или перемещения.

2. Ограничение сканируемых каталогов

Можно указать конкретные пути через опцию --prunepaths и --localpaths. Например:

Bash
sudo updatedb --prunepaths=/tmp,/var/tmp \
              --localpaths=/home/user/Documents,/opt/software

Эта команда обновит только каталоги /home/user/Documents и /opt/software, игнорируя временные директории. Это полезно, когда вы хотите минимизировать нагрузку на систему.

3. Установка параметров в конфигурационном файле

Файл /etc/updatedb.conf содержит параметры:

Bash
PRUNEPATHS="/tmp /var/tmp"
LOCAL_PATHS="/home/user/Documents"

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

4. Интеграция с системным планировщиком

Для обеспечения актуальности индекса часто используют cron‑задания:

Bash
# /etc/cron.daily/mlocate
0 2 * * * root updatedb

Этот скрипт будет запускаться ежедневно в 02:00, обновляя базу без участия пользователя. При необходимости можно изменить расписание на более частое выполнение.

Как проверить актуальность индекса

После выполнения updatedb вы можете убедиться, что база данных действительно содержит нужные файлы:

Bash
locate -i myfile.txt

Опция -i делает поиск нечувствительным к регистру. Если файл найден, значит индекс обновлён корректно.

Советы по работе с updated

Совет 1: При работе в окружениях с большим количеством файлов (например, серверы баз данных) рекомендуется использовать параметр --no-guess-macros, чтобы ускорить сканирование за счёт отключения некоторых эвристик.
Совет 2: Если вы заметили, что поиск медленно работает после обновления индекса, проверьте размер файла /var/lib/mlocate/mlocate.db. При чрезмерном размере можно выполнить updatedb --no-recurse для исключения глубоких каталогов.

Частые вопросы и ответы

ВопросОтвет
Как узнать, какие каталоги игнорируются?Откройте /etc/updatedb.conf и посмотрите переменные PRUNEPATHS и LOCAL_PATHS.
Можно ли обновлять только часть индекса?Да, через --prunepaths или --localpaths.
Что делать, если база повреждена?Удалите /var/lib/mlocate/mlocate.db и запустите sudo updatedb.