Moin,
natürlich gebe ich meine zusammengesuchten Erkenntnisse hier gerne wieder.
Ich bin allerdings kein Linux-Freak und habe mir die Infos irgendwie zusammengesucht. Es kann also sein, dass es wesentlich einfachere Wege gibt, die Funktion des Copy-Buttons zum Kopieren vom NAS auf ein angeschlossenes externes USB-Gerät zu modifizieren. Alle Infos hier sind also ohne Gewähr, wenn Du mit diesem Eingriff Dein NAS, die Garantie oder Deine Daten beschädigst, ist das Dein Problem. Aber keine Bange, ich habs auch hinbekommen, also kann es nicht so schwer sein.
Voraussetzung für die erfolgreiche Umsetzung ist allerdings, dass Grundkenntnisse im Umgang mit der Befehlszeilenebene, mit Linux, mit SSH, WinSCP, RSYNC und ggf. Putty vorhanden sind.
1.) Was wird benötigt:
- auf dem NAS muss der SSH-Dienst aktiviert sein
- auf dem NAS muss unter "externe Geräte" im Bereich USB-COPY ein Zielpfad angegeben und die USB-COPY-Funktion muss dort auch aktiviert sein
- auf Deinem Rechner sollte das Programm WinSCP (
http://www.chip.de/downloads/WinSCP_13007380.html) installiert sein
- als Editor für eine eigene Skriptdatei empfehle ich den Crimson Editor (
http://www.heise.de/download/crimson-editor-1124525.html)
2.) Was passiert eigentlich, wenn man den USB-COPY-Button am NAS drückt ?
Der USB-COPY-Button am NAS ist nur dann aktiv, wenn ein USB-Gerät (Festplatte, USB-Stick) am VORDEREN (!!!!!!!) USB-Anschluss im NAS eingesteckt ist. Drückt man bei eingestecktem USB-Gerät den USB-COPY-Button, dann wird auf dem NAS im Ordner
/usr/syno/bin die Datei "
synousbcopy" ausgeführt.
Damit wir also die Funktion des USB-COPY-Buttons beeinflussen können, müssen wir genau diese Datei (
synousbcopy) für unsere Zwecke verändern.
3.) Ändern der Datei 'synousbcopy'
Dazu verbinden wir uns mit dem o.g. Programm WinSCP mit dem Benutzer 'root' und dem ADMIN-Passwort des NAS mit dem NAS und wechseln in das Verzeichnis
/usr/syno/bin
Dort suchen wir die Datei '
synousbcopy' und benennen diese mit F2 um (z.B. in '
synousbcopy_'). Somit können wir später, falls es erforderlich ist, die alte Datei einfach wieder herstellen, indem wir sie wieder in '
synousbcopy' zurückbenennen.
Jetzt müssen wir eine neue eigene Datei mit dem Namen '
synousbcopy' erstellen und diese anschließend auf das NAS kopieren und mit entsprechenden Rechten versehen.
Um die Datei anzulegen starten wir den Crimson-Editor und aktivieren dort unter TOOLS --> PREFERENCES --> FILE den Punkt "Save files in Unix Format" und "Save remote files in UNIX format".
Um eine neue Datei anzulegen klicken wir im Crimson-Editor auf FILE --> NEW und tragen folgende Befehlszeilen ein
Rich (BBCode):
#!/bin/sh
#führt nach Drücken der USB-COPY-Taste das angegebene Skript aus
sh /volume1/Public/sicherungsskript.sh
Danach unter dem Namen '
synousbcopy' (ohne ' und ohne Dateiendung) am besten erstmal direkt auf Laufwerk C: speichern.
4.) Kopieren der eigenen 'synousbcopy' auf das NAS und setzen der Dateirechte
Anschließend verbinden wir uns wieder mittels WinSCP mit dem NAS und kopieren die neu erstellte Datei '
synousbcopy' von Laufwerk C auf das NAS in den Ordner
/usr/syno/bin.
Danach müssen der Datei noch entsprechende Rechte zuweisen. Dazu diese einfach in WinSCP markieren und F9 drücken. In den dann angezeigten Eigenschaften der Datei als
Gruppe und Eigentümer 'root' auswählen und weiter unten unter Oktal
0755 eintragen. Dann mit ok bestätigen.
Wenn man nun ein USB-Gerät am VORDEREN (!!!!) USB-Anschluss anschließt und den USB-COPY-Button drückt wird also zukünftig auf dem NAS das Skript mit dem Namen '
sicherungsskript.sh' im Ordner 'Public' ausgeführt. In dieses Skript können wir unsere eigenen Befehle für das Backup schreiben und daher auch die Kopierrichtung (vom NAS auf einen externen USB-Datenträger) beeinflussen.
Testweise legen wir einfach über den Crimson-Editor mal eine Datei mit folgendem Inhalt an:
Rich (BBCode):
#!/bin/sh
# 3mal langer Piepton #
echo 3 >/dev/ttyS1
exit 0
Diese Datei speichern wir unter den Namen '
sicherungsskript.sh' (wieder ohne ', aber diesmal mit der Dateiendung .sh) im Ordner Public auf dem NAS. WICHTIG : GROSS- UND KLEINSCHREIBUNG BEIM DATEINAMEN BEACHTEN. IN DIESEM FALL ALLES KLEIN SCHREIBEN !!!!
Drückt man nun bei angeschlossenem USB-Gerät am VORDEREN (!!!!) USB-Anschluss die USB-COPY-Taste, dann sollte das NAS 3x einen langen Piepton ausgeben.
Ich hoffe, dass bis hierher erstmal halbwegs verständlich rüberkommt, wie man das Verhalten des USB-COPY-Buttons beeinflussen kann. Allerdings ist die Änderung in der Datei
'synousbcopy' nach einem Firmwareupdate des NAS wieder weg und man muss die Änderung erneut durchführen.
Wie nun ein eigenes Sicherungsskript inhaltlich auszusehen hat, das hängt eben davon ab, was man wie sichern will, und natürlich davon, wie weit die Linux-Kenntnisse reichen.
Hier mal mein zusammengebasteltes Sicherungsskript, .......es kopiert Daten vom NAS auf eine externe USB-Festplatte und verschickt anschließend eine Statusmail. Infos dazu, was für eine Statusmail benötigt wird, findest du unter
http://www.synology-forum.de/showth...t-ohne-IPKG-und-Nail&highlight=statusmail.php
Gruß
Fraubi
Rich (BBCode):
#!/bin/sh
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------
# Das Skript führt eine Sicherung des Ordners JAHRESARCHIVE auf einen angeschlossenen USB-Datenträger durch.
# Vor dem Start wird der Pfad des USB-Datenträgers ermittelt, indem versucht wird, eine Datei auf den Datenträger zu schreiben.
# Sollte dieses nicht möglich sein, bzw. sollte kein USB-Datenträger vorhanden sein, bricht die Sicherung ab und es wird eine Fehlermail ausgelöst.
# Nach jeder Ausführung des Skripts wird eine Mail generiert. Dazu muss im Ordner /VOLUME1/PUBLIC auf dem NAS die Datei STATUSMAIL.PHP vorhanden sein.
#
# Stand : 05/2014 - Version 1.1
#------------------------------------------------------------------------------------------------------------------------------------------------------------------------
### Bitte hier den Pfad zu statusmail.php anpassen
script_path=/volume1/Public/statusmail.php
### Prüfung als welches Laufwerk der USB-Datenträger gemountet ist. Es wird versucht, eine Datei zu schreiben. Ist dieses erfolgreich, so
### wird als Rückgabewert die 0 ausgeben, die in der Variablen $? steht. Damit steht fest, dass das Verzeichnis/Laufwerk vorhanden ist
pfad=5
hostname=`hostname -s`
touch /volumeUSB1/usbshare1-2/ds3612extusb.txt
if [ $? -eq 0 ]; then
rm /volumeUSB1/usbshare1-2/ds3612extusb.txt
pfad="/volumeUSB1/usbshare1-2"
fi
touch /volumeUSB2/usbshare1-2/ds3612extusb.txt
if [ $? -eq 0 ]; then
rm /volumeUSB2/usbshare1-2/ds3612extusb.txt
pfad="/volumeUSB2/usbshare1-2"
fi
touch /volumeUSB3/usbshare1-2/ds3612extusb.txt
if [ $? -eq 0 ]; then
rm /volumeUSB3/usbshare1-2/ds3612extusb.txt
pfad="/volumeUSB3/usbshare1-2"
fi
touch /volumeUSB4/usbshare1-2/ds3612extusb.txt
if [ $? -eq 0 ]; then
rm /volumeUSB4/usbshare1-2/ds3612extusb.txt
pfad="/volumeUSB4/usbshare1-2"
fi
#------------------------------------------------------------------------------------------------------------------------------------------------
#erstellt eine Fehlermeldung, wenn kein Laufwerk vorhanden ist
if [ $pfad -eq 5 ]; then
### Mail options
betreff="---> ACHTUNG / INFO VON $hostname - Backup am $datum um $zeit Uhr auf externe USB-Festplatte fehlgeschlagen !!!!! <---"
### Nachricht
nachricht="
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Daten konnten nicht auf die externe Festplatte kopiert werden. +
+ Es ist kein USB-Datenträger an die $hostname angeschlossen +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
"
### Send Mail
php "${script_path}" "$betreff" "$nachricht"
exit 0
fi
#------------------------------------------------------------------------------------------------------------------------------------------------
#Das Skript kopiert Daten aus dem Verzeichnis JAHRESARCHIVE auf die externe USB-Festplatte
### Commands before
datum=`date +"%d.%m.%y`
startzeit=$(date +"%s")
size_vol_volumeusbalt=`df -h | grep $pfad | awk '{print "Freier Speicher vor der Aktualisierung : " $4 }'`
#Rsync-Befehle
#-------------------------------------------------------------------------------------------
mkdir Jahresarchive
rsync -av --ignore-errors --delete-excluded --exclude=@eaDir /volume1/Jahresarchive/ $pfad/Jahresarchive
#-------------------------------------------------------------------------------------------
### Commands after
endzeit=$(date +"%s")
diff=$(($endzeit-$startzeit))
laufzeit="$((diff/60)) Minuten, $((diff%60)) Sekunden"
size_vol_volumeusb=`df -h | grep $pfad | awk '{print "Freier Speicher nach der Aktualisierung : " $4 }'`
verbrauch=`du -sh /$pfad/ | awk '{print "Die Daten auf dem Datenträger belegen insgesamt : " $1 }'`
zeit=`date +"%H:%M`
### Mail options
betreff="---> INFO VON $hostname - Datensicherung am $datum um $zeit Uhr auf externe USB-Festplatte abgeschlossen <---"
### Nachricht
nachricht="
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Daten wurden auf externe USB-Festplatte kopiert. +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- $size_vol_volumeusbalt
- $size_vol_volumeusb
- $verbrauch
- Aktualisierungsdauer : $laufzeit
"
### Send Mail
php "${script_path}" "$betreff" "$nachricht"
sleep 100
umount $pfad
exit 0