Gemeinsamer Ordner -> Mount -bind

Status
Für weitere Antworten geschlossen.

Bayernguido

Benutzer
Mitglied seit
25. Dez 2014
Beiträge
37
Punkte für Reaktionen
4
Punkte
8
Hallo liebe Forengemeinde

Ich möchte zu meiner (neuen) DS215j ein einzelnes Laufwerk mappen, um Zugriff auf /music, /video und photo zu haben. Wenn ich per Telnet den/die dazugehörigen
Befehle manuell eingebe, so klappt das auch.

z.b.: mount -o bind /volume1/music/ /volume1/Gemeinsam/MP3/


Anhand des folgenden Wiki Eintrages http://www.synology-wiki.de/index.php/Mount_Bind habe ich dann wie dort beschrieben ein Script in /usr/local/etc/rc.d angelegt. Das Script habe ich mit Notepad+ erstellt (Dateiformat Unix Script File), mit Filezilla auf die Box geschoben und auch darauf geachtet das die Rechte
auf 755 stehen. Dummerweise wird das script offenbar nicht ausfgeführt, denn die entsprechenden Ordner bleiben leer.

Hat ev. jemand nen Tip wo der Fehler liegt? Reicht es denn wirklich aus das Script in rc.d zu stellen oder muss man doch noch woanders dafür soren das es ausgeführt wird? Danke im voraus.

Gruss, Guido


--------------------------------
#!/bin/sh
# S99mount.sh
# mount/bind some folders on startup
# and umount them on shutdown/reboot

case $1 in
start)
/bin/mount -o bind /volume1/music/ /volume1/Gemeinsam/MP3/
/bin/mount -o bind /volume1/photo/ /volume1/Gemeinsam/Bilder/
/bin/mount -o bind /volume1/video/movie/ /volume1/Gemeinsam/Filme/
/bin/mount -o bind /volume1/surveillance/ /volume1/Gemeinsam/Kamera/
;;
stop)
/bin/umount /volume1/Gemeinsam/MP3/
/bin/umount /volume1/Gemeinsam/Bilder/
/bin/umount /volume1/Gemeinsam/Filme/
/bin/umount /volume1/Gemeinsam/Kamera/


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

Bayernguido

Benutzer
Mitglied seit
25. Dez 2014
Beiträge
37
Punkte für Reaktionen
4
Punkte
8
so, hab doch noch lösen können.... Mit "VI" konnte ich fesstellen das immer noch ^M in der Datei einthalten waren. Im Notepad+ nochmals sichergestellt das auch "EOL Conversion" auf Unix steht.
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Schön, wenn es läuft. Falls Du Bedarf hast - hier ein Skript, was ich im Einsatz habe. Es tut letztlich das, was Du auch willst, mit zwei Ergänzungen: zum einen wird beim Start/Mounten geschaut, ob das Verzeichnis bereits gemountet ist und unmountet es vor dem erneuten Mount (interessant dann, wenn die DS mal bespw. durch Stromausfall nicht korrekt herunterfährt, dann scheitert das einfache Mounten). Zum anderen wird über die Vorgänge ein Info-Eintrag ins Systemlog /var/log/messages geschrieben. Pfade kannst Du entsprechend Deiner Anforderungen anpassen:

Code:
#!/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
        /bin/rmdir $2
        /usr/syno/bin/synologset1  sys warn 0x11800000 "$0: $2 exists: removed"
        /bin/mkdir -p $2
        /bin/mount -o bind $1 $2
        /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
    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 -f $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Unmounted $1"
    return
}


case $1 in
start)
    mountit /volume1/film /volume1/ds212media/Filme
    mountit /volume1/foto /volume1/ds212media/Fotos
    mountit /volume1/music /volume1/ds212media/Musik
    ;;
stop)
    umountit /volume1/ds212media/Filme
    umountit /volume1/ds212media/Fotos
    umountit /volume1/ds212media/Musik
    ;;
*)
    echo "Usage: $0 [start|stop]"
    ;;
esac
 

reallinus

Benutzer
Mitglied seit
23. Nov 2015
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
und wenn man wie ich auch noch ein qnap hat und von dort die videos per nfs mounten will, dann so:

