Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
locate [Le 08/01/2009, 10:12]
sylvainsjc
locate [Le 06/05/2023, 09:59] (Version actuelle)
92.137.30.180 [Installation] plocate
Ligne 1: Ligne 1:
-<note warning>​Redaction en cours</​note>+{{tag>recherche cron optimisation}} 
 +----
  
-<​note>​Cette documentation est réalisée sur la base d'​ubuntu hardy mais elle est valable et utilisable sur beaucoup d'​autres distributions</​note>​ +====== locate ​(mlocate) ​======
-====== locate ======+
  
-===== Pourquoi faire =====+===== 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.+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.+A la différence de la commande //[[:​tutoriel/​console_commandes_de_base#​find|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//+//locate// est en fait un fichier lien vers le programme //​mlocate// ​devenu **//​plocate//​** sur Ubuntu en 2022.
  
 ===== Principe ===== ===== 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ée ​qui contient la liste de tous les fichiers et répertoires qui va fournir le résultat de la recherche.+//locate// est rapide parce qu'au lieu de parcourir ​en « //live// » toute l'​arborescence du système (comme le fait //find//), une base de données ou //index// est régulièrement mis à jour qui contient la liste de tous les fichiers et répertoires. C'est cet index statique ​qui va être exploré très rapidement et fournir le résultat de la recherche ​lors de l'​utilisation de //locate//.
  
-Cette base de donnée ​est mise à jour quotidiennement grâce au programme //anacron//+La base de données ​est automatiquement ​mise à jour quotidiennement grâce au programme //[[anacron]]//.
  
-<note tip>//​anacron//​ est un programme qui permet l'​exécution de tâches quotidiennes,​ hebdomadaires ou mensuelles sur un système de type Unix. +<note tip>//[[anacron]]// est un programme qui permet l'​exécution de tâches quotidiennes,​ hebdomadaires ou mensuelles sur un système de type Unix.</​note>​
-</​note>​+
  
-Sur un PC allumé 24h/24, la base de donnée ​est updatée chaque ​jour à 7h30Sinon si la tâche ​n'a pu être réalisée ​à l'​heure prévuec'est 5 minutes après ​avoir démarré ​le PC que l'​update de cette base sera fait (vous voyez votre voyant disque dur s'​activiter pendant 1 ou 2 minutes)+La base de données ​est mise à jour quotidiennement ​à 7 h 30Si la machine ​n'était pas allumée ​à ce moment précisla mise à jour est déclenchée ​5 minutes après le prochain démarrage.
  
-//locate// indexe ​tout le système de fichiers, les résultats d'une recherche sans //sudo// incluront uniquement les fichiers auxquels l'utilisateur ​exécutant ​//​locate// ​le droit d'accèsIl réalise cela en mettant à jour la base de données en tant que superutilisateur ​(« root »mais en la rendant inaccessible aux utilisateurs normaux qui ne peuvent y accéder que via l'​utilitaire ​//locate//.+//locate// indexe ​l'​ensemble du système de fichiers ​: un utilisateur ​lambda peut utiliser ​//​locate// ​pour connaître ​le contenu de dossiers dont il n'a pas les droitsSi cet aspect vous gêne, il faudra remplacer //​mlocate// ​(//plocate// depuis 2022par //slocate//. Ce n'est en général pas un problème sur une machine personnelle dont l'​accès est sécurisé, mais c'est un point à garder en tête pour une utilisation sur serveur ou dans un contexte à accès partagé.
  
-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.+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 par contre ​uniquement disponible dans //mlocate// (//​plocate//​ depuis 2022). 
 + 
 +<​note>​Avant la version 13.10 d'​Ubuntu,​ les adeptes de l'​hibernation ou de la mise en veille devaient potentiellement mettre à jour la base de données manuellement pour pouvoir utiliser //locate//, dans le cas où leur PC ne fonctionnait pas à l'​heure exacte prévue de la mise à jour de l'​index. Désormais, la mise à jour est automatiquement lancée à la sortie de veille.</​note>​
  
 ===== Installation ===== ===== Installation =====
  
-locate est installé ​normalement ​de base sur ubuntu sinon +La commande //locate// est fournie par le paquet [[apt>​mlocate]],​ lequel ​est normalement ​pré-installé. Si ce n'est pas le cas : 
    sudo apt-get install mlocate    sudo apt-get install mlocate
  
-L'​installation de mlocate ​modifiera ​le binaire ///​usr/​bin/​locate//​ pour pointer sur mlocate ​via le mécanisme des alternativesAprè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 (puisque mlocate n'​utilise pas le même fichier ​de base de données que le locate ​standard). Vous devriez aussi supprimer le paquet locate pour ne pas avoir deux base de données différente mises à jour régulièrement sur votre système+Un fichier script //mlocate// (//​plocate//​ depuis 2022) est placé dans /​etc/​cron.daily pour être exécuté chaque jour et mettre à jour la base de donnée mlocate (//​var/​lib/​plocate/​plocate.db///​ depuis 2022). ​L'​installation de //mlocate// / //plocate// modifie ​le binaire ///​usr/​bin/​locate//​ pour pointer sur la version //mlocate// / //plocate//Si //mlocate// / //plocate// n'était pas pré-installé sur votre système, que vous ayez réalisé une installation ​manuelle et que vous souhaitiez utiliser //locate// sans attendre, vous devez exécuter /​etc/​cron.daily/​mlocate ​(etc/​cron.daily/​plocate depuis 2022) manuellement ​(une seule fois) dans un terminal ​pour créer la base de données, ​faute de quoi la commande ​de recherche //locate// ne fonctionnera ​pas correctement.
 ===== Fonctionnement ===== ===== 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 manuelle 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 certains répertoires de l'​indexation.
 +
 +Cela se fait dans le fichier **/​etc/​updatedb.conf** en ajoutant le répertoire en question dans les **PRUNEPATHS** :
 +
 +<file bash /​etc/​updatedb.conf>​
 +PRUNEPATHS="/​tmp /var/spool /media /​home/​.ecryptfs /data"
 +</​file>​
 +
 +Dans cet exemple, les fichiers contenus dans les répertoires /tmp /var/spool, /media, /​home/​.ecryptfs et /data sont exclus de l'​indexation.
 +
 +
 +
 +==== Modification de l'​heure de l'​exécution de la mise à jour ====
 +
 +<note important>​Ceci oblige de modifier l'​heure d'​exécution de [[anacron]] donc ce sera toutes les tâches exécutées par [[anacron]] qui seront exécutées à l'​heure de votre choix</​note>​
 +
 +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
 +[[https://​packages.ubuntu.com/​fr/​anacron|anacron]]
  
  
 +Auteur : [[utilisateurs/​sylvainsjc]]
  
-by [[utilisateurs/​sylvainsjc]]+Contributeurs :
  • locate.1231405947.txt.gz
  • Dernière modification: Le 08/01/2009, 10:12
  • par sylvainsjc