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, 12:02]
sylvainsjc
locate [Le 06/05/2023, 09:59] (Version actuelle)
92.137.30.180 [Installation] plocate
Ligne 1: Ligne 1:
-<​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>​ +{{tag>recherche ​cron optimisation}} 
-Tags : {{tag>recherche_ligne_commande catfish deskbar ​cron optimisation}}+----
  
 ====== locate (mlocate) ====== ====== locate (mlocate) ======
  
-===== 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 (y compris les fichiers cachés). 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+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 fichiersun 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.+//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 droits. Si cet aspect vous gêne, il faudra remplacer ​//mlocate// (//​plocate//​ depuis 2022) par //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).
  
-Les adeptes de l'​hibernation ou de la mise en veille ​doivent ​mettre à jour la base de donnée ​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+<​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'indexDé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. +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.
- +
-la base de donnée 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 ===== ===== Fonctionnement =====
 ==== Utilisation de locate ==== ==== Utilisation de locate ====
  
-Rechercher par exemple le fichier "​.profile"​+Rechercher par exemple le fichier "​.profile" ​:
  
    ​locate .profile    ​locate .profile
  
-Rechercher tous les fichiers mp3 (en majuscules et minuscules) en affichant page par page +Rechercher tous les fichiers mp3 (en majuscules et minuscules) en affichant page par page 
-   ​locate -i sting | less + 
-==== Mise à jour manuellement ​de la base de donnée ​====+   ​locate -i mp3 | less 
 + 
 +=== Mise à jour manuelle ​de la base de données ​====
  
    sudo updatedb    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 ==== ==== 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 seront ​toutes les tâches ​executées ​par anacron qui seront ​executées ​à l'​heure de votre choix</​note>​+<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 Modifier le fichier /​etc/​cron.d/​anacron
Ligne 61: Ligne 73:
    30 7    * * *   ​root test -x /​etc/​init.d/​anacron && /​usr/​sbin/​invoke-rc.d anacron start >/​dev/​null    30 7    * * *   ​root test -x /​etc/​init.d/​anacron && /​usr/​sbin/​invoke-rc.d anacron start >/​dev/​null
  
-Pour passer l'execution ​à 5h45 du matin :+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    45 5    * * *   ​root test -x /​etc/​init.d/​anacron && /​usr/​sbin/​invoke-rc.d anacron start >/​dev/​null
  
  
-Sites relatifs  +Sites relatifs 
-[[http://​packages.ubuntu.com/​fr/intrepid/​anacron|anacron]]+[[https://​packages.ubuntu.com/​fr/​anacron|anacron]]
  
  
 Auteur : [[utilisateurs/​sylvainsjc]] Auteur : [[utilisateurs/​sylvainsjc]]
  
-Contributeurs : +Contributeurs :
  • locate.1231412532.txt.gz
  • Dernière modification: Le 08/01/2009, 12:02
  • par sylvainsjc