Code:
#!/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
        /bin/rmdir $2
        /usr/syno/bin/synologset1  sys warn 0x11800000 "$0: $2 exists: removed"
        /bin/mkdir -p $2
        if [ $1 = ${1/":/"/X} ]
        then
                /bin/mount -o bind $1 $2
        else
                /bin/mount $1 $2
        fi
        /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
    else
        /bin/mkdir -p $2
        if [ $1 = ${1/":/"/X} ]
        then
                /bin/mount -o bind $1 $2
        else
                /bin/mount $1 $2
        fi
        /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
    fi
    return
}
umountit()
{
    # $1 umount what
    /bin/umount -f $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Unmounted $1"
    return
}


case $1 in
start)
    mountit /volume1/film /volume1/ds212media/Filme
    mountit /volume1/foto /volume1/ds212media/Fotos
    mountit /volume1/music /volume1/ds212media/Musik
    mountit 192.168.99.99:/Qmultimedia/Video /volume1/ds212media/video
    ;;
stop)
    umountit /volume1/ds212media/Filme
    umountit /volume1/ds212media/Fotos
    umountit /volume1/ds212media/Musik
    umountit /volume1/ds212media/video
    ;;
*)
    echo "Usage: $0 [start|stop]"
    ;;
esac
 
Zuletzt bearbeitet von einem Moderator:

berzerker

Benutzer
Mitglied seit
10. Dez 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Hallo Zusammen,

kann mir bitte jemand helfen. Ich habe das Script kopiert und nur die Pfade geändert.
Leider bekomme ich immer die Meldung:

"...Aktueller Status: 126
Standardausgabe/Fehler:
sh: /volume1/photo/scipt.sh: /bin/sh^M: bad interpreter: No such file or directory"


Rich (BBCode):
#!/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
        /bin/rmdir $2
        /usr/syno/bin/synologset1  sys warn 0x11800000 "$0: $2 exists: removed"
        /bin/mkdir -p $2
        if [ $1 = ${1/":/"/X} ]
        then
                /bin/mount -o bind $1 $2
        else
                /bin/mount $1 $2
        fi
        /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
    else
        /bin/mkdir -p $2
        if [ $1 = ${1/":/"/X} ]
        then
                /bin/mount -o bind $1 $2
        else
                /bin/mount $1 $2
        fi
        /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Mounted $1 to $2"
    fi
    return
}
umountit()
{
    # $1 umount what
    /bin/umount -f $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1  sys info 0x11800000 "$0: Unmounted $1"
    return
}


case $1 in
start)
    mountit /volume1/photo/ /volume1/User/DW/
    ;;
stop)
    umountit /volume1/User/DW/
    ;;
*)
    echo "Usage: $0 [start|stop]"
    ;;
esac
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
da ist immer noch oder schon wieder ein "^M" im script drin !
warscheinlich erste zeile
 

berzerker

Benutzer
Mitglied seit
10. Dez 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
OK schaue ich dann.. Bin erst Morgen wieder am Rechner.
Noch eine andere Frage: kann ich auch Ordner mit Leerzeichen einbinden?
zB. /10 Urlaubsort/

Danke im voraus
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Ja, musst halt in "/volumex/Pfad/mit Leerzeichen/" Gänsefüßchen setzen
 

berzerker

Benutzer
Mitglied seit
10. Dez 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
Moin,

ich bin etwas am verzweifeln. Ich habe die Datei mit div. Editoren wie Notepad++ oder Editrocket bearbeitet gepeichert etc. Die erste Zeile neu geschrieben usw. Ich bekomme den Fehler nicht weg. Habe aber nur Windows und kein Linux um noch weitere Editoren oder dos2unix zu nutzen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Nimm doch einfach den Editor den es auf dem DSM (als Paket) gibt und leg damit eine neue Datei an.
 

berzerker

Benutzer
Mitglied seit
10. Dez 2012
Beiträge
21
Punkte für Reaktionen
0
Punkte
1
EDIT: hat sich erledigt.. "start" im Aufgabenplaner vergessen *facepalm*

Danke - Das hat erstmal geholfen, dass der Fehler weg ist.

Jetzt bekomme ich das - und die Ordner werden nicht gemountet:

