Provided by:
manpages-es-extra_0.8a-17_all 
NOMBRE
locatedb - base de datos de cabecera comprimida de nombres de fichero
DESCRIPCI'ON
Esta pagina de manual documenta el formato de las bases de datos de
nombres de fichero para la version GNU de locate. La base de datos de
nombres de fichero contiene listas de los ficheros que estaban en los
arboles de directorios cuando se actualizaron la ultima vez las bases
de datos.
Puede haber multiples bases de datos. Los usuarios pueden seleccionar
en que bases de datos busca locate usando una variable de entorno, o
una opcion de linea de comando; ver locate(1L). El administrador de
sistema puede elegir el nombre de fichero de la base de datos por
defecto, la frecuencia con que se actualizan las bases de datos, y los
directorios para los que contienen entradas. Normalmente, las bases de
datos de nombres de fichero se actualizan al ejecutar el programa
updatedb periodicamente, tipicamente de noche; ver updatedb(1L).
updatedb ejecuta un programa llamado frcode para comprimir la lista de
nombres de fichero utilizando compresion de cabeceras, que reduce el
tamano de la base de datos por un factor de 4 a 5. La compresion de
cabeceras (tambien conocida por codificacion incremental) trabaja de la
forma que se explica a continuacion.
Las entradas de la base de datos son una lista ordenada (sin tener en
cuenta mayusculas y minusculas, para conveniencia de los usuarios).
Como la lista esta ordenada, es probable que cada entrada comparta un
prejijo (cadena de caracteres inicial) con la entrada anterior. Cada
entrada de la base de datos comienza con un byte de diferencia de
desplazamiento (offset-differential count byte), que es el numero
adicional de caracteres de prefijo de la entrada precedente a utilizar
mas alla del numero que esta utilizando la entrada precedente de su
propio predecesor. (El numero puede ser negativo). Tras el numero queda
un resto ASCII terminado en nulo -- la parte del nombre que sigue al
prefijo compartido.
Si la cuenta diferencial de desplazamiento es mayor que el que puede
guardarse en un byte (+/-127), el byte tiene el valor 0x80 y la cuenta
sigue en una palabra de 2 bytes, con el byte alto primero (orden de
byte de red).
Cada base de datos comienza con una entrada falsa a un fichero llamado
`LOCATE02', que locate comprueba para asegurarse que el fichero de base
de datos tiene el formato correcto; ignora la entrada al hacer la
busqueda.
Las bases de datos no pueden ser concatenadas juntas, aunque la primera
entrada (falsa) se elimine de todas las bases de datos excepto la
primera. Esto se debe a que las cuentas diferenciales en la primera
entrada de la segunda y siguientes bases de datos serian incorrectas.
Tambien hay un formato antiguo de base de datos, usado por los
programas locate y find de Unix y versiones anteriores a las de GNU.
updatedb ejecuta los programas llamados bigram y code para producir
bases de datos en el formato antiguo. El formato antiguo difiere de la
descripcion de arriba de las siguientes maneras. En vez de que cada
entrada empiece con un byte de cuenta diferencial de desplazamiento y
termine con un nulo, los valores del byte de 0 a 28 indican cuentas
diferenciales de desplazamiento de -14 a 14. El valor del byte que
indica una cuenta de desplazamiento larga es 0x1e (30), no 0x80. Las
cuentas largas se almacenan en el orden de byte de host, que no es
necesariamente el orden de byte de red, y con tamano de palabra de
entero de host, que normalmente son 4 bytes. Tambien representan una
cuenta inferior en 14 a su valor. Las lineas de la base de datos no
tienen byte de terminacion; el comienzo de la siguiente linea esta
indicado por su primer byte con valor <= 30.
Ademas, en vez de comenzar con una entrada falsa, el formato antiguo de
base de datos comienza con una tabla de 256 bytes que contiene los 128
bigramas mas comunes en la lista de ficheros. Un bigrama es un par de
bytes adyacentes. Los bytes de la base de datos que tienen el bit alto
a 1 son indices (con el bit alto borrado) a la tabla de bigramas. La
codificacion de bigramas y cuentas diferenciales de desplazamiento hace
estas bases de datos 20-25% mas pequenas que el nuevo formato, pero
hace que no tengan el bit 8 limpio. Cualquier byte de un nombre de
fichero que este en los rangos usados para los codigos especiales es
reemplazado en la base de datos por una interrogacion, que no es por
coincidencia el comodin de la shell para sustituir un caracter
cualquiera.
EJEMPLO
Entrada a frcode:
/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo
Longitud del prefijo mas largo a compartir de la entrada precedente:
0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo
Salida a frcode, con nulos al final cambiados a saltos de linea y bytes
de cuenta hechos imprimibles:
0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
-9 tmp/zoo
(6 = 14 - 8, y -9 = 5 - 14)
V'EASE TAMBI'EN
find(1L), locate(1L), locatedb(5L), xargs(1L) Finding Files (on-line en
Info, o impreso)
LOCATEDB(5L)