„Gestern habe ich doch noch diese Datei gehabt. Argh! Wo habe ich die nur wieder hin getan? Wenn ich doch nur wüßte wie die gesuchte Datei hieß. Jedenfalls weiß ich noch das ich darin etwas Interessantes über Foobar gelesen habe.“
Kennst Du das? Dann helfen Dir unter Linux sogenannte Such- und Indizierungsdienste, die Dateien und ihre Inhalte nach Stichpunkten durchsuchen und diese dann in eine Datenbank ablegen, die sich anschließend nach einem bestimmten Begriff durchsuchen lässt. Dabei kannst Du zum Beispiel auch Tags für Fotos in eine Indexdatenbank ablegen lassen, die die Information über Datum und Ort der Aufnahme enthalten können. So lassen sich zum Beispiel die Urlaubsfotos schneller finden. Ebenso ist es möglich. Mediatags, die Informationen zu Titel und Interpret einer Musikdatei enthalten, zu indizieren, so dass Du anschließend ganz einfach Deinen Lieblingstitel oder Künstler wiederfinden kannst.
Dabei muss es nicht immer Beagle sein, um Deine Dateien indizieren zu lassen und anschließend nach Stichworten zu durchsuchen. So manch ein User ist frustriert bis genervt, wenn Beagle wieder einmal die Festplatte beansprucht und die CPU-Auslastung für Stunden am Anschlag steht.
Mit dem Kommandozeilentool Doodle lassen Sich Dateien schnell und platzsparend indizieren.
Doodles Stärken
Da Doodle intern die Bibliothek libextractor benutzt, werden Momentan die Dateiformate plain text, html, pdf, dvi, ps, mp3, ogg, wav, jpeg, gif, png, tiff, rpm, tar, zip, elf, real, riff, avi, mpeg, asf und quicktime für die Metatagindizierung unterstützt. Alle anderen Formate lassen sich aber immerhin über den Dateinamen indizieren.
Doodle verwendet für die Lookups einen Suffix-Tree genannten Suchbaum, der die Suche nach Schlüsselwörtern unglaublich rasant macht. Bei der Indizierung selber verwendet Doodle gleich mehrere Kniffe, um den Index möglichst klein zu halten und die Zeit für Indizierungen zu verkürzen. Unter anderem werden die Namen für Verzeichnisse in einem anderen Table der Datenbank abgelegt als die Indizes selber. Das Ablegen von Integerwerten und Strings in die Datenbank ermöglicht eine Platzspareffizienz von bis zu 75 %.
Weil Doodle hauptsächlich als Kommandozeilentool konzipiert und entwickelt worden ist, ist es hoch konfigurierbar. Zudem läßt es sich außerordentlich gut durch Optionen steuern. Doodle kann mit Umgebungsvariablen umgehen, was das Programm eventuell interessant für das Schreiben von Shellscripten macht. Als Cron-Job eingerichtet oder mit Hilfe des Daemons doodled lassen sich Änderungen in Dateien einfach überwachen.
Weil Doodle hauptsächlich als Kommandozeilentool konzipiert und entwickelt worden ist, ist es hoch konfigurierbar. Zudem läßt es sich außerordentlich gut durch Optionen steuern. Doodle kann mit Umgebungsvariablen umgehen, was das Programm eventuell interessant für das Schreiben von Shellscripten macht. Als Cron-Job eingerichtet oder mit Hilfe des Daemons doodled lassen sich Änderungen in Dateien einfach überwachen.
Doodle? Finde ich gut!
Für alle die Opensuse >= 10.2 benutzen, wird Doodle im Reposotority von Packman bereitgehalten.
ftp://ftp5.gwdg.de/pub/linux/packman/suse/10.2
ftp://ftp5.gwdg.de/pub/linux/packman/suse/10.3
Du kannst also Doodle bequem mittels Yast oder Smart installieren, nachdem Du Packman als aktive Softwarequelle zu Yast bzw. Smart hinzugefügt hast. Alternativ kannst du Doodle natürlich auch manuell installieren. Dazu musst du nur die Pakete
doodle
libdoodle
libextractor1
libdoodle
libextractor1
rpm -Uhv doodle*rpm libdoodle*rpm libextractor1*rpm
installieren.
Für Benutzer einer Debian basierten Distribution, wie zum Beispiel Ubuntu, sollte Doodle ebenfalls einfach über
apt-get install doodle doodled
heruntergeladen und installiert werden können.
Für die, die keine Scheu haben Software aus dem Quellcode zu installieren, kann Doodle direkt von der Seite
http://gnunet.org/doodle/download/doodle-0.6.7.tar.gz
der Entwickler bezogen und nach dem Entpacken mit dem üblichen Dreisatz
Für die, die keine Scheu haben Software aus dem Quellcode zu installieren, kann Doodle direkt von der Seite
http://gnunet.org/doodle/download/doodle-0.6.7.tar.gz
der Entwickler bezogen und nach dem Entpacken mit dem üblichen Dreisatz
./configure
make
make install
make
make install
kompiliert und installiert werden. Dazu werden allerdings die Development Dateien von libextractor benötigt; zu finden in dem Paket libextractor-devel bzw. libextractor-dev.
Jetzt wird gedoodlet
Nach der Installation kannst Du direkt loslegen. Öffne eine Konsole und teile Doodle mit welche Verzeichnisse er für Dich doodlen soll, indem Du etwa
doodle -bf /usr/share/doc
in die Kommandozeile deiner Wahl (Terminal, Konsole XTerm) tippst. Dies indiziert das Verzeichnis /usr/share/doc und alle darin enthaltenen Unterverzeichnisse.
Du kannst nun zum Beispiel einmal
Du kannst nun zum Beispiel einmal
doodle doodle
eingeben, falls Du Doodle nicht glaubst, dass es fertig ist und erhältst als Antwort unter anderem
/usr/share/doc/packages/doodle/README
Aber doodle kann noch viel mehr. So können auch Umgebungsvariablen als Parameter übergeben werden. Probiere es einmal aus, indem Du
/usr/share/doc/packages/doodle/README
Aber doodle kann noch viel mehr. So können auch Umgebungsvariablen als Parameter übergeben werden. Probiere es einmal aus, indem Du
doodle -bf $HOME
in der Kommandozeile eingibst und das Heimatverzeichnis des aktiven Nutzers von Doodle indizieren lässt.
Die Option -b teilt Doodle mit, dass das Program ein Verzeichnis, welches es als Parameter übergeben bekommt, indizieren soll. Die Zusätzliche Option -f sorgt dafür, das auch Dateinamen beim Anlegen der Datenbank berücksichtigt werden. Allerdings ist das Programm recht schweigsam und teilt Dir nicht mit, was es gerade tut. Um doodle zum Reden zu bringen musst Du die Option -V benutzen. Die Option -P erlaubt es Dir, Verzeichnisse oder Dateien von der Suche oder Indizierung auszuschließen. Außerdem solltest du Doodle mit der Option -B=
Angenommen Du sprichst Deutsch und Englisch und möchtest ein Verzeichnis mit dem Namen Vertraulich bei der Indizierung Deines Heimatverzeichnisses ausschließen, dann kannst Du das ganz einfach bewerkstelligen, indem Du
doodle -bfV $HOME -P $HOME/Vertraulich -B=DE -B=EN
in die Kommandozeile tippst. In Abhängigkeit von der Menge der Dateien die sich in Deinem Heimatverzeichnis breit gemacht haben, kann die Indizierung nun einige Sekunden bis mehrere Stunden in Anspruch nehmen.
Hat Doodle die Arbeit beendet, befindet sich eine versteckte Datei Namens .doodle im Heimatverzeichnis des aktiven Benutzers. Dies ist die Indexdatei der Datenbank. Du kannst das auch ändern. Dazu muss eine Umgebungsvariable DOODLE_PATH gesetzt sein, in der Du einen alternativen Pfad für den Doodleindex festlegen kannst. Trägst Du zum Beispiel folgendes in Deine ~/.profile und ~/.bashrc ein:
Hat Doodle die Arbeit beendet, befindet sich eine versteckte Datei Namens .doodle im Heimatverzeichnis des aktiven Benutzers. Dies ist die Indexdatei der Datenbank. Du kannst das auch ändern. Dazu muss eine Umgebungsvariable DOODLE_PATH gesetzt sein, in der Du einen alternativen Pfad für den Doodleindex festlegen kannst. Trägst Du zum Beispiel folgendes in Deine ~/.profile und ~/.bashrc ein:
#Datenbanken für den doodleindex
if [ !-d $HOME/.mydoodle ]
then
mkdir $HOME/.mydoodle
fi
export DOODLE_PATH="$HOME/.mydoodle/mydoodle.doodle"
wird der Index zukünftig in .mydoodle/mydoodle.doodle deines Heimatverzeichnisses abgelegt.
Achtung: Änderungen für die ~/.profile werden erst nach einem Neustart der aktuellen Session übernommen. [Strg] + [Alt] + [Backspace]
Besonders interessant ist die Möglichkeit, mit Doodle Indexdateien für unterschiedliche Verzeichnisse anzulegen. Etwa wenn Du einen Ordner Musik hast und später genau weißt, dass es sich bei der gesuchten Datei um eine Musikdatei handelt. Dazu benutzt man die Option
--database=
doodle -bfV $HOME/Musik -B=DE -B=EN --database=~/.mydoodle/musik.doodle
um für das Verzeichnis Musik einen separaten Index zu erstellen. Mittles
doodle -i --database=~/.mydoodle/musik.doodle faith
durchsucht man nun den separat erstellten Index für das Verzeichnis Musik nach faith.
Die Option -i erlaubt es Dir mit Doodle auch caseinsensitive, ohne dass Groß- und Kleinschreibung berücksichtigt werden, zu suchen.
Die Option -i erlaubt es Dir mit Doodle auch caseinsensitive, ohne dass Groß- und Kleinschreibung berücksichtigt werden, zu suchen.
Der vollautomatische Doodlegang
Damit man Doodle nicht jedes mal selbst dazu bringen muss, die gewünschten Verzeichnisse zu indizieren kann Du Dich einerseits des Daemons doodled bedienen, wenn Du möchtest das Doodle über jedwede Änderung in Deinen Verzeichnis Bescheid weiß und diese sofort in die Datenbank schreibt, oder Du startest den Dienst als Cron-Job in festgelegten Zeitintervallen.
Für die Indizierung durch den Daemon musst Du diesen lediglich zusammen mit dem Fam-Daemon famd aufrufen. Dieser hat sein Heimat in dem Paket fam-server. Falls noch nicht geschehen, müssen noch folgende Pakete samt ihrer Abhängigkeiten nachinstalliert werden:
fam
fam-server
Das Starten des Fam-Daemons benötigt unter Opensuse die Rechte des Superusers Root.
su
pasword:
famd &
exit
pasword:
famd &
exit
Starte jetzt den Doodle-Daemon doodled unter Angabe des Verzeichnis welches überwacht werden soll als Parameter
doodled $HOME
Das hat den Vorteil dass der Index für dieses Verzeichnis immer aktuell gehalten wird, da Doodle hier Änderungen sofort in der Datenbank aktualisiert und ist besonders sinnvoll wenn Du ein Verzeichnis überwachen lassen möchtest, dessen Inhalte sich besonders häufig ändern.
Um den Dienst Anzuhalten, wird die unter Linux übliche Jobkontrolle verwendet. Dazu muss man zunächst die PID des Prozesses herausfinden:
ps -Agrep doodled
20439 ? 00:00:00 doodled
kill -9 20439
Für Verzeichnisse deren Inhalte eher statisch bleiben, empfiehlt es sich einen einfachen Cron-Job zu verwenden. Dazu öffnest Du zunächst den Cron-Tab Editor, indem Du
crontab -e
in Deine Kommandozeile eingibst. Jetzt kannst Du für die Crontab des Benutzers einen Job vergeben. Standardmäßig ist der Vi als Editor für die Crontab eingestellt. Da dieser Editor möglicherweise für Dich schwierig zu bedienen ist, kannst Du einen anderen Editor für die Crontab setzen. Hier bieten sich alle gültigen Editoren an, die im System bekannt sind. Zum Beispiel nano oder pico. indem Du eine Umgebungsvariable EDITOR setzt, kannst Du den benutzen Editor für die Crontab anpassen.
export EDITOR=nano
Editiere nun die Crontab:
crontab -e
#update des doodle index
0 2 * * 5 matthias doodle -bf $HOME/Musik -B=DE -B=EN --database=.mydoodle/musik.doodle
Dieser Eintrag sorgt dafür, dass Doodle immer Freitags um 2 Uhr Nachts die Datenbank für den Musikordner aktualisiert.
Als Systemadministrator kannst Du so mit Doodle das gesamte System indizieren und den doodled Daemon dazu nutzen die Heimatverzeichnisse der User zu überwachen. In diesem Fall solltest du eine Gruppe doodle anlegen, der es erlaubt ist die Datenbank von Doodle zu lesen. Außerdem sollte die Datenbank selber für den User lesbar sein. Du könntest diese zum Beispiel in einem gesonderten Verzeichnis in /var/doodle aufbewahren. Entsprechend müssen dann natürlich die Einträge für die Cron-Jobs und der ~/.bashrc bzw. ~/.profile angepasst werden. Angenommen Du lässt die Datenbank in /var/doodle/users.doodle schreiben, dann könntest Du folgendermaßen bei den adminstratortechnischen Aufgaben vorgehen:
su
password:
groupadd doodle
groupmod -Adoodle
chmod 640 /var/doodle/users.doodle
password:
groupadd doodle
groupmod -A
chmod 640 /var/doodle/users.doodle
Nicht vergessen das SGID-Bit für das doodle Programm zu setzen, um Benutzern, die sich am System anmelden die Abfrage zu erlauben.
chown root:doodle /usr/bin/doodle
chmod g=s /usr/bin/doodle
exit
Der Doodle-Daemon sollte dann am besten zusammen mit dem Fam-Daemon beim Systemstart geladen werden. Füge dazu die folgenden Anweisungen in der Datei /etc/init.d/rc hinzu.
famd
doodled
doodled
Alternativ kann auch der Yast Runleveleditor verwendet werden.
Doodle als Catfish
Hat man einmal die Datenbanken für den Doodle-Index erstellt, kannst Du diesen auch mit einem grafischen Tool durchsuchen lassen.
Das Tool Catfish ist einfach zu bedienen und Suchergebnisse lassen sich wie bei Beagle direkt öffnen und anzeigen. Nebenbei bemerkt kann das Tool
auch mit Beagle umgehen, außerdem beherrscht es find, locate, sowie den kde4 Indexer Strigi.
Catfish befindet sich ebenfalls im Packman Repo und kann von dort heruntergeladen und installiert werden.
Nach der Installation befindet sich das Tool im Menu, von wo Du es unter System → Dateisystem → Catfish findest. Du kannst es auch direkt als Befehl unter [Alt] + [F2] absetzen, indem du dort
catfish
eingibst. Im Pulldownmenu Suchmethode wählst Du einfach Doodle aus. Jetzt brauchst Du nur noch Deine Suchabfrage in die Suchmaske eingeben und das war es dann auch schon.
T#
Keine Kommentare:
Kommentar veröffentlichen
Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.