Aufgabe: Mount
Startzeit: Wed, 19 Oct 2016 10:29:45 GMT
Stoppzeit: Wed, 19 Oct 2016 10:29:45 GMT
Aktueller Status: 0
Standardausgabe/Fehler:
Usage: /volume1/photo/script.sh [start|stop]
 
Zuletzt bearbeitet:

Morpheus_Stgt

Benutzer
Mitglied seit
28. Apr 2016
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Hallo Frogman,
liebe Forengemeinde,

dies ist mein erster Beitrag in diesem Forum und ich bitte zu entschuldigen, wenn ich etwas ungeschickt fragen sollte.
Auch habe ich von Putty und WinSCP noch recht wenig Ahnung.

Ich habe eine DS415+, möchte einen gemeinsamen Ordner mounten und habe dazu das Skript S99mount.sh aus der (sehr guten) Anleitung des Synology-Wiki (http://www.synology-wiki.de/index.php/Mount_Bind) ausprobiert.
Das hat auch alles super geklappt.

Da mir aber Frogman's erweiterte Variante S99ZZZ_customize.sh fast noch besser gefallen hat, wollte ich diese auch testen.
Ich finde seinen Hinweis auf einen möglichen Stromausfall sehr wichtig!

Ich bin bei Frogman's Skript , wie in der Beschreibung vorgegangen und habe es nur leicht (bei den Pfadangaben) abgeändert.
Beim Neustart der NAS, werden die Laufwerke leider nicht miteinander gemountet, Fehlermeldungen bekomme ich auch keine.

So sieht das Skript nun aus:

#!/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
/bin/rmdir $2
/usr/syno/bin/synologset1 sys warn 0x11800000 "$0: $2 exists: removed"
/bin/mkdir -p $2
/bin/mount -o bind $1 $2
/usr/syno/bin/synologset1 sys info 0x11800000 "$0: Mounted $1 to $2"
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 -f $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1 sys info 0x11800000 "$0: Unmounted $1"
return
}


case $1 in
start)
mountit "/volume1/02 BilderTest/" volume1/phototest
;;
stop)
umountit /volume1/phototest
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac

Kann jemand von Euch einen Fehler feststellen?
Muss ich die sh-Datei in den Ordner /usr/local/etc/rc.d kopieren, wie in der Anleitung beschrieben?
Oder in den Ordner /usr/syno/etc.defaults/rc.d/ wie es in der zweiten Zeile im Skript steht?
Ich habe beides leider erfolglos versucht.

Ein Kollege von mir, meinte dann noch, ich könnte vermutlich "mount -o" gegen "mount --" tauschen, dann wäre scheinbar der mount nur für die Zeit der aktuellen Sitzung aktiv.
Aber würde er sich beim Stromausfall dann auch trennen?

Ich hoffe, ihr könnt mir helfen und möchte mich jetzt schon eimal ganz herzlich für die Unterstützung bedanken.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Hast du das Script mit chmod 755 auführbar gemacht?
 

Morpheus_Stgt

Benutzer
Mitglied seit
28. Apr 2016
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Danke für die schnelle Reaktion.

Ja das habe ich.
Ich habe es mit dem WinSCP, aber auch im Putty ausgeführt.
Und immer direkt aus dem Verzeichnis, indem die sh-Datei liegt.

Vorab habe ich auch die Befehle

synoindex -R phototest dann ls -al S99ZZZ_customize.sh und letztlich chmod 755 S99ZZZ_customize.sh ausgeführt.

Aber lediglich bei ls -al S99ZZZ_customize.sh bekam ich eine Rückmeldung von der Konsole.
So steht's aber ja auch in der Beschreibung.

Komisch ist ja auch, dass ich das andere Skript S99mount.sh immer wieder zum laufen bekomme . . .
Nur mit S99ZZZ_customize.sh will es nicht klappen.
 

Fusion

Benutzer
Sehr erfahren
Mitglied seit
06. Apr 2013
Beiträge
14.165
Punkte für Reaktionen
918
Punkte
424
Dann hast du doch ideale Voraussetzungen, um einen Unterschied zu finden.
la -la listet übrigends einfach nur die Dateien in einem Verzeichnis im Detail bzw. die von einer Datei, wenn angegeben.
chmod ändert die Rechte, keine Fehlermeldung ist mit einer Erfolgsmeldung gleichzusetzen.

