База данных updatedb на моем сервере debian (squeeze) работает довольно медленно.
*/.git/*
, */.svn/*
и подобное?PRUNEPATHS
?мой /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/"
...
РЕДАКТИРОВАТЬ:
/var/cache/locate/locatedb
locate /
перечислит все файлы и каталоги в базе данных (я просмотрел результаты, экспортировав их в файл: locate />/tmp/locatedb.txt
, скачайте этот txt-файл и найдите много бесполезного) Вы, вероятно, используете версию 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)