Назад | Перейти на главную страницу

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

База данных updatedb на моем сервере debian (squeeze) работает довольно медленно.

мой /etc/updatedb.conf выглядит так:

...
# filesystems which are pruned from updatedb database
PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"
export PRUNEFS
# paths which are pruned from updatedb database
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media /var/backups/rsnapshot /var/mod_pagespeed/"
...

РЕДАКТИРОВАТЬ:

Вы, вероятно, используете версию locate для GNU findutils, которая не поддерживает параметр PRUNENAMES. Установка mlocate предоставит следующие параметры конфигурации:

apt-get remove locate
mv /etc/updatedb.conf /etc/updatedb.conf-GNU.old
apt-get install mlocate

Теперь с помощью пакета mlocate вы можете отредактировать или создать /etc/updatedb.conf и добавить следующие строки:

PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /var/cache /media /usr/tmp /var/tmp /sfs /afs /amd /alex /var/backups/rsnapshot /var/mod_pagespeed"
# the paths in `PRUNEPATHS` must be without trailing slashes

Затем актуализируйте базу данных с помощью:

updatedb

Вы, вероятно, сможете удалить огромную старую базу данных локации:

rm /var/cache/locate/locatedb

(База данных mlocate хранится в /var/lib/mlocate/mlocate.db)

Проверять, выписываться https://apps.ubuntu.com/cat/applications/mlocate/ для получения дополнительной информации о пакете.

(Я потратил невероятное количество времени, пытаясь решить подобную проблему!)

Использовать PRUNENAMES как указано в man updatedb.conf

Список имен каталогов (без путей), разделенных пробелами, которые не должны сканироваться обновленнымb (8). По умолчанию имена каталогов не пропускаются.

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

PRUNENAMES=".git .hg .svn"

должен сработать (строка выше - стандартное значение в Fedora 18).

locate / перечислит все файлы и каталоги в базе данных.

почему файлы не исключаются, я определил в PRUNEPATHS

Хотя проблема OP в конечном итоге была версией / PRUNENAMES, в качестве альтернативы / дополнения к троллингу через вывод locate db, запуск updatedb вручную с флагом --debug-pruning выводит отдельные решения об обрезке в stderr и действительно полезен для отслеживания сокращения проблемы

Например, вставьте его в файл (в данном случае от имени пользователя root):

updatedb --debug-pruning > ~/updatedb_debug.log 2>&1 &

Пример вывода:

Matching bind_mount_paths:
...done
Checking whether filesystem `/boot' is excluded:
 `/', type `rootfs'
 `/proc', type `proc'
 => type matches, dir `/proc'
 `/run', type `tmpfs'
...
Checking whether filesystem `/mnt/windows' is excluded:
Checking whether filesystem `/proc' is excluded:
Checking whether filesystem `/run' is excluded:
...
Skipping `/dev/mqueue': in prunefs
Skipping `/dev/pts': in prunefs

и т.д

(Я использую mlocate)