NOM¶
locatedb - Bases de données incrémentales de noms de fichiers
DESCRIPTION¶
Cette page de manuel documente le format des bases de noms de fichiers de la
version GNU de
locate. Les bases de données de noms de fichiers
contiennent des listes de fichiers qui étaient dans des arborescences
de répertoires particulières lors de la dernière mise
à jour des bases de données.
Il est possible d'avoir plusieurs bases de données. Les utilisateurs
peuvent sélectionner la base de données de recherche en
utilisant une variable d'environnement ou une option en ligne de
commande ; consultez
locate(1). L'administrateur système
peut choisir le nom du fichier de la base de données par défaut,
la fréquence des mises à jour et les répertoires à
référencer. Normalement, les bases de noms de fichiers sont
mises à jour en exécutant
updatedb périodiquement,
typiquement chaque nuit ; consultez
updatedb(1).
C'est le format par défaut des bases de données
générées par
updatedb.
updatedb
exécute un programme appelé
frcode afin de compresser la
liste des noms de fichier en utilisant «\ front-compression\ »
qui réduit la taille de la base de données d'un facteur 4
à 5. «\ Front-compression\ » (aussi connu sous le nom
d'« encodeur incrémental ») travaille comme
suit.
Les éléments de la base de données sont triés (sans
distinction des minuscules et des majuscules pour la convenance des
utilisateurs). Puisque la liste est triée, chaque entrée partage
probablement un préfixe (début du nom de fichier) avec
l'entrée précédente. Chaque entrée de la base de
données débute avec un octet de compteur de décalage
différentiel, composé du nombre de caractères
supplémentaires à ajouter par rapport au préfixe de
l'entrée précédente qui n'étaient pas
déjà partagés avec le prédécesseur. (Les
compteurs peuvent être négatifs). Après le compteur, on
trouve le reste de la chaîne ASCII terminée par un
caractère nul, à savoir la partie du nom qui suit le
préfixe partagé.
Si le compteur de décalage différentiel est plus grand que la
valeur d'un octet (+/- 127), l'octet prend la valeur 0x80 (en binaire
10000000) et le compteur qui suit est un mot de 2 octets avec le poids fort en
premier (ordre des octets réseau). Ce compteur peut aussi être
négatif (le signe moins apparaissant dans le premier des deux octets).
Toute base de données débute avec une entrée factice d'un
fichier appelé « LOCATE02 » que
locate vérifie pour s'assurer que la base de données de
fichiers se trouve dans un format correct ; il ignore cette
entrée pendant les recherches.
Les bases de données ne peuvent pas être concaténées
ensemble même si la première entrée (factice) est
enlevée de toutes les bases de données sauf pour la
première. Cela est dû au compteur de décalage
différentiel de la première entrée de la seconde base de
données et des suivantes qui serait alors erroné.
A l'avenir, les données contenues dans la base de données de
locate pourraient ne plus être ordonnées d'une quelconque
façon. L'obtention de données triées nécessitera
l'utilisation d'un tube vers
sort -f.
Le programme
slocate utilise un format de données proche de celui
du
locate du GNU, quoique légèrement différent. Le
premier octet de la base de données indique le
niveau de
sécurité. Si ce niveau de sécurité est
à 0,
slocate lira, cherchera, et affichera les noms des fichiers
d'après les informations contenues dans la base. Toutefois, si le
niveau de sécurité est à 1,
slocate fera
disparaître de sa sortie les données auxquelles l'utilisateur ne
peut accéder réellement. Le second octet de la base de
données est zéro. Ce second octet est suivi par la
première valeur contenue dans la base de données. Cette
première entrée n'est précédée par aucun
compteur de décalage, ni donnée fantôme. En fait, le
compteur de décalage différentiel de la première
entrée vaut zéro.
À partir de la deuxième donnée (si elle existe), la base de
données est interprétée comme le format LOCATE02 du GNU.
Un ancien format de base de données est également utilisé
par les programmes Unix
locate et
find et leurs premières
versions GNU.
updatedb exécute des programmes appelés
bigram et
code pour créer les bases de données
dans l'ancien format. L'ancien format diffère de la description
ci-dessus de la façon suivante. Au lieu que chaque entrée
commence avec un octet de compteur de décalage différentiel et
finisse avec un octet nul, les valeurs d'octets comprises entre 0 et 28
indiquent un compteur de décalage différentiel compris entre -14
et 14. L'octet, indiquant qu'un compteur de décalage
différentiel long suit, est 0x1e (30) et non 0x80. Les compteurs longs
sont ordonnés selon l'hôte, qui n'est pas forcément
l'ordre des octets réseau et selon la taille des mots entier de
l'hôte qui est habituellement de 4 octets. Ils représentent un
compteur dont leurs valeurs sont soustraites de 14. Les lignes de la base de
données ne possèdent pas d'octet de terminaison ; le
début de la ligne suivante est indiqué par le premier octet de
valeur <= 30.
En plus, au lieu de débuter avec une entrée factice, l'ancien
format des bases de données débute avec une liste de 256 octets
contenant les 128 « bigrams » les plus
fréquents de la liste de fichiers. Un
« bigram » est une paire d'octets contiguë.
Les octets dans la base de données qui ont le bit de poids fort
à 1 sont indexés (avec le bit de poids fort à 0) dans la
table de « bigrams ». Le
« bigram » et le codage du compteur de
décalage différentiel fait que ces bases de données sont
20 à 25 % plus petites que celles du nouveau format mais elles
ne sont pas dans un format 8 bits classique. Tout octet dans un nom de fichier
qui est dans l'intervalle utilisé par les codes spéciaux est
remplacé dans la base de données par un
« ? » qui, ce n'est pas une coïncidence,
est le caractère spécial de l'interpréteur de commande
pour la correspondance d'un seul caractère.
EXEMPLE¶
Entrées de frcode :
/usr/src
/usr/src/cmd/aardvark.c
/usr/src/cmd/armadillo.c
/usr/tmp/zoo
Longueur du plus long préfixe de l'entrée précédente à partager :
0 /usr/src
8 /cmd/aardvark.c
14 rmadillo.c
5 tmp/zoo
Sortie de
frcode avec les caractères nuls restant changés
en caractères saut de ligne et les octets de compteurs rendus
affichables :
0 LOCATE02
0 /usr/src
8 /cmd/aardvark.c
6 rmadillo.c
-9 tmp/zoo
(6 = 14 - 8 et -9 = 5 - 14)
VOIR AUSSI¶
find(1),
locate(1),
locatedb(5),
xargs(1),
Finding Files (en ligne avec info ou en version imprimée)
BOGUES¶
La meilleure façon de signaler un bogue est d'utiliser le formulaire
à l'adresse
http://savannah.gnu.org/bugs/?group=findutils.
L'utilité de cette page est que vous serez en mesure de suivre
l'évolution de la correction du problème. D'autres commentaires
à propos de
locate et du paquet findutils peuvent être
envoyés à la liste de diffusion
bug-findutils. Pour
s'abonner à cette liste, envoyez un courriel à
bug-findutils-request@gnu.org.
TRADUCTION¶
Cette page de manuel a été traduite et est maintenue depuis 2006
par Sylvain Cherrier <sylvain DOT cherrier AT free DOT fr> et les
membres de la liste <debian-l10n-french AT lists DOT debian DOT org>.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur le
paquet manpages-fr-extra.