Nummer Serie Automatisches unmount mit auswerfen und wieder mounten von USB HDDs

Aller Geräte der Nummer-Serie (ohne j, + und xs Zusatz). Geräte für Privatanwender bis hin zu Firmenarbeitsgruppen
Status
Für weitere Antworten geschlossen.

rag3

Benutzer
Mitglied seit
06. Feb 2013
Beiträge
1
Punkte für Reaktionen
1
Punkte
0
Hallo zusammen,

hab mir vor kurzem eine DS1512+ zugelegt und bin beim Einrichten auf das Problem gestoßen, dass die USB-HDD von der DS nicht mit Ruhezustand unterstützt wird. Sie schaltet sich zwar nach Inaktivität von einer gewissen Zeit selbst aus, aber jedes mal bei Login auf dem Webinterface auch wieder an. Daher hab ich nach einer Möglichkeit gesucht, die Festplatte per Skript vor dem Erstellen eines Backups zu mounten und hinterher wieder auszuwerfen.

Herausgekommen ist das nachfolgende Skript. Man benötigt nur die Spezifikationen der Festplatte, die beim Einstecken von der DS nach /tmp/usbtab geschrieben werden. Mit den Werten füttert man die Parameter am Anfang des Skriptes, dann kann man mit "mount_usb.sh mount" bzw. "mount_usb.sh umount" die festplatte automatisiert aktivieren/deaktivieren. Beim unmount prüft das Skript, ob aktuell die angegebene Time Backup Sicherung im Gange ist, erst nach Abschluss wird die HDD ausgeworfen. An dieser Stelle könnt ihr im Prinzip für jede Art von Backup eine Prüfung implementieren.
Im Ergebnis hab ich ein wöchentliches Backup im Time Backup eingerichtet und 5 Minuten vorher einen Task zum mounten erstellt. 5 Minuten nach Start wird dann mit einem weiteren Task der unmount gestartet, er wartet ja dann bis das Backup abgeschlossen ist.

Viel Spaß damit :)

Rich (BBCode):
#!/bin/ash
#Data from /tmp/usbtab
DEVICE_NAME="sdq"
BUSNO="004"
DEVNO="006"

#Time Backup Task Name
TASK_NAME=databackup

#Files to be modified
TARGET_FILE="/tmp/usbtab"
TMP_FILE="/tmp/usbtab.new"

# Check parameter
if [[ "$#" -ne "1" ]]; then
	echo $# wrong parameter count. Correct use: 
	echo mount_usb.sh MODE
	echo Valid modes are: mount, umount
	exit 1;
fi

MODE=$1

if [[ "$MODE" != "mount" && "$MODE" != "umount" ]]; then
	echo wrong parameter.
	exit 2;
fi

# Create temporary usbtab file without the usb drive
grep -v $DEVICE_NAME $TARGET_FILE >$TMP_FILE


if [[ "$MODE" == "umount" ]]; then
	# Sleep as long as time backup is running
	while [ "$( /usr/syno/bin/timebkp list_version --task=$TASK_NAME | grep processing )" ]
	do
		sleep 600
	done
	sync
	/usr/syno/bin/synousbdisk -umount $DEVICE_NAME
elif [[ "$MODE" == "mount" ]]; then
	# Add usb drive to temporary usbtab file
	echo $DEVICE_NAME\=\"/proc/bus/usb/$BUSNO/$DEVNO\">>$TMP_FILE
fi

# In either case write new usbtab
mv -f $TMP_FILE $TARGET_FILE

if [[ "$MODE" == "mount" ]]; then
	# Finally Mount drive if nedded
	/usr/syno/bin/synousbdisk -mount $DEVICE_NAME
fi

exit 0;
 
  • Like
Reaktionen: EDvonSchleck
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