Mount/Bind Problem

Status
Für weitere Antworten geschlossen.

m4tz3

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Hi, zunächst mal sorry falls ich die Lösung auch irgendwo hier im Forum hätte finden können was mir leider nicht gelungen ist.

Ich habe nen DS413j mit 2 Platten.
Nun würde ich gerne den Ordner Filme der auf volume2 liegt in den video ordner auf volume1 mounten bzw binden, also so dass im video Ordner dann der Ordner Filme liegt.

Im Wiki habe ich dazu ein Skript gefunden und abgeändert.
#!/bin/sh
# chmod 755 /usr/syno/etc.defaults/rc.d/S99ZZZ_customize.sh
# mount/bind some folders on startup and umount them on shutdown/reboot (http://www.synology-wiki.de/index.php/Mount_Bind)
# Write to system log, event ids in /usr/syno/synosdk/texts/enu/events (http://forum.synology.com/enu/viewtopic.php?f=27&t=6396)
mountit()
{
# $1 mount what, $2 mount where
if [ -e $2 ]
then
/usr/syno/bin/synologset1 sys err 0x11800000 "$0: $2 exists"
else
/bin/mkdir -p $2
/bin/mount -o bind $1 $2
/usr/syno/bin/synologset1 sys info 0x11800000 "$0: Mounted $1 to $2"
fi
return
}
umountit()
{
# $1 umount what
/bin/umount $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1 sys info 0x11800000 "$0: Unmounted $1"
return
}

case $1 in
start)
mountit /volume2/Filme/ /volume1/video/Filme/
;;
stop)
umountit /volume1/video/Filme/
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
Die Datei habe ich wie im Wiki beschrieben S99mount.sh benannt, in den richtigen Ordner kopiert und die Rechte auf 755 gesetzt.
Anschließend den NAS neu gestartet aber nichts passiert. Sieht von euch vielleicht jemand meinen denkfehler?
Wäre cool wenn ihr mir da weiter helfen könntet. Hatte bishher nen Qnap, war zwar alles ähnlich aber doch nicht gleich.

Greetz Matze
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.020
Punkte für Reaktionen
273
Punkte
393
Hallo,
funktioniert das Script wenn Du es auf der Kommandozeile ausführtst? Hast Du das Verzeichnis /Volume1/video/Filme angelegt?

Gruß Götz
 

m4tz3

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
das script habe ich noch nicht in der komandozeile ausprobiert. ja den ordner habe ich erstellt.
 

m4tz3

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Ha, Götz danke, das war das Problem.
Der Ordner Filme war schon angelegt und das Script hat dann das gemacht was es soll, nicht noch einen Ordner anlegen.
Warum aber das Script gestern Abend überhaupt nicht ausgeführt wurde, weiß ich nicht, ist aber auch egal, nun geht es ja.

Danke für die Hilfe

Edit:
Nun würde ich noch gerne den Inhalt von video in einen Ordner Multimedia mounten also /volume1/Multimedia/
Gibts da ne möglichkeit dass ich alle Ordner die in video liegen aufeinmal mounte oder muss ich für jeden Unterordner eine Zeile ins Mountscript schreiben?
 
Zuletzt bearbeitet:

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.020
Punkte für Reaktionen
273
Punkte
393
Hallo,
Du kannst den ganzen Ordner /volume1/video in den (leeren) Ordner /volume1/multimedia mounten.

Gruß Götz
 

m4tz3

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Muss es glaube ich genauer definieren. Ich möchte, dass der Pfad so aussieht /volume1/Multimedia/Serien oder /volume1/Multimedia/Dokumentationen oder /volume1/Multimedia/Filme. Serien und Dokumente liegen im /volume1/video Ordner als Unterordner /Serien oder /Dolumentationen. Gibt es einen Weg wie ich alle Unterordner Mounte ohne den Ordner mitzumounten, also in dem Sinne dass ich in Multimedia nicht das hier habe /volume1/Multimedia/video/Serien/ etc.

Gruß
 
Zuletzt bearbeitet:

Ap0phis

Benutzer
Mitglied seit
16. Dez 2010
Beiträge
6.731
Punkte für Reaktionen
3
Punkte
158
Ich bin mir nicht sicher, ob ich´s verstehe.

