Donnerstag, 18. September 2008

Heute schon gedoodled




„Gestern habe ich doch noch diese Datei gehabt. Argh! Wo habe ich die nur wie­der hin getan? Wenn ich doch nur wüßte wie die gesuchte Datei hieß. Jeden­falls weiß ich noch das ich darin etwas Interessantes über Foobar gelesen habe.“
Kennst Du das? Dann helfen Dir unter Linux sogenannte Such- und Indizie­rungsdienste, die Dateien und ihre Inhalte nach Stichpunkten durchsuchen und diese dann in eine Datenbank ablegen, die sich anschließend nach einem be­stimmten Begriff durchsuchen lässt. Dabei kannst Du zum Beispiel auch Tags für Fotos in eine Indexdatenbank ablegen lassen, die die Information über Da­tum und Ort der Aufnahme enthalten können. So lassen sich zum Beispiel die Urlaubsfotos schneller finden. Ebenso ist es möglich. Mediatags, die Informatio­nen zu Titel und Interpret ei­ner 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 Da­teiformate 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 Datein­amen indizieren.


Doodle verwendet für die Lookups einen Suffix-Tree genannten Such­baum, der die Suche nach Schlüsselwörtern unglaublich rasant macht. Bei der Indizierung selber verwendet Doodle gleich mehrere Kniffe, um den Index mög­lichst klein zu halten und die Zeit für Indizierungen zu verkürzen. Unter ande­rem werden die Namen für Verzeichnisse in einem anderen Table der Daten­bank 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 entwi­ckelt 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. Al­ternativ kannst du Doodle natürlich auch manuell installieren. Dazu musst du nur die Pakete


doodle
libdoodle
libextractor1



von der Packman Seite http://www.links2linux.de/ herunterladen und mit dem Rpm-Befehl:


rpm -Uhv doodle*rpm libdoodle*rpm libextractor1*rpm


installieren.



Für Benutzer einer Debian basierten Distribution, wie zum Beispiel Ubun­tu, 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 installie­ren, 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


kompiliert und installiert werden. Dazu werden allerdings die Development Da­teien von libextractor benötigt; zu finden in dem Paket libextractor-devel bzw. libextractor-dev.


Jetzt wird gedoodlet




Nach der Installation kannst Du direkt losle­gen. Öffne eine Konso­le und teile Doodle mit welche Verzeich­nisse er für Dich dood­len soll, indem Du etwa



doodle -bf /usr/share/doc


in die Kommandozeile deiner Wahl (Terminal, Konsole XTerm) tippst. Dies indi­ziert das Verzeichnis /usr/share/doc und alle darin enthaltenen Unterverzeich­nisse.
Du kannst nun zum Beispiel einmal


doodle doodle


eingeben, falls Du Doodle nicht glaubst, dass es fertig ist und erhältst als Ant­wort unter anderem
/usr/share/doc/packages/doodle/README
Aber doodle kann noch viel mehr. So können auch Umgebungsvariablen als Pa­rameter ü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 be­nutzen. 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= mitteilen, welcher Sprache Du mächtig bist. Dabei ist die Länderkennung bestehend aus den zwei Buchstaben, die du vielleicht schon vom WWW her kennst. Also DE für Deutschland, EN für England oder ES für Spa­nien.
Angenommen Du sprichst Deutsch und Englisch und möchtest ein Ver­zeichnis mit dem Namen Vertraulich bei der Indizierung Deines Heimatver­zeichnisses ausschließen, dann kannst Du das ganz einfach bewerkstelligen, in­dem 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 Hei­matverzeichnis 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 Na­mens .doodle im Heimatverzeichnis des aktiven Benutzers. Dies ist die Index­datei der Datenbank. Du kannst das auch ändern. Dazu muss eine Umgebungs­variable 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 Heimatverzeich­nisses 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 Indexda­teien für unterschiedliche Verzeichnisse anzulegen. Etwa wenn Du einen Ord­ner Musik hast und später genau weißt, dass es sich bei der gesuchten Datei um eine Mu­sikdatei handelt. Dazu benutzt man die Option
--database=. Der Befehl für die Kommandozeile sieht dann so aus



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.


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 be­dienen, wenn Du möchtest das Doodle über jedwede Änderung in Deinen Ver­zeichnis 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 zusam­men 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 ih­rer Abhängigkeiten nachinstalliert werden:



fam
fam-server



Das Starten des Fam-Daemons benötigt unter Opensuse die Rechte des Supe­rusers Root.


su
pasword:
famd &
exit



Starte jetzt den Doodle-Daemon doodled unter Angabe des Verzeichnis wel­ches überwacht werden soll als Parameter


doodled $HOME



Das hat den Vorteil dass der Index für dieses Verzeichnis immer aktuell gehal­ten wird, da Doodle hier Änderungen sofort in der Daten­bank aktualisiert und ist besonders sinnvoll wenn Du ein Verzeichnis überwa­chen lassen möchtest, dessen Inhalte sich besonders häufig ändern.
Um den Dienst Anzuhalten, wird die unter Linux übliche Jobkontrolle ver­wendet. 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 Edi­tor, indem Du
crontab -e



in Deine Kommandozeile eingibst. Jetzt kannst Du für die Crontab des Benut­zers einen Job vergeben. Standardmäßig ist der Vi als Editor für die Crontab ein­gestellt. 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 Edi­tor 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 indizie­ren und den doodled Daemon dazu nutzen die Heimatverzeichnisse der User zu überwachen. In diesem Fall solltest du eine Gruppe doodle anlegen, der es er­laubt 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 geson­derten Verzeichnis in /var/doodle aufbewahren. Entsprechend müssen dann na­türlich die Ein­träge für die Cron-Jobs und der ~/.bashrc bzw. ~/.profile ange­passt werden. An­genommen Du lässt die Datenbank in /var/doodle/users.doodle schreiben, dann könntest Du folgendermaßen bei den adminstratortechnischen Aufgaben vor­gehen:


su
password:
groupadd doodle
groupmod -A doodle
chmod 640 /var/doodle/users.doodle



Nicht vergessen das SGID-Bit für das doodle Programm zu setzen, um Benut­zern, 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



Alternativ kann auch der Yast Runleveleditor verwendet werden.



Doodle als Catfish



Hat man einmal die Datenbanken für den Doodle-Index erstellt, kannst Du die­sen 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ßer­dem beherrscht es find, locate, sowie den kde4 Indexer Strigi.
Catfish befindet sich ebenfalls im Packman Repo und kann von dort her­untergeladen und installiert werden.
Nach der In­stallation 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.