Autorun für ext. Datenträger

coolbit

Benutzer
Mitglied seit
08. Nov 2014
Beiträge
6
Punkte für Reaktionen
0
Punkte
1
Bin leider erst heute darauf gestoßen und zwar nachdem ich auf 5.1 upgegradet hatte... *grml*
Wollte nur mal anmerken, dass hier definitiv noch reges Interesse an einer Anpassung des Pakets auf udev besteht. Ich verwalte noch eine zweite DS214+ und dort wäre die Funktion ebenfalls top. Hoffe du hast noch Lust dich da ranzusetzen.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Das Problem ist, dass ich inkonsistente Ergebnisse bekommen (alles von 1 bis 5 Events), so dass ich da selbst noch eine Filterung vornehmen muss (sonst läuft es mehrfach) und das ist etwas aufwändiger. Von daher keine Ahnung, wann das fertig sein wird.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
30.694
Punkte für Reaktionen
2.101
Punkte
829
Schön, dass Du dran bist. Vielen Dank dafür!
 

bront

Benutzer
Mitglied seit
11. Aug 2013
Beiträge
39
Punkte für Reaktionen
5
Punkte
8
1000 Dank, dass du da an einer Lösung bemüht bist! Kanns kaum erwarten, dass das bald endlich wieder läuft, da mir das imho die beste Möglichkeit für USB Backups scheint :)
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Dsm 5.1

Hier erst mal ein schneller Fix. Konsole als root öffnen und das folgende einfach rein kopieren.
Rich (BBCode):
mkdir -p /usr/syno/hotplug.d/default
echo "#!/bin/sh" > /var/packages/autorun/target/udev
echo "if [ ! -f /usr/syno/hotplug.d/default/99autorun.hotplug ]" >> /var/packages/autorun/target/udev
echo "then" >> /var/packages/autorun/target/udev
echo "  exit" >> /var/packages/autorun/target/udev
echo "fi" >> /var/packages/autorun/target/udev
echo "LOGDIR=\"/var/packages/autorun/target\"" >> /var/packages/autorun/target/udev
echo "TMPPATH=\"/tmp/net.reidemeister.autorun.\$1\"" >> /var/packages/autorun/target/udev
echo "echo \"\`date +%Y-%m-%d\` \`date +%H:%M:%S\`: event received from udev for '\$1':\" >> \$LOGDIR/log" >> /var/packages/autorun/target/udev
echo "env >> \$LOGDIR/log" >> /var/packages/autorun/target/udev
echo "echo \"<br/>\" >> \$LOGDIR/log" >> /var/packages/autorun/target/udev
echo "if [ \"\$(find \$TMPPATH -mmin -2)\" != \"\" ]" >> /var/packages/autorun/target/udev
echo "then" >> /var/packages/autorun/target/udev
echo "  echo \"\`date +%Y-%m-%d\` \`date +%H:%M:%S\`: duplicate event for '\$1' will be ignored<br/>\" >> \$LOGDIR/log" >> /var/packages/autorun/target/udev
echo "  exit" >> /var/packages/autorun/target/udev
echo "fi" >> /var/packages/autorun/target/udev
echo "touch \$TMPPATH" >> /var/packages/autorun/target/udev
echo "/var/packages/autorun/target/autorun \$1 &" >> /var/packages/autorun/target/udev
echo "exit" >> /var/packages/autorun/target/udev
chmod 700 /var/packages/autorun/target/udev
echo "SUBSYSTEM==\"block\", ACTION==\"add\", ENV{DEVTYPE}==\"partition\", PROGRAM=\"/var/packages/autorun/target/udev %k\"" > /usr/lib/udev/rules.d/99-autorun.rules
udevadm control --reload-rules

Wie gesagt, generiert das Teil zu viele Events (bei USB, eSATA dagegen passt). Selbst nach dem Auswerfen im DSM kommen noch welche....??? Von daher nicht wundern, wenn das Log vollläuft. Doppelte Events beim Anstecken werden für 2 Minuten ignoriert (falls hier jemand also testen möchte, immer so lange dazwischen warten), die nach dem Auswerfen schlagen dann fehl, weil nicht mehr eingehängt.

Ob die Backup-Skripte noch funktionieren, hab ich noch nicht probiert.

Zum Rückgängig machen:
Rich (BBCode):
rm -r /usr/syno/hotplug.d
rm /var/packages/autorun/target/udev
rm /usr/lib/udev/rules.d/99-autorun.rules
udevadm control --reload-rules
 