Aber warum richtest du den gemeinsamen Ordner "Multimedia" nicht direkt auf volume2 ein, schiebst deine Filme da rein, und mountest von da aus die Filme nach Video?

Was du vor hast hört sich für mich igendwie doppelt gemoppelt an.
Und irgendwann verlierst du auch sicher selber den Überblick, wenn du von hüh nach hott und wieder zurück mountest. ;-)

Verschachtelte mounts - wenn es überhaupt funktioniert - würde ich immer weitestgehend vermeiden!
 

m4tz3

Benutzer
Mitglied seit
21. Okt 2012
Beiträge
46
Punkte für Reaktionen
0
Punkte
6
Die Filme liegen auf Volume2 weil die zu groß sind, passen nichtmehr auf Volume1
Den Ordner Multimedia mag ich erstellen weil da auch noch Musik und Bilder reinsollen.
Damit würde ich mir die Konfiguration an allen rechner im Haus sparen weil die noch den Multimedia Ordner als Netzlaufwerk eingerichtet haben.
und in videos mag ich den Spass eigentlich nur drin weil ich ein bisschen mit den Automatischen Filminfos der Videosation rumspieln will :)
 

sulleyhund

Benutzer
Mitglied seit
05. Feb 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Hey habe das Problem leider auch. Ich hab die Datei S99mount.sh mittels WINSCP v.5.1.2 unter /usr/syno/etc.defaults/rc.d/ gespeichert und dort unter Eigeschaften root:root unn den Oktalwert auf 0755 gesetzt. Hier mein Script:

Rich (BBCode):
#!/bin/sh
# chmod 755 /usr/syno/etc.defaults/rc.d/S99mount.sh
# mount/bind some folders on startup and umount them on shutdown/reboot (http://www.synology-wiki.de/index.php/Mount_Bind)
# Write to system log, event ids in /usr/syno/synosdk/texts/enu/events (http://forum.synology.com/enu/viewtopic.php?f=27&t=6396)
mountit()
{
	# $1 mount what, $2 mount where
	if [ -e $2 ]
	then
		/usr/syno/bin/synologset1  sys err 0x11800000 "$0: $2 exists"
	else
		/bin/mkdir -p $2
		/bin/mount -o bind $1 $2
		/usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
	fi
	return
}
umountit()
{
	# $1 umount what
    /bin/umount $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Unmounted $1"
	return
}

case $1 in
start)
	mountit /volume1/data/test /volume1/video/test/
	;;
stop)
	umountit /volume1/video/test/

	;;
*)
	echo "Usage: $0 [start|stop]"
    ;;
esac

Leider wird das Script nicht ausgeführt beim Hochfahren.
Habe die folgenden Zeilen per Kommandozeile getestet:

Rich (BBCode):
/bin/mkdir -p /volume1/video/test/
Der Ordner wurde erstellt. Check.

Rich (BBCode):
/bin/mount -o bind /volume1/data/test/ /volume1/video/test/
Ordner wurde gemounted. Check.

Rich (BBCode):
/bin/umount /volume1/video/test/
Ordner wurde wieder unmounted. Check.

Rich (BBCode):
/bin/rmdir /volume1/video/test/
Ordner wurde gelöscht. Check


Ich weiß also nicht wieso das Script nicht ausgeführt wird. Kann mir jemand helfen? Muss ich noch was anderes aktivieren, damit eigene Scripte ausgeführt werden?

Gruß
Sulleyhund
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
schreib doch bitte mal als erste Zeile deiner mountit Fkt etwas in dieser Richtung
Code:
touch /root/test.file
danach reboot und gucken ob das File angelegt wurde
 

sulleyhund

Benutzer
Mitglied seit
05. Feb 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Leider ohne Erfolg.

Das Script sollte eigentlich funktionieren, da ich es hier her hab.

Ich glaube eher das meine DS das Script beim hochfahren nicht startet.

Hier noch kurze Infos zu meiner DS

