¿Cómo consigo que mlocate solo indexe ciertos directorios?

23

Me gustaría usar mlocate en mi servidor Ubuntu, pero solo para indexar ciertos directorios (por ejemplo , /homey /data, pero no todo debajo /). Sin embargo, la configuración estándar de mlocate funciona de manera opuesta; Usted especifica las rutas que desea eliminar (con PRUNE_PATHS).

¿Hay alguna manera fácil de lograr esto, o alguna utilidad similar que haga lo que quiero? (nota: debe mantener un índice como mlocate, por findlo que no es aceptable, por ejemplo) Gracias.

Andrew Ferrier
fuente

Respuestas:

16

Puede usar la opción -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-o escribe en el archivo de salida

-l 0 hace que puedas leerlo, de lo contrario solo es accesible para localizar

Entonces puedes usarlo como:

locate -d /home/user/databasefile Dylan

-d establece la ruta de la base de datos

Para usar mlocate con más de un directorio raíz, simplemente cree dos archivos de base de datos y use localizar con dos opciones de ruta de base de datos como esta:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Para resumir y responder la pregunta más específica:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan
Janghou
fuente
Votación positiva, ya que esta es una respuesta parcial. Sin embargo, solo permite incluir una ruta en la lista blanca. Mi pregunta era específicamente sobre cómo incluir en la lista blanca más de una ruta.
Andrew Ferrier
1
Mejoró la respuesta y para un manejo más fácil, sugiero crear un alias
Janghou
¡buena respuesta! No me di cuenta de que podía buscar en dos bases de datos en paralelo, gracias por la aclaración. ¡Voy a marcar esto como aceptado a menos que llegue una mejor respuesta!
Andrew Ferrier
Es updatedb -l 0 -U /home/user/musicrecursivo? No parece estar en mi caso
Gaia
22

Edite el archivo /etc/updatedb.conf

Configure PRUNEPATHScon los directorios que NO desea buscar

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Una lista de nombres de ruta de directorios separados por espacios en blanco que no deben ser escaneados por updatedb. Cada nombre de ruta debe estar exactamente en la forma en que se localizaría el directorio. Por defecto, no se omiten rutas.

Tenga en cuenta que toda la información de configuración anterior también se puede cambiar o actualizar a través de las opciones de línea de comandos de la utilidad updatedb.

LnxSlck
fuente
No, eso es exactamente lo contrario de lo que quiero. Esto indexará todo excepto esos directorios.
Andrew Ferrier
Puede configurar PRUNEPATHS con todo excepto sus directorios. De esta manera, solo escaneará sus directorios.
LnxSlck
OK, gracias por la edición clarificadora. Eso es poco práctico, porque a medida que agrego subdirectorios junto con los directorios que quiero indexar, tendré que recordar agregarlos a PRUNEPATHS. Sin embargo, funcionaría. Gracias por la sugerencia.
Andrew Ferrier
Sí, lo sé, pero no puedo encontrar mucha información sobre mlocate para hacerlo. ¿No puedes usar algo como encontrar?
LnxSlck
No, tengo muchos datos, por lo que es importante que estén indexados. Han aclarado en cuestión.
Andrew Ferrier
1

Encontré algo más que podrías probar:

  1. QuickSearch - "Así que mi SearchTool usa una forma diferente: usa el comando 'ls' para enumerar el contenido de la carpeta buscada, luego realiza la búsqueda en esa salida. De esta manera la velocidad de búsqueda es muy rápida (excepto la primera vez que tiene que hacer el 'ls' output) ".

No estoy muy seguro acerca de la indexación.

  1. Utilice la herramienta tracker-gui
  2. Bastante cojo solución sudo encontrar "coloque sus directorios de búsqueda aquí"> files.list grep 'filename' files.list
LnxSlck
fuente
Intenta no agregar múltiples respuestas. Si es necesario, edite la respuesta existente e incluya más información. Gracias.
jokerdino
Sí, lo haré
LnxSlck