Sie sind nicht angemeldet.

[erledigt] gnu-find cache ?

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

eni

User

  • »eni« ist der Autor dieses Themas

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

1

07.06.2009, 16:16

gnu-find cache ?

hallo zusammen. ich habe da mal eine frage:

ich hab mir eine webanwendung fürs hören von meiner musiksammlung gebastelt. das ganze läuft mit php, verwendet jedoch ziemlich oft shell_exec() (also die konsole) .
fürs auffinden von datien verwende ich das kommano "find". das funktioniert auch sehr gut, nur habe ich das problem, das meine musiksammlung über 250gb gross ist, und die erste suche dauert deshalb ewig. dannach werden die 250gb (staun!) in ca 2-3 sekunden durchsucht. wenn ich in der konsole mit meinem user etwas in der musiksammlung suche (also user eni), dann dauert die erste suche in der webanwendung trotzdem noch ewig (weil der user der website ist ja www-data)

ich möchte nun, dass die suche immer nur 2-3 sekunden dauert. könnte ich irgendwie mittels cron-job oder ähnlich einel neu-indexierung anstossen wenn nicht mehr vorhanden? oder gibts da bessere, schnellere lösungen?

danke für eine antwort schon im voraus..

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »eni« (07.06.2009, 18:22)


2

07.06.2009, 17:24

Hallo,

afaik nutzt find keinerlei Index (vll. für die Dauer der Session im jeweils aktuellen Terminal.)

Entweder du baust dir deinen eigenen Index (DB-Tabelle, die die Files/Pfade beinhaltet oder Datei, in der du speicherst) oder du nutzt direkt locate anstelle von find. Bei locate musst du allerdings schauen, ob wwwrun auch die Dateien von eni findet.
~ Two hours of trial and error can save ten minutes of RTFM ~

eni

User

  • »eni« ist der Autor dieses Themas

Beiträge: 465

Registrierungsdatum: 25.01.2009

Derivat: Ubuntu

Architektur: 32-Bit PC

Andere Betriebssysteme: Linux from Scratch (2.6.29.6) mit Gnome, Debian Lenny

  • Nachricht senden

3

07.06.2009, 18:22

locate ist nicht schlecht, nur habe ich da ein problem:

Quellcode

1
2
3
4
find /media/ENI14/lib/Music/ -iname "*blues*" | wc -l
256
locate -i "/media/ENI14/lib/Music/*blues*" | wc -l
2304

beides dauert ziemlich genau gleich lange, vorausgesetzt man hat mit find vorhin schon was gesucht. locate findet dabei fast zu viel, ich habe einen oberordner /blues/, und locate findet dann alle dateien in diesem ordner..

edit: --basename würde bei locate wohl helfen, aber wie geb ich da einen spezifischen pfad an?

edit2: ich habs nun so gelöst:

Quellcode

1
locate -i --basename "*blues*"
dannach werden die pfade im php-script aussortiert. ist etwa gleich schnell wie mit find, aber auch nach einem neustart, genau das was ich wollte, danke :)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »eni« (07.06.2009, 18:22)