DS 212+
DSM 4.1-2668
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ich habs mal bei mir auf einer DS109+ mit aktuellster Firmware getestet. Funzt soweit einwandfrei. Allerdings habe ich beim Testen gesehen, dass die Prüfung auf der error in mountit etwas streng ist. Nur weil das Zielverzeichnis des mounts existiert heisst dies ned, dass auch etwas darauf gemountet ist. Ich würde da eher mittels mount prüfen ob es bereits gemountet ist.
Das Problem kommt dann wenn mal nichts gemountet ist und das Zielverzeichnis trotzdem existiert. Dann wird umounit das Verzeichnis nicht löschen und mountit beim nächsten Aufruf in den Fehlercase kommen, weil das Verzeichnis ja noch existiert. Ich würde die Prüfung im mountit eher so machen
Code:
if [ "x$(mount | grep $2)" != 'x' ] ; then
[LEFT][COLOR=#333333] /usr/syno/bin/synologset1  sys err 0x11800000 "$0: $2 exists"
[/COLOR][COLOR=#333333]else[/COLOR][COLOR=#333333]  
 /bin/mkdir -p $2 >/dev/null 2>&1[/COLOR][COLOR=#333333]
 /bin/mount -o [/COLOR][COLOR=#333333]bind[/COLOR][COLOR=#333333] $1 $2
[/COLOR][COLOR=#333333] /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
[/COLOR][COLOR=#333333] fi[/COLOR][COLOR=#333333]
[/COLOR][/LEFT]
 
Zuletzt bearbeitet:

sulleyhund

Benutzer
Mitglied seit
05. Feb 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
hab jetzt auch mit deinem Vorschlag versucht. Aber leider ohne erfolg.
Ich glaube echt, dass meine DS das script nicht abarbeitet bzw. gar nicht erst aufruft.
Aber was mache ich da falsch?

Ich hab die hierhin kopiert:
Rich (BBCode):
/usr/syno/etc.defaults/rc.d/
oder gibt es noch andere Orte für Scripte außer /usr/syno/etc.defaults/rc.d/ und /usr/syno/etc/rc.d/ ?

Die Rechte von der S99mount.sh Datei lauten:
Rich (BBCode):
-rwxr-xr-x    1 root     root


Ich weiß sonst echt nicht was ich falsch gemacht haben könnte
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
gibt es denn eine Fehlermeldung wenn du das Script direkt auf der Konsole aufrufst? Ich habe das Testscript auch in /usr/syno/etc.defaults/rc.d gehabt von dem her müsste das passen
 

sulleyhund

Benutzer
Mitglied seit
05. Feb 2012
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
Also ich habs jetzt hinbekommen.
Frag mich nicht warum aber es ging so:

Habe die alte S99mount.sh in /usr/syno/etc.defaults/rc.d sowie den Zielordner, welche die verknüpfung beinhalten sollte, gelöscht.

Dann mit Hilfe vom AdminTool unter Disks -> Mount im neuem Fenster die Registerkarte /usr/syno/etc/rc.d/S99mount.sh geöffnet. Ist quasi schon alles vorgefertig dort.
Hab dann meinen Code reingeschireben:
Rich (BBCode):
#!/bin/sh
# chmod 755 /usr/syno/etc.defaults/rc.d/S99mount.sh
# mount/bind some folders on startup and umount them on shutdown/reboot (http://www.synology-wiki.de/index.php/Mount_Bind)
# Write to system log, event ids in /usr/syno/synosdk/texts/enu/events (http://forum.synology.com/enu/viewtopic.php?f=27&t=6396)
mountit()
{ 
	# $1 mount what, $2 mount where
	if [ "x$(mount | grep $2)" != 'x' ] ; then
	/usr/syno/bin/synologset1 sys err 0x11800000 "$0: $2 exists" 
	else /bin/mkdir -p $2 >/dev/null 2>&1 
	/bin/mount -o bind $1 $2 
	/usr/syno/bin/synologset1 sys info 0x11800000 "$0: Mounted $1 to $2" 
	fi
	return
}
umountit()
{
	# $1 umount what
    /bin/umount $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Unmounted $1"
	return
}

case $1 in
start)
	mountit /volume1/data/test /volume1/data/test1/
	;;
stop)
	umountit /volume1/video/test1/

	;;
*)
	echo "Usage: $0 [start|stop]"
    ;;
esac

eingegeben und abgespeicher (alles in AdminTool).

Dann unter AdminTool -> Tools -> Explorer den Pfad /usr/syno/etc/rc.d geöffnet (dieser rc.d Ordner ist selbst gemounted und zwar auf /usr/syno/etc.defaults/rc.d. Daher macht es keinen Unterschied) und die S99mount.sh ausgewählt.

File attributes gesetzt auf:

chown -> root:root
chmod -> 755

Dann die Kiste neu gestartet und siehe da... er hats gemacht.

Keine Ahnung ob am Programm lag. Hab es sonst immer mit WinSCP v1.5.2 gemacht und auch dort die Attribute geändert. Aber damit hat es nie funktioniert. Oder vielleicht hab ich was falsch gemacht beim speichern der .sh mit Notepad++. Aber nun gut. So gehts auch und vorallem auch einfach, da alles mit grafischer Oberfläche im Admintool zu machen ist. Hab immer noch so meine Probleme mehre Sachen via Kommandozeile zu machen und verliere manchmal die Orientierung bei welchem Schritt ich war und ob das auch Richtig war, was ich eingetippt hab.




Vielen Dank jahlives für deine Unterstützung
 

sally

Benutzer
Mitglied seit
04. Mai 2013
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Ich hatte dasselbe Problem: Skript geschrieben, ins richtige Verzeichnis geschoben, Rechte gesetzt -- und beim Neustart wurde das im Script angegebene Verzeichnis nicht verknüpft und man fragt sich: wurde das Skript überhaupt gestartet?

Lösung: das Skript war mit einem Windows-Editor geschrieben, d.h. CR (carriage return) und LF (line feed) am Zeilenende. Alle .sh-Dateien im rc.d-Verzeichnis sind aber im Unix-Format, d.h. die haben am Zeilenende nur ein LF. Also einfach die Datei entsprechend umgewandelt (z.B. dos2unix) und an entsprechende Position kopiert. Dann funktionierts.
 

lebbes

Benutzer
Mitglied seit
05. Jan 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Script für Umlaute und Leerzeichen angepasst

Hallo Gemeinde,

vielen Dank für die Entwicklung und Weiterentwicklung des Scriptes. Es ist genau das, was ich gesucht habe.


<-- Anpassung: Pfad mit Leerzeichen, Bindestriche, und Umlaute -->

Mit der Anpassung funktionieren bei mir auch Verzeichnisse mit Leerzeichen, Bindestriche und Umlaute. Ich hoffe ich kann dem Ein oder Anderem damit weiter helfen (Ich habe leider 3 Tage gebraucht, um das hier zu finden) :

- Variablen, die einen Dateinamen beinhalten, sollten immer in "
geschrieben werden, weil sie Leerzeichen enthalten können.
Bsp:
ls "$f"
http://www.wikidorf.de/reintechnisch/Inhalt/ShellKurzueberblick



#!/bin/sh
# chmod 755 /usr/local/rc.d/PHOTOmount.sh
# mount/bind some folders on startup and umount them on shutdown/reboot (http://www.synology-wiki.de/index.php/Mount_Bind)
# Write to system log, event ids in /usr/syno/synosdk/texts/enu/events (http://forum.synology.com/enu/viewtopic.php?f=27&t=6396)
mountit()
{
# $1 mount what, $2 mount where
if [ "x$(mount | grep "$2")" != 'x' ] ; then
/usr/syno/bin/synologset1 sys err 0x11800000 "$0: $2 exists"
else
/bin/mkdir -p "$2" >/dev/null 2>&1
/bin/mount -o bind "$1" "$2"
/usr/syno/bin/synologset1 sys info 0x11800000 "$0: Mounted $1 to $2"
fi
return
}
umountit()
{
# $1 umount what
/bin/umount "$1" && /bin/rmdir "$1" && /usr/syno/bin/synologset1 sys info 0x11800000 "$0: Unmounted "$1""
return
}

case $1 in
start)
mountit "/volume1/photo/bla blub/Königssee/" "/volume1/bla bli blub/2004 - Königssee/"

;;
stop)
umountit "/volume1/bla bli blub/2004 - Königssee/"


;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
 
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