locate (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи locate. Дата последней синхронизации: 13 сентября 2024. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

locate — это распространённый инструмент Unix для быстрого поиска файлов по имени. Он работает быстрее чем find благодаря поиску в предварительно созданном файле базы данных, а не непосредственно в файловой системе. Недостатком этого подхода является то, что изменения в файловой системе, сделанные с момента создания файла базы данных, locate не увидит. Влияние этой проблемы можно уменьшить путём обновления базы данных по расписанию.

Со временем появлялись и сменяли друг друга разные реализации: slocate (secure locate), которая показывала только доступные пользователю файлы, mlocate (merging locate) которая объединяет базы данных при обновлении, что улучшает производительность, поскольку она может пропускать ранее просмотренные файлы, и ныне актуальная реализация plocate (posting locate), основанная на инвертированном индексе и создающая гораздо более быстрый (и меньший по размеру) индекс.

Установка

Установите пакет plocate.

Хотя GNU findutils также имеет свою реализацию locate, пакет findutils в Arch её не содержит.

Использование

Перед использованием locate(1)[устаревшая ссылка 2024-10-13] нужно создать базу данных. Это делается с помощью команды updatedb(8), которая (как следует из названия) обновляет базу данных.

Пакет plocate предоставляет юнит plocate-updatedb.timer, который запускает обновление базы данных каждый день и изначально включен после установки пакета. Запустите его вручную, если вы хотите использовать его до перезагрузки. Вы также можете вручную выполнить команду updatedb от имени root в любое время.

Для экономии времени updatedb может быть настроен (и по умолчанию настроен) на игнорирование определённых файловых систем и путей в файле /etc/updatedb.conf. Семантика этого файла описана в updatedb.conf(5). Стоит отметить, что среди путей, игнорируемых в настройках по умолчанию (PRUNEPATHS), есть /media и /mnt, поэтому locate может не обнаружить файлы на внешних устройствах.

Смотрите также