Wie führt man updateb aus, ausgenommen einige Pfade, ohne vorher indizierten Inhalt für diese Pfade zu entfernen?

5280
Pa_

Ich habe eine seltsame Frage und bin mir nicht sicher, ob das überhaupt etwas Machbares ist, deshalb frage ich es an den SuperUser :)

Stellen Sie sich also vor, Sie haben Ihr Dateisystem mit einigen Einhängepunkten für zusätzliche Partitionen.

sag so etwas

/ Laufwerke / Laufwerk A / Partition A / Laufwerke / Laufwerk A / Partition B / Laufwerke / Laufwerk B / Partition A ... usw.

Wenn nun alle diese Partitionen in ihre jeweiligen Mountpunkte eingebunden sind, werden durch das Ausführen von updateb alle Inhalte in ihrem Dateisystem indiziert. Gut.

Jetzt versuche ich, eine Art von niedrigem Verbrauch und niedriger Festplatte mit Dateiserver einzurichten, bei dem ich automount verwenden möchte, bei der ich Dateien indizieren lassen möchte, aber bei denen ich die Indizierung dieser zusätzlichen Dateien nicht ausführen möchte fährt jeden Tag

Was ich also erreichen möchte, ist, updateb so auszuführen, dass einige Pfade (in meinem Fall diese Pfade oben) von der Indizierung ausgeschlossen werden können, ABER zur selben Zeit, ohne den zuvor für diese Pfade indizierten Inhalt zu verwerfen.

Ich sehe, dass updateb mehrere "Beschneidungsoptionen" hat, mit denen wir bestimmte Pfade vom Indizierungsprozess ausschließen können. Dies bedeutet jedoch auch, alle Inhaltsinformationen zu diesen Pfaden zu verwerfen. Stattdessen möchte ich bestimmte Pfade ausschließen und das beibehalten, was zuvor in diesen Pfaden bereits indiziert wurde.

Hat jemand eine Idee, wie man dies mit mlocate erreichen kann, oder welches andere Werkzeug man dafür verwenden kann? Vielen Dank

4

1 Antwort auf die Frage

3
Ярослав Рахматуллин

Erstellen Sie mehrere Indizes

Verwenden Sie mlocate, um mehrere Datenbankdateien gleichzeitig zu durchsuchen. Was Sie ausschließen möchten, sollte nicht von vornherein gescannt werden. Vergessen Sie gemountete und nicht gemountete Ausschlussregeln und erstellen Sie Indizes für die wichtigen Standorte.

Das mitgelieferte Beispiel kann mit wenig Aufwand an Ihre Situation angepasst werden ...

Im Allgemeinen können Sie mehrere Indexdateien erstellen updatedbund gleichzeitig oder einzeln nacheinander aktualisieren ( crondz. B. über).

Wenn es eine globale Datei /etc/updatedb.conf gibt, ist es wahrscheinlich ratsam, Pfade mit eigenen Indizes auszuschließen - da das Durchsuchen (Erstellen eines Index) am selben Ort mehr als ein Mal ergibt, werden beim Durchsuchen (Durchsuchen) nach gleicher Ort

Nachdem Sie binäre "Wörterbücher" für alle Standorte erstellt haben, konfigurieren Sie eine Funktion in der Shell.

Funktion fooLocate { / usr / bin / locate \ -d /var/tmp/default.mlocate.db \ -d /my-stuff/mlocate-index2.db $ @  } 

Relevante Dokumentation

(mach auch einen man updatedb)

Mann suchen * scrollen blättern scrollen *

-d, --database DBPATH Ersetzen Sie die Standarddatenbank durch DBPATH. DBPATH ist eine: -separierte Liste von Datenbankdateinamen. (...)  Ein leerer Datenbankdateiname wird durch die Standarddatenbank ersetzt. Eine Datenbank Dateiname - bezieht sich auf die Standardeingabe. Beachten Sie, dass eine Datenbank gelesen werden kann von der Standardeingabe nur einmal. 

Beispiel

# updatedb -o /home/jaroslav/.locate/media-music.db -U / mnt / media / media / \ -n Bilder \ -n Filme \ -n Dampfapps \ -n pr0n -v  # locate -i glass -d /home/jaroslav/.locate/media-music.db | wc -l 35 # locate -i glass -d /home/jaroslav/.locate/media-music.db \ -d /var/lib/mlocate/mlocate.db | wc -l 363 
Danke, ich hatte eigentlich auf eine ähnliche Option gehofft und habe nicht gemerkt, dass ich so etwas tun könnte! :) Pa_ vor 11 Jahren 0