Pregunta ¿Cómo puedo ver el contenido de la base de datos updatedb y luego excluir ciertos archivos / rutas?


La base de datos updatedb en mi servidor debian (squeeze) es bastante lenta.

  • donde se encuentra la base de datos
  • ¿Cómo puedo ver su contenido y descubrir si hay algunos caminos con cosas inútiles, que podría agregar a las rutas previas?
  • ¿Cómo puedo podar todas las rutas que contienen */.git/*, */.svn/* y similares?
  • ¿Por qué no se excluyen los archivos? PRUNEPATHS ?

mi /etc/updatedb.conf Se ve como esto:

...
# 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/"
...

EDITAR:

  • La base de datos de localización está en /var/cache/locate/locatedb
  • locate / listará todos los archivos y directorios en la base de datos (miré los resultados exportándolos a un archivo: locate />/tmp/locatedb.txt, descargue este archivo txt y encuentre gran cantidad de cosas inútiles)

5
2017-11-30 23:10


origen




Respuestas:


Probablemente esté utilizando la versión de localización de GNU findutils, que no es compatible con la opción PRUNENAMES. La instalación de mlocate proporcionará estas opciones de configuración:

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

Ahora con el paquete mlocate puede editar o crear /etc/updatedb.conf y agregar estas líneas:

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

Luego actualice la base de datos con:

updatedb

Probablemente puedas eliminar la enorme y antigua base de datos de localización:

rm /var/cache/locate/locatedb

(La base de datos mlocate se almacena en /var/lib/mlocate/mlocate.db)

Revisa https://apps.ubuntu.com/cat/applications/mlocate/ para más información sobre el paquete.

(¡Pasé una cantidad ridícula de tiempo tratando de resolver un problema similar!)


5
2017-10-08 22:15



Tuve un problema después de instalar mlocate directamente: pastebin.com/FLdZLXwJ - Parece que el archivo de configuración de mlocate no comprende todas las opciones que tiene la ubicación - rubo77
Interesante. Cuando instalé GNU findutils find por alguna razón, no había una página de manual para updatedb.conf, así que no sé qué es exactamente compatible con esa versión, pero la página de manual de mlocate's updatedb.conf dice "/etc/updatedb.conf es un script de shell en algunas implementaciones ", pero aparentemente no en esta implementación en particular. Parece que solo soporta las variables PRUNEFS, PRUNENAMES, PRUNEPATHS y PRUNE_BIND_MOUNTS. - JasonCG


Utilizar PRUNENAMES como se indica en man updatedb.conf

Una lista de nombres de directorio separados por espacios en blanco (sin rutas)   que no debe ser escaneado por updatedb (8). Por defecto, no   los nombres de directorio se omiten.

El uso de

PRUNENAMES=".git .hg .svn"

debe hacer el truco (por encima de la línea es el valor estándar en Fedora 18).


6
2017-12-01 01:02



PRUNENAMES no está en mi /etc/updatedb.findutils.cron.local - rubo77
... y tampoco en el hombre updatedb. Yo uso debian squeeze - rubo77
@ rubo77 Prueba el updatedb.confLa página de manual, como se especificó, entonces. - Michael Hampton♦
Esto no parece funcionar. donde tengo que agregar prunenames? yo añadí PRUNENAMES=".git .hg .svn" y export PRUNENAMES en /etc/updatedb.findutils.cron.local y creó un enlace a /etc/updatedb.conf también. entonces llamado updatedb pero aun así todo .svn/* los archivos son encontrados por locate .svn - rubo77
¿Algunas ideas? Todavía parece que PRUNENAMES y PRUNEPATHS se ignoran completamente en mi servidor debian squeeze. localizar todavía muestra todos los archivos de /var/backups/rsnapshot - rubo77


locate / listará todos los archivos y directorios en la base de datos.


3
2017-11-30 23:35





¿Por qué no se excluyen los archivos? Los definí en PRUNEPATHS

Aunque el problema del OP terminó siendo la versión / PRUNENAMES, como una alternativa / adición al rastreo a través de la salida db de localización, la ejecución de updatedb manualmente con el indicador --debug-pruning imprime las decisiones individuales de poda a stderr, y es realmente útil para rastrear la poda problemas

Por ejemplo, péguelo en un archivo (como root en este caso):

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

Salida de muestra:

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

etc

(Estoy usando mlocate)


1
2018-01-04 23:00