Wie kann ich mlocate dazu bringen, nur bestimmte Verzeichnisse zu indizieren?

23

Ich möchte mlocate auf meinem Ubuntu-Server verwenden, aber nur bestimmte Verzeichnisse indizieren (z. B. /homeund /data, aber nicht alles darunter /). Die Standardkonfiguration von mlocate funktioniert jedoch umgekehrt. Sie geben die Pfade an, die Sie entfernen möchten (mit PRUNE_PATHS).

Gibt es eine einfache Möglichkeit, dies zu erreichen, oder ein ähnliches Dienstprogramm, das das tut, was ich will? (Hinweis: Es sollte einen Index wie beibehalten mlocate, findist also zum Beispiel nicht akzeptabel) Danke.

Andrew Ferrier
quelle

Antworten:

16

Sie können die Option -U verwenden (--database-root PATH).

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

-o schreibt in die Ausgabedatei

-l 0 bewirkt, dass Sie es lesen können, andernfalls ist es nur für locate zugänglich

Dann können Sie es dann wie folgt verwenden:

locate -d /home/user/databasefile Dylan

-d legt den Datenbankpfad fest

Um mlocate mit mehr als einem Stammverzeichnis zu verwenden, erstellen Sie einfach zwei Datenbankdateien und verwenden Sie locate mit zwei Datenbankpfadoptionen wie folgt:

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

Um es zusammenzufassen und die Frage genauer zu beantworten:

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
quelle
Upvoting, da dies eine teilweise Antwort ist. Es ist jedoch nur die Erstellung einer Positivliste für einen Pfad zulässig. Meine Frage bezog sich speziell darauf, wie ich mehr als einen Pfad auf die Whitelist setzen kann.
Andrew Ferrier
1
Verbesserte die Antwort und für eine einfachere Handhabung schlage ich vor, einen Alias ​​zu erstellen
Janghou
gute Antwort! Ich wusste nicht, dass Sie in zwei Datenbanken gleichzeitig suchen können, danke für die Klarstellung. Ich werde dies als akzeptiert markieren, es sei denn, es kommt eine bessere Antwort!
Andrew Ferrier
Ist updatedb -l 0 -U /home/user/musicrekursiv? Scheint nicht in meinem Fall zu sein
Gaia
22

Bearbeiten Sie die Datei /etc/updatedb.conf

Richten PRUNEPATHSSie die Verzeichnisse ein, die Sie NICHT durchsuchen möchten

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

PRUNEPATHS: Eine durch Leerzeichen getrennte Liste von Pfadnamen von Verzeichnissen, die nicht von updatedb durchsucht werden sollen. Jeder Pfadname muss genau in der Form vorliegen, in der das Verzeichnis von locate gemeldet wird. Standardmäßig werden keine Pfade übersprungen.

Beachten Sie, dass alle oben genannten Konfigurationsinformationen auch über die Befehlszeilenoptionen des Dienstprogramms geändert oder aktualisiert werden können updatedb.

LnxSlck
quelle
Nein, das ist genau das Gegenteil von dem, was ich will. Dies indiziert alles außer diesen Verzeichnissen.
Andrew Ferrier
Sie können PRUNEPATHS mit allem außer Ihren Verzeichnissen einstellen. Auf diese Weise werden nur Ihre Verzeichnisse durchsucht.
LnxSlck
OK, danke für die klärende Bearbeitung. Das ist etwas unpraktisch, da ich beim Hinzufügen von Unterverzeichnissen neben Verzeichnissen, die ich indizieren möchte, daran denken muss, sie zu PRUNEPATHS hinzuzufügen. Es würde jedoch funktionieren. Danke für den Vorschlag.
Andrew Ferrier
Ja, ich weiß, aber ich kann nicht viele Informationen über mlocate finden, um das zu tun. Kannst du nicht so etwas wie find benutzen?
LnxSlck
Nein, ich habe viele Daten, daher ist es wichtig, dass sie indiziert sind. Habe das in Frage gestellt.
Andrew Ferrier
1

Ich habe noch etwas gefunden, das du ausprobieren könntest:

  1. "QuickSearch -" Mein SearchTool verwendet also eine andere Methode: Es verwendet den Befehl 'ls', um den Inhalt des durchsuchten Ordners aufzulisten, und führt dann die Suche in dieser Ausgabe durch 'ls' Ausgabe). "

Nicht sehr sicher über die Indizierung.

  1. Verwenden Sie Tool- Tracker-GUI
  2. Pretty lame solution sudo find "Platziere deine Suchverzeichnisse hier"> files.list grep 'filename' files.list
LnxSlck
quelle
Versuchen Sie nicht, mehrere Antworten hinzuzufügen. Bearbeiten Sie gegebenenfalls die vorhandene Antwort und fügen Sie weitere Informationen hinzu. Vielen Dank.
jokerdino
Ja, das werde ich tun
LnxSlck