ADMIN-Tipp: Schneller suchen als find

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Unter Linux ist find das bewährte Tool für eine Suche nach Dateien. Es kann flexibel mit regulären Ausdrücken und verschiedenen Suchtiefen umgehen oder eine Datumsrechnung einbeziehen. Allerdings hat es einen Nachteil: Speziell bei großen Volumes ist es prinzipbedingt sehr zeitintensiv, da es immer alle Files im Dateisystem aufsuchen und vergleichen muss.

Eine sehr schnelle Alternative dazu ist locate. Es ermittelt wie find Textmuster in Datei- oder Pfadnamen. Dabei ergänzt es anders als find übrigens implizit immer das Sternchen als Globbing Character vor und nach dem Suchbegriff (*PATTERN*). Das heißt, das Muster wird nicht nur als eigenständiges Wort, sondern überall auch innerhalb anderer Worte gefunden. Das ist nicht immer günstig. Will man das nicht haben, dann muss man mit --regex den RegEx-Mode einschalten.
Locate visitiert bei seiner Suche allerdings nicht wie find immer wieder das ganze Filesystem, sondern nur eine Indexdatenbank, die das Tool updatedb anlegt und crongesteuert in der Regel täglich aktualisiert. Nachteil: Ist es bis zu dieser täglichen Aktualisierung noch eine Weile hin, dann kennt locate ein eben angelegtes File  noch nicht oder zeigt ein bereits gelöschtes File immer noch an. Vorteil: Da locate nur diesen Index durchsucht, ist es um ein Vielfaches schneller. Im Beispiel braucht es nur eine halbe Sekunde, wo find über vier Minuten rödelt, obwohl es nur auf Verzeichnisnamen losgelassen wurde.

root@hercules:~# time find / -name cron.daily -type d
/etc/cron.daily

real    4m19.706s
user    0m4.916s
sys    0m15.309s

root@hercules:~# time locate cron.daily
/etc/cron.daily
...

real    0m0.567s
user    0m0.560s
sys    0m0.008s
10.09.2013

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018