locate (mlocate)
A quoi ça sert ?
Dans un terminal, locate permet de localiser immédiatement n'importe quel fichier ou répertoire présent sur votre système (y compris les fichiers cachés).
A la différence de la commande find, locate va vous donner le résultat de votre recherche immédiatement. find offre cependant beaucoup plus de possibilités
locate est en fait un fichier lien vers le programme mlocate
Principe
locate est rapide parce qu'au lieu de parcourir toute l'arborescence du système (comme le fait find), c'est une base de données qui contient la liste de tous les fichiers et répertoires qui va fournir le résultat de la recherche.
Cette base de données est mise à jour quotidiennement grâce au programme anacron
Sur un PC allumé 24h/24, la base de données mise à jour quotidiennement à 7h30. Sinon si la tâche n'a pu être réalisée à l'heure prévue, c'est 5 minutes après avoir démarré le PC que la mise à jour de cette base sera faite (vous voyez votre diode de disque dur s'activer pendant l'indexation)
locate indexe tout le système de fichiers, un utilisateur pourra connaître le contenu de dossiers dont il n'a pas les droits. Si cet aspect vous gène, il faudra remplacer mlocate par slocate.
plutôt que de relire l'ensemble du contenu de tous les répertoires chaque fois que la base de données est mise à jour, locate conserve des informations d'horodatage dans sa base de données de telle sorte qu'il puisse savoir si le contenu d'un répertoire a changé sans le relire. Cela rend les mises à jour plus rapides et sollicite moins le disque dur. Cette fonctionnalité est uniquement disponible dans mlocate.
Les adeptes de l'hibernation ou de la mise en veille doivent mettre à jour la base de données manuellement pour pouvoir utiliser locate car dans ce cas, le PC ne fonctionne pas à l'heure de la mise à jour et ne passe pas par l'étape du redémarrage. (Ce n'est plus vrai depuis au moins la 13.10, elle se met à jour à la sortie de veille)
Installation
Le paquet mlocate fournissant la commande locate
est installé normalement de base sur ubuntu sinon :
sudo apt-get install mlocate
L'installation de mlocate modifiera le binaire /usr/bin/locate pour pointer sur mlocate via le mécanisme des alternatives. Après l'installation, vous devriez exécuter /etc/cron.daily/mlocate manuellement pour créer la base de données, sinon mlocate ne fonctionnera pas avant que cron ne l'ait exécuté une première fois.
la base de données se trouve ici : /var/lib/mlocate/mlocate.db
Un fichier script mlocate est placé dans /etc/cron.daily pour être exécuté chaque jour
Fonctionnement
Utilisation de locate
Rechercher par exemple le fichier ".profile"
locate .profile
Rechercher tous les fichiers mp3 (en majuscules et minuscules) en affichant page par page
locate -i mp3 | less
Mise à jour manuellement de la base de données
sudo updatedb
exclusion de répertoire de l'indexation
L'indexation d'une grande quantité de fichiers est consommatrice de ressources/temps et nécessite un espace disque important. Il peut donc se révéler intéressant d'exclure des répertoires de l'indexation.
Cela se fait dans le fichier /etc/updatedb.conf en ajoutant le répertoire en question dans les PRUNEPATHS
- /etc/updatedb.conf
PRUNEPATHS="/tmp /var/spool /media /home/.ecryptfs /data"
Les fichiers contenus dans les répertoires /tmp /var/spool /media /home/.ecryptfs et /data sont donc exclus de l'indexation.
Modification de l'heure de l'exécution de la mise à jour
Modifier le fichier /etc/cron.d/anacron
Original :
30 7 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
Pour passer l'exécution à 5h45 du matin :
45 5 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
Sites relatifs anacron
Auteur : sylvainsjc
Contributeurs :