Medienindizierung triggern

Status
Für weitere Antworten geschlossen.

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Hi,

ich habe festgestellt, dass die Medienindizierung neuer Dateien nicht ausgelöst wird wenn diese über ssh als root erstellt werden.

Hintergrund:
Ich nutze Unison um meine iTunes Musik vom MacBook auf das NAS zu spiegeln. Das klappt soweit auch wunderbar und automatisiert. Unison loggt sich als root per ssh ein und überträgt die Dateien. Berechtigungen passen auch. Die SynoACL`s werden vererbt, somit sind die Dateien normal zugänglich so wie es sein sollte.
Nur in der AudioStation tauchen sie erst auf, wenn auf "normalem" Weg (FileStation,SMB,SFTP usw.) eine Datei hinzugefügt/geändert wird. Daher meine Vermutung, dass die Indizierung nicht getriggert wird.

Ich suche deshalb eine Möglichkeit diese Indizierung automatisch (am liebsten gleich mit im Unison Shell Skript) mit auszulösen.

Der Re-index Button in der Systemsteuerung stellt keine Alternative dar, da dieser offensichtlich alle Dateien nochmals untersucht, was ja sonst nicht der Fall ist.

Vielen Dank im Voraus
Grüße
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Nur mal als Gedanke - was passiert, wenn Du den Login der App nicht über 'root' laufen läßt, sondern mit 'admin'? Können dann die Daten ebenfalls kopiert werden und werden dann eventuell automatisch indiziert?
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Ich suche deshalb eine Möglichkeit diese Indizierung automatisch (am liebsten gleich mit im Unison Shell Skript) mit auszulösen.

In einem Shell-Skript kannst du dafür den Befehl 'synoindex' verwenden. Eine Hilfe dazu erhälst du, wenn du den Befehl ohne Parameter eingibst.
 

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Vielen Dank für eure Antworten!

@Frogman:
der admin-Account ist bei mir deaktiviert. Wenn ich meinem anderen administrator-User ssh-Zugang gebe ist ihm der "chown"-Befehl nicht erlaubt, was das Ausführen von unison für mich unbrauchbar macht.
Ich habe aber mit dem Account mal einen "touch Dummy.mp3" Befehl abgesetzt. Ich weiß nicht ob das wirklich vergleichbar ist mit dem Übertragen der Musik, aber jedenfalls wird damit die Indizierung auch nicht angestoßen.

Allein aus Sicherheitsgründen müsste ich aber auf den administrator-User umsteigen. Weißt du wie ich das mit dem chown in den Griff bekomme?

@xabano:
Danke, genau danach habe ich gesucht!
Ich habe folgenden Befehl ausprobiert:
Rich (BBCode):
synoindex -R share:02_Musik
02_Musik ist der betroffene Ordner. Bei diesem Befehl wird aber auch der gesamte Ordner gecheckt. In der DSM-Oberfläche sieht es sogar so aus als hätte ich den "Neu indizieren"-Button in der Systemsteuerung gedrückt. Der Prozess ist mehr als 10min beschäftigt, das ist ja nicht der Fall wenn ich über die File Station eine einzige mp3 hinzufüge?
Ist das unvermeidbar oder benutze ich den Befehl falsch?

Grüße
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Ich brauche den Befehl um Einträge aus dem Index zu löschen, das mache ich mit dem Parameter -d.
Mit Unison kenne ich mich nicht aus. Ist es damit nicht möglich, eine Liste der betroffenen Dateien zu erhalten? Dann könnte der Parameter -a verwendet werden, um die einzelnen Dateien im Index zu ergänzen.

Gemäss Hilfe-Text erfolgt mit -R eine Reindexierung des gesamten angegebenen Ordners.
 

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Scheinbar ist das mit Unison nicht möglich.
Ich scheitere gerade daran das mit "find" umzusetzen. Soweit bin ich bisher:
Rich (BBCode):
find /volume2/02_Musik/ -mtime -1 -exec synoindex -a {} \;

Leider spuckt er mir da lauter Dateien aus den @eaDir Verzeichnissen mit aus, aber wenn ich "-iname eaDir" ergänze um das zu verhindern gibt es gar keine Ausgabe mehr. Verstehe ich nicht ganz.

Grüße

EDIT: Okay hat sich erledigt. mit "-user <USERNAME>" kriege ich die Dateien auch ausgeschlossen. Würde mich aber trotzdem interessieren warum der "iname"-Parameter nicht so funktioniert wie ich mir das vorstelle
 
Zuletzt bearbeitet:

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Mit unison kann ein Log-File generiert werden. Wie einfach der Inhalt für die Indexierung verwendet werden kann weiss ich aber nicht.

Bei find kann mit dem Parameter -prune ein Ordner von der Suche ausgeschlossen werden:

Rich (BBCode):
find /volume2/02_Musik/ -path /volume2/02_Musik/@eaDir -prune -o -mtime -1 -type f -print

Der Parameter -iname macht eigentlich nichts anderes, als dass die Gross-/Kleinschreibung in der Namensuche nicht beachtet wird (im Gegensatz zu -name).
 

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Vielen Dank für deine Hilfe!

Das mit find war mein Fehler, hab den iname-Parameter total missverstanden.

Ich hab das Unison-Log mal in Angriff genommen, da das die präzisere Lösung wäre (mit der Änderungszeit von "find" könnte mir mal was durch die Lappen gehen).
Es war nicht ganz so einfach, aber ich hab jetzt schon folgendes Format hingekriegt:
Rich (BBCode):
/volume2/02_Musik/INTERPRET NAME/ALBUM NAME
/volume2/02_Musik/INTERPRET NAME/ALBUM NAME/TITEL NAME.mp3
...

Es fehlen mir nur noch zwei Schritte:

1: Ich muss es in eine Formatierung bringen die als shell input erlaubt ist, sprich einen Backslash vor jedem Leer- und Sonderzeichen. Also
Rich (BBCode):
/volume2/02_Musik/INTERPRET\ NAME/ALBUM\ NAME
/volume2/02_Musik/INTERPRET\ NAME/ALBUM\ NAME/TITEL\ NAME.mp3
...

Im Netz hab ich folgendes gefunden:
printf "%q" "<INPUT>"

%q - causes printf to output the corresponding argument in a format that can be reused as shell input
Auf dem Mac funktioniert das, aber die DS kennt %q nicht :(

2: Es kommen sowohl Ordner als auch Dateien bunt gemixt im Unison-Log vor, das lässt sich auch nicht vermeiden. Diese müssen ja voneinander getrennt an synoindex gegeben werden.
Das lässt sich sicherlich mit nem geschickten "grep" umsetzen, aber Punkt 1 bereitet mir Kopfzerbrechen

Grüße
 

xabano

Benutzer
Mitglied seit
17. Aug 2008
Beiträge
411
Punkte für Reaktionen
0
Punkte
22
Ohne das getestet zu haben:

Zu 1:
Es dürfte wohl einfacher sein den gesamten Pfad zu quoten. Dann könnte man auf das Schützen von Leer- und Sonderzeichen verzichten.

Zu 2:
Um zu verhindern, dass ganze Verzeichnisse indiziert werden würde ich vor dem Absetzen des Index-Befehles jeweils prüfen, ob der Pfad zu einer Datei führt und nur dann indexieren.
 

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Hi,

Zu 1:
danke für den Tipp mit den Quotes, da hab ich zu kompliziert gedacht :eek:

Zu 2:
Es ging mir eigentlich darum, dass synoindex ja zwischen "add a file" und "add a dir" unterscheidet, und ich diese deswegen auch voneinander trennen muss um synoindex mit dem richtigen Parameter darauf auszuführen. Aber ich hab gerade festgestellt, dass er keinen Fehler ausspuckt wenn ich beim "add a dir" Parameter eine Datei angebe. Das schaue ich mir nochmal genauer an.

Jedenfalls hab ich jetzt mit deiner Hilfe ein funktionierendes Ergebnis zustande gekriegt :)
Folgend skizziere ich mal den Aufbau des Logs und meinen Befehl dazu. Über Verbesserungsvorschläge würde ich mich freuen

Das Log sieht ungefähr so aus:
Rich (BBCode):
UNISON 2.40.69 started propagating changes at 21:16:52.91 on 12 Jan 2015
[BGN] Copying <INTERPRET>/<ALBUM>/01 <Titel>.mp3 from /<LOCAL>/<PATH>/Music to //syno//volume2/02_Musik
[BGN] Copying <INTERPRET>/<ALBUM> from /<LOCAL>/<PATH>/Music to //syno//volume2/02_Musik
[BGN] Copying properties for Playlists/2014.m3u from /<LOCAL>/<PATH>/Music to //syno//volume2/02_Musik
...
[END] Copying <INTERPRET>/<ALBUM>/01 <Titel>.mp3
[END] Copying <INTERPRET>/<ALBUM>
[END] Copying properties for Playlists/2014.m3u
...
UNISON 2.40.69 finished propagating changes at 21:18:50 on 12 Jan 2015
Synchronization complete at 21:18:53  (xx items transferred, 0 skipped, 0 failed)

Anmerkungen:
- Je nachdem, ob nur eine Datei oder ein ganzer Ordner oder nur eine Datei lokal neu erstellt wurde, steht im Log auch nur der Ordner (auch wenn da Dateien drin sind) oder die Datei, daher mein Gedanke mit der Unterscheidung
- Bei neuen Dateien steht nur "Copying", bei geänderten properties "Copying properties" -> logisch :D
- Als Dateien kommen vor: m4a, mp3, m3u

Vorausgesetzt ich muss wirklich nicht zwischen Datei und Ordner bei synoindex trennen, sieht mein Befehl folgendermaßen aus:
Rich (BBCode):
cat /<LOCAL>/<PATH>/Unison.log | ssh root@syno 'cat | grep "END.*Copying" | sed -e "s:\[END\] Copying properties for :/volume2/02_Musik/:" -e "s:\[END\] Copying :/volume2/02_Musik/:" | synoindex -A "$1"'
 

Hoffy

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
241
Punkte für Reaktionen
1
Punkte
24
Hi,

ich hab mich schon wieder vertan, es funktioniert doch noch nicht :(

zum einen hab ich festgestellt, dass synoindex zwar keine Fehlermeldung ausspuckt wenn ich beim "Datei hinzufügen"-Parameter einen Ordner angebe, es aber auch nichts passiert, also muss ich doch Ordner von Dateien trennen und extra synoindex zuführen.

Und das zuführen ist auch mein zweites Problem

@xabano: Könntest du vl mal die Syntax posten mit der du synoindex benutzt?

Ich kriege die Verkettung der Befehle nicht hin. Ich habe (in meinem jugendlichen Leichtsinn) übertragen von
Rich (BBCode):
echo "/PATH" | cat $1
auf
Rich (BBCode):
echo "/PATH" | synoindex -A $1
aber das funktioniert nicht. Dann kommt noch hinzu, dass ich die Sachen gequotet an synoindex übergeben muss. Bei
Rich (BBCode):
echo "/PATH" | synoindex -A "\$1"
echo "/PATH" | synoindex -A "$1"
spuckt synoindex zwar keine Fehlermeldung mehr aus wie beim Ersten, aber es funktioniert auch nicht.

Ich kenne mich mit diesen Feinheiten auch nicht aus muss ich zugeben, deswegen würde ich mich über Hilfe freuen

Grüße
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat 

 
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten. Dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit hohem technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive Werbung und bemühen uns um eine dezente Integration.

Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.

Du kannst uns auch über unseren Kaffeautomat einen Kaffe ausgeben oder ein PUR Abo abschließen und das Forum so werbefrei nutzen.

Vielen Dank für Deine Unterstützung!