Also einfach mal von außen die Dateien vergleichen, Besitzer, Rechte, etc.
Und dann von Innen. Welche Pfade und Binaries werden aufgerufen. Gibt es die auf dem aktuellen DSM so noch? Also einzelne Befehle aus der Datei direkt auf der Konsole probieren. Vielleicht hat sich bei einem davon einfach der Pfad geändert.
 

Morpheus_Stgt

Benutzer
Mitglied seit
28. Apr 2016
Beiträge
15
Punkte für Reaktionen
0
Punkte
1
Das ist es ja gerade.
Ich mache alles genau identisch, Benutzer, Rechte Pfade - sind immer gleich und es ist immer diesselbe Vorgehensweise.
Lediglich die beiden Skripte unterscheiden sich.

Was meinst Frogman den mit # chmod 755 /usr/syno/etc.defaults/rc.d/S99ZZZ_customize.sh
Muss die sh-Datei im Ordner /usr/syno/etc.defaults/rc.d/ abgelegt werden, oder im Ordner /usr/local/etc/rc.d wie in der Anleitung beschrieben?
 

stroemling

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
ich bin am Ende

Hallöchen,
in der Hoffnung, daß hier überhaupt nochmal jemand reinschaut, schreibe ich jetzt mal mein Problem hier hin.
Ich habe das Script von Post #3 für meine Syno angepaßt. Habe aber das Problem, daß es mir einfach den Pfad "video2" auf "volume1/video" nicht anlegen will.
Es kommt immer die Fehlermeldung "./S99mount.sh: line 16: /bin/mkdir/: Not a directory" und dann "mount: mount point /volume1/video/video2 does not exist".

Das Script liegt in /usr/local/etc/rc.d/ und wird aktuell von mir im Verzeichnis so gestartet: sudo ./S99mount.sh start
Ich habe jetzt schon ein paar Stunden verschiedene Sachen ausprobiert, aber nichts will klappen. Das Einzige was klappt ist das Mounten nachdem ich den Ordner "video2" manuell angelegt habe. Wenn ich das Script dann stoppe, funktioniert auch das Unmounten, vorausgesetzt es greift keiner mehr auf diesen Pfad zu (auch noch ein Problem) und der Ordner "video2" wird gelöscht. Was muß ich noch einfügen, damit das Ganze funktioniert. Hier mal das Script:

PHP:
#!/bin/sh
# chmod 755 /usr/local/etc/rc.d/S99mount.sh
# mount/bind some folders on startup and umount them on shutdown/reboot
# write to system log, event ids in /usr/syno/synosdk/texts/enu/events
mountit()
{
# $1 mount what, $2 mount where
if [ -e $2 ]
then
/bin/rmdir $2
/usr/syno/bin/synologset1 sys warn 0x11800000 "$0: $2 exists: removed"
/bin/mkdir -p $2
/bin/mount -o bind $1 $2
/usr/syno/bin/synologset1 sys info 0x11800000 "$0: Mounted $1 to $2"
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 -f $1 && /bin/rmdir $1 && /usr/syno/bin/synologset1 sys info 0x11800000 "$0: Unmounted $1"
return
}

case $1 in
start)
mountit /volume2/video2 /volume1/video/video2
;;
stop)
umountit /volume1/video/video2
;;
*)
echo "Usage: $0 [start|stop]"
;;
esac
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.164
Punkte für Reaktionen
412
Punkte
393
Hallo,
der Fehler liegt in
/bin/mkdir/ -p $2
das muß
/bin/mkdir -p $2
heißen.

Gruß Götz
 

stroemling

Benutzer
Mitglied seit
16. Jan 2014
Beiträge
22
Punkte für Reaktionen
0
Punkte
1
Supi, das war tatsächlich der Fehler, jetzt geht's. Besten Dank.
Und wie kann man jetzt noch sicherstellen, daß tatsächlich getrennt wird? Solange ich, mit welchem Gerät auch immer, auf den gemounteten Ordner zugreife, trennt das Script diesen nicht. Es kommt die Meldung "... target is busy" und "(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)"
Oder werden beim normalen Herunterfahren der DS sowieso erst die User getrennt bevor das Script ausgeführt wird? Denn dann wäre es ja egal.
 
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