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
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;