DATEISUCHE IM ARRAY BESCHLEUNIGEN


Malchiner
Go to solution Solved by mgutt,

Recommended Posts

Moin Spezies,

wenn man das Array nach Dateinamen mit einem Stichwort durchsucht, dauert das ewig bis das Ergebnis vorliegt. Das bei nur einem Terra an Daten den ich habe.

Gibt es ein Plugin welches eine Registrierung der vorhanden Dateien erstellt, und aktuell hält, und so das Suchergebnis in Sekundenbruchteilen liefern kann?

Link to comment

Ein Unraid Plugin gibt es meines Wissens nicht.

Ich habe auf meinem Rechner (Linux!) Recoll installiert. Das funktioniert prächtig.

Davon gibt es auch Docker, aber ich habe sie nicht getestet.

Eine Windows Version von Recoll, gibt es ebenso, ihr fehlt aber die ein oder andere Funktion (Realtime indexing, multi-thread execution) und will mit mind. 5 € unterstützt werden.

 

Ich habe mich allerdings mittlerweile für ein "richtiges" DMS entschieden und bin nach einigen Tests bei docspell hängen geblieben.

Link to comment
8 minutes ago, saber1 said:

Da Du nichts zu dem OS der Clients sagst, hier eine Lösung für macOS

Nein, natürlich nicht. Ich habe nach einem Plugin gefragt worauf man mit allen Betriebssystemen zugreifen kann. @vakilando hat docspell angesprochen. Scheint mir ein guter Ansatz zu sein, muß ich mich aber erst mal einstudieren. Docspell wird in den unraid apps nicht angeboten.

 

Meiner Meinung nach, sollte gerade bei unraid genau so was angeboten werden was hardwarenah Suchergebnisse ausgibt also über eine WebUi. Ich habe sehr gute Erfahrungen mit grep gemacht, was das Durchsuchen einer großen Textdatei angeht. 7 Millionen Einträge und grep haut das Ergebnis in ms raus, auf einem Raspi. 

 

Leider kann ich nicht programmieren sonst würde ich es so machen, eine Textdatei  mit Pfaden und Dateinamen anlegen und mit grep dann HMIsen. 🙂

Link to comment
4 hours ago, Malchiner said:

Ich habe nach einem Plugin gefragt

das wird meiner Einschätzung nach mit einem reinen Plugin nicht machbar sein, da eine Datenbank benötigt wird (wenn du schnell Ergebnisse haben möchtest).

 

4 hours ago, Malchiner said:

Leider kann ich nicht programmieren sonst würde ich es so machen, eine Textdatei  mit Pfaden und Dateinamen anlegen und mit grep dann HMIsen

was meinst du mit "MMlsen"?

Eine Textdatei mit Pfaden und Dateinamen wird bei vielen Dateien gelinde gesagt ziemlich unhandlich groß werden. Zudem muss sie auch laufend aktualisiert werden, wenn du Dateien verschiebst und/oder umbenennst. Und diese "nur" nach Stichwörtern in den Dateinamen zu durchsuchen bringt auch nur was, wenn alle Dateinamen sprechend sind, also sinnvoll den Inhalt der Datei wiedergeben.... Da kommt man um eine Indexierung der Inhalte von Dateien in einer Datenbank wohl nicht herum.

Da würde ich eher mal einen der Recoll Docker Container probieren...

 

4 hours ago, Malchiner said:

@vakilando hat docspell angesprochen

Du kannst dich ja mal dran machen: Ich habe auf Github eine Anleitung für Unraid geschrieben, nicht mehr ganz aktuell, sollte aber noch funktionieren (ich müsste die mal updaten...): https://github.com/vakilando/unraid-docker-templates 

Die Installation besteht aus 4 Docker Containern (docspell-restserver, docspell-joex, docspell-consumedir, postgresql).

Und

natürlich hier: https://github.com/eikek/docspell und hier: https://docspell.org

 

Link to comment

Über SMB ist das zB nicht möglich, weil der SMB Suchindex ein Exklusiv-Feature von Microsoft ist.

 

Unraid selbst hat auch kein "locate", welches einen Suchindex aller Dateien aufbaut. Wobei das eh ziemlich blödsinnig ist, in meinen Augen, weil man eigentlich immer dann sucht, wenn man neue Dateien hinzugefügt hat und dann muss man eh erst den Index mit "updatedb" neu aufbauen lassen.

 

Jedenfalls hast du als denkbare Option das Webterminal und diese beiden Kommandos:

 

In Dateinamen suchen:

 

find /mnt/disk* -iname "*suchbegriff*"

 

In Dateien suchen:

 

