it-swarm.com.de

Warum läuft das Programm "updatedb" so schnell?

Wenn ich Programme habe, die einen vollständigen Festplatten-Scan durchführen und alle Dateien im System durchsuchen, dauert die Ausführung normalerweise sehr lange. Warum läuft updateedb im Vergleich so schnell?

22
hugomg

Die Antwort hängt von der Version von locate ab, die Sie verwenden, aber es besteht eine gute Chance, dass es mlocate ist, dessen updatedb schnell ausgeführt wird, indem Sie dies vermeiden vollständige Festplatten-Scans:

mlocate ist eine Lokalisierung/Aktualisierung der Implementierung. Das 'm' steht für "Zusammenführen": updateb verwendet die vorhandene Datenbank erneut, um ein erneutes Lesen des größten Teils des Dateisystems zu vermeiden. Dadurch wird updateb schneller und die Systemcaches werden nicht so häufig in den Papierkorb verschoben.

(In der Datenbank wird der Zeitstempel jedes Verzeichnisses gespeichert, ctime oder mtime, je nachdem, welcher Wert neuer ist.)

Wie die meisten Implementierungen von updatedb überspringt mlocate auch Dateisysteme und Pfade, die ignoriert werden sollen. Standardmäßig gibt es in mlocate keine, aber Distributionen bieten normalerweise ein grundlegendes updatedb.conf, das vernetzte Dateisysteme, virtuelle Dateisysteme usw. ignoriert (siehe Debians Konfigurationsdatei zum Beispiel; dies ist die Standardpraxis in Debian, daher ist updatedb von GNU ähnlich konfiguriert) ).

22
Stephen Kitt

Zusätzlich zur Überprüfung der Änderungszeiten ignoriert mlocate auch bestimmte Teilbäume des Dateisystems, die viele uninteressante oder möglicherweise doppelte Dateien enthalten, wie in /etc/updatedb.conf angegeben (und in man aktualisiertb) beschrieben .conf ):

  • Binden Sie die Halterungen
  • Einige Arten von Dateisystemen (9p, afs, bdev usw.)
  • VCS-Repository-Datenbanken (.git, .hg usw.)
  • Einige fest codierte Verzeichnisse (/ media,/tmp,/var/spool/cups usw.).
9
hugomg