Comment obtenir mlocate pour indexer uniquement certains répertoires?

23

Je voudrais utiliser mlocate sur mon serveur Ubuntu, mais uniquement pour indexer certains répertoires (par exemple /homeet /data, mais pas tout sous /). Cependant, la configuration standard de mlocate fonctionne dans le sens inverse; vous spécifiez les chemins que vous souhaitez supprimer (avec PRUNE_PATHS).

Existe-t-il un moyen facile d'y parvenir ou un utilitaire similaire qui fera ce que je veux? (note: il doit maintenir un index comme mlocate, ce findn'est donc pas acceptable, par exemple) Merci.

Andrew Ferrier
la source

Réponses:

16

Vous pouvez utiliser l'option -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-o écrit dans le fichier de sortie

-l 0 fait que vous pouvez le lire, sinon il n'est accessible que pour localiser

Ensuite, vous pouvez ensuite l'utiliser comme:

locate -d /home/user/databasefile Dylan

-d définit le chemin de données

Pour utiliser mlocate avec plusieurs répertoires racine, créez simplement deux fichiers de base de données et utilisez Locate avec deux options de chemin de données comme ceci:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Pour résumer et répondre à la question plus spécifique:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan
Janghou
la source
Vote positif, car il s'agit d'une réponse partielle. Cependant, il ne permet de mettre en liste blanche qu'un seul chemin. Ma question portait spécifiquement sur la mise en liste blanche de plusieurs chemins.
Andrew Ferrier
1
Amélioration de la réponse et pour une manipulation plus facile, je suggère de créer un alias
Janghou
bonne réponse! Je ne savais pas que vous pouviez rechercher dans deux bases de données en parallèle, merci pour la clarification. Je vais marquer cela comme accepté à moins qu'une meilleure réponse n'arrive!
Andrew Ferrier
Est updatedb -l 0 -U /home/user/musicrécursif? Ne semble pas être dans mon cas
Gaia
22

Modifier le fichier /etc/updatedb.conf

Configurer PRUNEPATHSavec les répertoires que vous NE souhaitez PAS rechercher

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Liste séparée par des espaces des noms de chemin des répertoires qui ne doivent pas être analysés par updatedb. Chaque nom de chemin doit être exactement sous la forme dans laquelle le répertoire serait signalé par Locate. Par défaut, aucun chemin n'est ignoré.

Notez que toutes les informations de configuration ci-dessus peuvent également être modifiées ou mises à jour via les options de ligne de commande de l'utilitaire updatedb.

LnxSlck
la source
Non, c'est exactement le contraire de ce que je veux. Cela indexera tout sauf ces répertoires.
Andrew Ferrier
Vous pouvez définir PRUNEPATHS avec tout sauf vos répertoires. De cette façon, il analysera uniquement vos répertoires.
LnxSlck
OK, merci pour le montage clarifiant. C'est un peu impraticable, car lorsque j'ajoute des sous-répertoires aux côtés des répertoires que je veux indexer, je dois me souvenir de les ajouter à PRUNEPATHS. Cependant, cela fonctionnerait. Merci pour la suggestion.
Andrew Ferrier
Oui, je sais, mais je ne trouve pas beaucoup d'informations sur mlocate pour le faire. Tu ne peux pas utiliser quelque chose comme find?
LnxSlck
Non, j'ai beaucoup de données, il est donc important qu'elles soient indexées. Ont clarifié en question.
Andrew Ferrier
1

J'ai trouvé autre chose que vous pourriez essayer:

  1. QuickSearch - "Donc mon SearchTool utilise une manière différente: il utilise la commande 'ls' pour lister le contenu du dossier recherché, puis fait la recherche sur cette sortie. De cette façon, la vitesse de recherche est très rapide (sauf pour la première fois qu'il doit faire 'ls'). "

Pas très sûr de l'indexation.

  1. Utiliser l'outil tracker-gui
  2. Solution assez boiteuse sudo trouver "placez vos répertoires de recherche ici"> files.list grep 'filename' files.list
LnxSlck
la source
Essayez de ne pas ajouter plusieurs réponses. Si nécessaire, modifiez la réponse existante et ajoutez plus d'informations. Merci.
jokerdino
Oui, je vais le faire
LnxSlck