grep -riIls "suchbegriff" /mnt/disk*

 

Noch einen Tick schneller geht es, wenn man Groß- und Kleinschreibung exakt sucht (also jeweils das "i" weglässt):

 

find /mnt/disk* -name "*Suchbegriff*" /mnt/disk*
grep -rIls "Suchbegriff" /mnt/disk*

 

Link to comment
14 hours ago, Malchiner said:

Leider kann ich nicht programmieren sonst würde ich es so machen, eine Textdatei  mit Pfaden und Dateinamen anlegen und mit grep dann HMIsen.

 

Ich gehe jetzt bewusst nicht auf die Wünsche und deren Sinn ein. Aber was Du Dir wünschst wäre einfach zu lösen:

 

1.) Installiere das User Scripts Plugin

 

2.) Füge in einem neuen User-Script diese Befehle ein. Kopiere für jede existierende weitere Daten-Platte die Zeile mit dem "tree" und passe sie an. Nennen wir das Skript mal "Export Disk Strukturen":

 

#!/bin/bash
#arrayStarted=true
#clearLog=true
#noParity=true

tree /mnt/disk1 > /mnt/disk1/WohinAuchImmer/Disk1.txt
tree /mnt/disk2 > /mnt/disk1/WohinAuchImmer/Disk2.txt

 

3.) Füge in einem weiteren User-Script diese Befehle ein. Wie Du siehst müsstest Du für jede Festplatte die Du unter 2.) aufgenommen hast unter 3.) einen weiteren Parameter aufnehmen. Nennen wir dieses Skript mal "Durchsuche Disk Strukturen":

 

#!/bin/bash
#arrayStarted=true
#clearLog=true
#noParity=true
#argumentDescription=Wonach willst Du suchen?

echo "Gesucht wird nach: $1"

grep -i "$1" "/mnt/disk1/WohinAuchImmer/Disk1.txt" "/mnt/disk1/WohinAuchImmer/Disk2.txt" | sort | uniq
sleep 5m

 

Anmerkungen:

 

1. Ich habe das jetzt aus dem Ärmel für Dich geschrieben. Das kann man sicherlich noch schöner und geschickter lösen.

 

2. Ich verwende "tree" statt "find" da ich die schöne Ausgabe mag. Kann man aber auch ändern.

 

3. Den Ordner "/mnt/disk1/WohinAuchImmer" in den Skripten musst Du natürlich durch etwas für Dich passendes ersetzen und vorher anlegen.

 

4. Als Such-Parameter ist nur ein Wort erlaubt. Das liegt am Plugin selbst:

 

Quote

Note that currently arguments do not accept spaces contained within one argument (ie: quoting and escaping spaces does NOT work)

 

Edited by hawihoney
  • Thanks 1
Link to comment

Moin und vielen Dank Euch allen.

Da noch einiges missverstanden wurde, erläutere ich das Gesuchte mal an einem Beispiel.

 

Wie ich erwähnte, müsste die Suche Plattformübergreifend sein, vorzugsweise über eine WebGui. Ich nehme also mein Handy und öffne im Browser per IP und Port die "Home-Suchmaschine" und gebe "udo" ein. Als Ergebnis bekomme ich Lindenberg, Jürgens und Heinz R*udo*lf Kunze als mp3 und jede Menge anderer Formate z.B. Entscheiden tu ich mich für den "Sonderzug nach Pankow", klick drauf und er öffnet sich mit dem im Gerät definierten Mediaplayer.

 

Ob docspell das vermag kann ich noch nicht einschätzen aber andere DMS verwalten halt rein Dokumente. Die Suche mit *find* geht schon super schnell und es fällt sofort auf, daß da ebend nicht die Festplatten life durchsucht werden, sondern daß *find* die Ergebnisse aus einem Index zieht. Eine Suche in Krusader z.B. bringt die Platten schön zum Rödeln und es dauert.

 

17 hours ago, vakilando said:

was meinst du mit "MMlsen"?

Äh, ja, war eine Wortkreation von mir. Tschuldige. HMI Human-Machin-Interface-sen oder eine Bedienoberfläche erstellen. 🙂

 

Gruß

Link to comment
  • Solution
4 hours ago, Malchiner said:

Die Suche mit *find* geht schon super schnell und es fällt sofort auf, daß da ebend nicht die Festplatten life durchsucht werden,

find ist tatsächlich live. So etwas wie einen Index gibt es in Linux nur mit "locate" und das gibt es wie gesagt nicht in unRAID. Aber find ist halt Bombe schnell, wenn die Dateistruktur schon mal eingelesen wurde. Dann liegt sie ja im RAM.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.