nosi

Benutzer
Mitglied seit
19. Nov 2012
Beiträge
36
Punkte für Reaktionen
0
Punkte
6
1000 Dank, dass du da an einer Lösung bemüht bist! Kanns kaum erwarten, dass das bald endlich wieder läuft, da mir das imho die beste Möglichkeit für USB Backups scheint :)

Besser hätte ich es nicht ausdrücken können! Genau meine Gedanken!
 

Ha34Meiner

Benutzer
Mitglied seit
28. Dez 2012
Beiträge
573
Punkte für Reaktionen
12
Punkte
44
Auch von mir danke für Deine Arbeit. Dein Skript erleichtert mir mein Backup ungemein.
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.574
Punkte
314
Auch von mir ein dickes Dankeschön!

Tommes
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hallo Zusammen,

ich bin im Moment dabei eine Backup mit Autorun aufzusetzen. Zum Testen nehme ich eine 1TB Festplatte, welche ich an meine DS112+ über USB anschließe und wodrauf folgendes Backup-Skript mit autorun erstellt wurde:

Rich (BBCode):
#!/bin/sh
/var/packages/autorun/target/localbackup "Video" "/volumeUSB2/usbshare" "$1" 100
exit $?

Das Backup Skript soll also das Backup Video antriggern. Dieses Backup sichert nur einen einzigen Shared-Ordner (Video) auf der externen platte - ist nur zum Testen von autorun.

Wenn ich das Backup manuel über DSM starte, dann funktioniert es problemlos, der Ordner Video ist am Ende auf der externen Platte gesichert und ca 900Gb groß :D.

Wenn ich allerdings das ganze über autorun mache, dann werden keine Dateien kopiert :eek:.

Ich habe das folgendermaßen ausprobiert:

  • Externe Platte über DSM formatiert
  • mit autorun script für backup Video erstellt
  • Platte ausgeworfen und wieder eingesteckt

Autorun scheint erstmal alles richtig zu machen. Erst wird die DS LED auf orange geschaltet, gefolgt von einen Beep (sehr cool ;)). Dann sehe ich im autorun log folgendes:

Rich (BBCode):
2014-11-19 12:21:03: device 'sdq1' - mount point '/volumeUSB2/usbshare' found
2014-11-19 12:22:03: device 'sdq1' - script '/volumeUSB2/usbshare/autorun' found, executing
2014-11-19 12:22:13: device '/volumeUSB2/usbshare' - local backup 'Video' started
2014-11-19 12:23:14: device '/volumeUSB2/usbshare' - local backup 'Video' finished
2014-11-19 12:23:14: device 'sdq1' - script '/volumeUSB2/usbshare/autorun' finished (916.6G left on device), starting unmount
2014-11-19 12:23:19: device 'sdq1' - unmounted and ejected
2014-11-19 12:23:19: device 'sdq1' - unmounted and ejected

Ok, eigentlich hätte ich erwartet, dass das Skript jetzt ca 1std läuft und die ext. Platte vollmacht. Anstelle dessen beendet das Skript in einer Minute und berichtet völlig korrekt "916.6G left on device".

Meine Frage: Warum werden keine Daten kopiert?

Ich hoffe jemand kann mir helfen. Ich finde die Funktionalität von autorun total genial und würde diese gerne im Produktiveinsatz verwenden. Ich finds ziemlich nervig für ein DS backup jedesmal den Rechner hochfahren zu müssen - und mit dem Android-Handy gehts nur im Schneckentempo :(.

Gruß,

Michael
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
"Video" ist falsch, da muss eine Ziffer stehen.
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Ok, das leuchtet ein :). Habs jetzt nochmal probiert allerdings immer noch das gleiche Problem. Ich konnte auch beobachten, dass in der DSM-Backup-App das Backup zwar startet, aber man nur "Please wait ..." sieht. Nach einer Minute wird dann die Platte wieder ausgeworfen.
Wenn ich mein Backup manuel antriggere, dann tut sich aber auch nicht viel mehr. Vielleicht habe ich ein Problem mit der Backup-Definition.

Hier das Log von autorun:

Rich (BBCode):
2014-11-19 13:34:14: device 'sdq1' - inserted, trying to find mount point
2014-11-19 13:34:17: device 'sdq1' - mount point '/volumeUSB2/usbshare' found
2014-11-19 13:34:17: device 'sdq1' - script '/volumeUSB2/usbshare/autorun' found, executing
2014-11-19 13:34:27: device '/volumeUSB2/usbshare' - local backup '2' started
2014-11-19 13:35:28: device '/volumeUSB2/usbshare' - local backup '2' finished
2014-11-19 13:35:28: device 'sdq1' - script '/volumeUSB2/usbshare/autorun' finished (916.6G left on device), starting unmount
2014-11-19 13:35:33: device 'sdq1' - unmounted and ejected

