updatedb
Что делает команда updatedb в Linux
Команда updatedb является частью пакета mlocate, который отвечает за создание и поддержание индекса файловой системы. Индекс позволяет выполнять быстрый поиск по именам, типам и атрибутам файлов без сканирования всей дисковой структуры каждый раз. При запуске updatedb система перечитывает дерево каталогов, обновляет метаданные и сохраняет их в базе данных /var/lib/mlocate/mlocate.db.
updatedb с правами суперпользователя только при необходимости, так как он требует чтения всех файловых систем, включая защищённые.Как использовать updatedb в практических сценариях
1. Полное обновление базы данных
sudo updatedbЭта команда без параметров сканирует все доступные файловые системы, за исключением тех, которые явно указаны в файле /etc/updatedb.conf. После завершения вы получите сообщение вида:
Updated database in 0.12 seconds.Проверка актуальности индекса позволяет быстро найти файл после его добавления или перемещения.
2. Ограничение сканируемых каталогов
Можно указать конкретные пути через опцию --prunepaths и --localpaths. Например:
sudo updatedb --prunepaths=/tmp,/var/tmp \
--localpaths=/home/user/Documents,/opt/softwareЭта команда обновит только каталоги /home/user/Documents и /opt/software, игнорируя временные директории. Это полезно, когда вы хотите минимизировать нагрузку на систему.
3. Установка параметров в конфигурационном файле
Файл /etc/updatedb.conf содержит параметры:
PRUNEPATHS="/tmp /var/tmp"
LOCAL_PATHS="/home/user/Documents"Изменив эти строки, вы задаёте правила для всех последующих запусков updatedb. Не забывайте перезапускать службу (если она настроена как cron‑задача), чтобы изменения вступили в силу.
4. Интеграция с системным планировщиком
Для обеспечения актуальности индекса часто используют cron‑задания:
# /etc/cron.daily/mlocate
0 2 * * * root updatedbЭтот скрипт будет запускаться ежедневно в 02:00, обновляя базу без участия пользователя. При необходимости можно изменить расписание на более частое выполнение.
Как проверить актуальность индекса
После выполнения updatedb вы можете убедиться, что база данных действительно содержит нужные файлы:
locate -i myfile.txtОпция -i делает поиск нечувствительным к регистру. Если файл найден, значит индекс обновлён корректно.
Советы по работе с updated
--no-guess-macros, чтобы ускорить сканирование за счёт отключения некоторых эвристик./var/lib/mlocate/mlocate.db. При чрезмерном размере можно выполнить updatedb --no-recurse для исключения глубоких каталогов.Частые вопросы и ответы
| Вопрос | Ответ |
|---|---|
| Как узнать, какие каталоги игнорируются? | Откройте /etc/updatedb.conf и посмотрите переменные PRUNEPATHS и LOCAL_PATHS. |
| Можно ли обновлять только часть индекса? | Да, через --prunepaths или --localpaths. |
| Что делать, если база повреждена? | Удалите /var/lib/mlocate/mlocate.db и запустите sudo updatedb. |