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, 08:29]
213.95.41.13
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// 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//​. 
 + 
 +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>​ 
 + 
 +La base de données est mise à jour quotidiennement à 7 h 30. Si la machine n'​était pas allumée à ce moment précis, la mise à jour est déclenchée 5 minutes après le prochain démarrage. 
 + 
 +//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 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 ===== 
 + 
 +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 
 + 
 +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 ===== 
 +==== 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.1231399780.txt.gz
  • Dernière modification: Le 18/04/2011, 14:45
  • (modification externe)