Hier mein autorun Skript:

Rich (BBCode):
#!/bin/sh
/var/packages/autorun/target/localbackup "2" "/volumeUSB2/usbshare" "$1" 100
exit $?
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
2
Punkte
84
Welche DSM-Version?
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hallo,

meine DS läuft auf dem aktuellen DSM 5.1-5004 (keine Beta)

Ich habe außerdem mal mein Produktiv-Backup ausprobiert und festgestellt, dass das mit autorun auch nicht geht. Hier habe ich ebenfalls ein passendes Skript erzeugt und die Platte mal aus- und eingesteckt. Die gleiche Symptomatik.

Ich werde erstmal das "normale" Backup weiterbetreiben, bis ich eine Lösung gefunden habe. Aber nichtsdestotrotz finde ich die Idee super - um so mehr finde ich es schade, dass ich es auf anhieb nicht hinbekomme.

Gruß,

Michael
 

mdawid

Benutzer
Mitglied seit
07. Jan 2014
Beiträge
61
Punkte für Reaktionen
3
Punkte
8
Hallo Zusammen,

Ich habs jetzt geschafft das Autorun bei mir läuft. Nach einem Reboot der NAS lief es, warum weiß ich nicht. Es hat sogar zwei mal hintereinander geklappt. So weit so gut :).

Eine Kleinigkeit habe ich noch und zwar das Auswerfen nach Abschluß des Backup. Bei mir funktionierte das nicht, es wurde zwar das Volume geunmountet, aber nicht ausgeworfen. Das bedeutet, dass ich immernoch manuel via DSM die Platte auswerfen musste. Ich habs jetzt so gelöst indem ich folgendes ins autorun skript geschrieben habe (nach sucheen hier im Forum)

echo 1 > /sys/block/sdq/device/delete

Danach wird mir zumindest im DSM angezeigt, dass die Platte ausgeworfen wurde.

Gruß,

Michael
 

babsisch

Benutzer
Mitglied seit
07. Jul 2014
Beiträge
13
Punkte für Reaktionen
0
Punkte
7
Danke

Hallo Leute, ich sag nur Danke.

Geiles Tool.

Ich hatte zwar auch einige kleine Problemchen
aber wenn man sich die Zeit nimmt und liest,
bekommt man es hin :)

Danke
 

tale

Benutzer
Mitglied seit
25. Nov 2014
Beiträge
55
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen, zunächst mal herzlichen Dank an Merthos für das klasse Plugin! Ich muss sagen: Die originalen DSM-Optionen für Backups auf externe Datenträger sind arg mau und "autorun" erfüllt genau das, was ich vermisse :)

Allerdings herrschen bei mir dennoch Unklarheiten bei der Triggerung mehrerer Backup-Jobs und ich hoffe, ihr könnt mir dabei weiterhelfen.

Was ich nach Anstecken der Platten möchte:
a) Start eines Backup 1, der unverschlüsselte Daten auf den externen Datenträger in ein verschlüsseltes Share schreibt (sehr wichtig für mich und funktioniert zum Glück gut).
b) Start eines Backup 2, der bereits intern verschlüsselte Shares auf den externen Datenträger in ein normales Share schreibt (bleiben ja verschlüsselt).

Ich habe zu (b) bereits viele gute Hinweise in diesem Thread gefunden, darunter das Zitat weiter unten. Dummerweise ist mir als Linux-Neuling nicht klar, wie die genaue Abbruchbedingung für die Warteschleife am Ende lautet.

Das hier habe ich zwar gefunden, aber brauche ich nicht zwei PIDs (da 2 Backups), auf die ich warten muss?
while [ "$(pidof synolocalbkp)" ]

Außerdem aus Neugierde: Wenn ich zwei Backup-Jobs wie unten genannt starte... arbeitet DSM diese dann sequentiell oder parallel ab?

Danke schön schon mal.

Rich (BBCode):
<localbackup call 1>
<localbackup call n>
sleep 30  (damit wird den Backup jobs Zeit gegeben zu starten)
while ...
sleep 30

Im Grunde genau wie bei der while Schleife für Timebackup Calls, nur mit einer anderen Bedingung.
 


 

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