Network Backup inklusive Shutdown

Status
Für weitere Antworten geschlossen.

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
@Matt
sag aber nicht dass du das Script mit & hinten dran aufrufst :)
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Ja, vielleicht mal das ganze Skript hier posten, sonst ist das nur ein raten...
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
komme gerade selbst nicht mehr mit soviel ich da jetzt schon spontan geändert habe.
aber das entspricht der grundidee noch am meisten:

@jahlives: nein

Rich (BBCode):
#!/bin/ash
clear
set -x
echo "starting backup"
ssh oppenheimer "echo 3 > /dev/ttyS1; echo "":"" > /dev/ttyS1; exit;"
/usr/syno/bin/synonetbkp -a "networkBackupVolume1"
wait
/usr/syno/bin/synonetbkp -a "networkBackupVolume2"
wait
echo "done, system will shut down in a few sconds"
ssh oppenheimer "echo 8 > /dev/ttyS1; echo 3 > /dev/ttyS1;"

ssh oppenheimer "poweroff"
echo "shutdown signal was sent"
exit
 

Merthos

Benutzer
Mitglied seit
01. Mai 2010
Beiträge
2.709
Punkte für Reaktionen
1
Punkte
84
Mach mal aus dem -a ein -b, dann brauchst Du auch kein sleep oder wait.
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
also das funktioniert dann selbst auf der bash nicht mehr. alle cmds werden ohne verzögerung oder unterbrechnung abgefeuert. :/
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Bist du denn sicher, dass die Kommandos fehlerfrei laufen? Auch wenn dein Script selber den wait ignoriert müsstest du die Backupprozesse z.B. mittels htop recht gut sehen können. Könnte ja sein dass das Backup sofort einen Fehler wirft. Mittels echo $? direkt nach dem Kommando kannst du dir den Rückgabewert des letzten Kommandos ausgeben lassen. Alles ausser eine 0 wäre nicht gut
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
bis auf das warten funktioniert das script wunderbar (auf der bash).
hatte vorher statt den wait befehlen eine while schleife mit sleep command welche via ps grep etc. überprüft ob der backup process noch läuft. das funktioniert wunderbar auf der bash aber eben nicht wenn ich das script via cron aufrufen.

kommt auch immer brav 0 bei echo $?

Rich (BBCode):
#!/bin/ash
clear
set -x
echo "starting backup"
ssh oppenheimer "echo 3 > /dev/ttyS1; echo "":"" > /dev/ttyS1; exit;"
/usr/syno/bin/synonetbkp -a "networkBackupVolume1"
/bin/sleep 30
while (ps | grep networkBackupVolume1 | grep -v grep)
do
	echo networkBackup still running
	/bin/sleep 5
done
/usr/syno/bin/synonetbkp -a "networkBackupVolume2"
/bin/sleep 30
while (ps | grep networkBackupVolume2 | grep -v grep)
do
	echo networkBackup still running
	/bin/sleep 5
done
echo "done, system will shut down in a few sconds"
ssh oppenheimer "echo 8 > /dev/ttyS1; echo 3 > /dev/ttyS1; poweroff;"
echo "shutdown signal was sent"
exit
 
Zuletzt bearbeitet:

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
bei Scripten die via cron laufen ist es immer von Vorteil bei jedem Kommando den vollständigen Pfad anzugeben. nicht nur beim sleep sondern wirklich überall
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
wenn ich den vollen pfad bei ps und grep hinzufüge scheitert es auch auf der bash.
man bin ich genervt. :/
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
wenn du den vollen Pfad nimmst und es danach auf der Bash nicht mehr geht, dann muss der Fehler sonstwo liegen. Du kannst in jedem Script immer vollständige Pfade verwenden, das geht immer.
Du hast zum einen mal echo ohne ' oder "
Geht denn z.B. die LED Geschichte an der Remote-DS? Wenn nein, dann auch für ssh den kompletten Pfad angeben. auch für echo clear und set
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
led geschichte funktioniert.
ebenso funktioniert das script auf der bash ohne die kompletten pfadangaben.
nachdem ich das für ps und grep ergänzt habe funktioniert der rest weiterhin nur die schleife nicht mehr.
kann ich die bash nicht irgendwie zu fehlermeldungen zwingen?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
wenn etwas auf der Shell funzt und im cron ned liegt es wirklich fast immer daran, dass der cron einen eigene PATH-Umgebung hat. Die muss nicht identisch sein zu dem was du hast wenn du dich auf der Shell anmeldest. Drum immer komplette Pfadangaben wenns via cron aufgerufen wird.
Ich per sönlich mache solche while Geschichten immer so
Code:
while true ; do
 [ "x$(ps | grep networkBackupVolume1 | grep -v grep)" != 'x' ] && sleep 30 && continue
 break
done
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
es bleibt dabei, auf der bash gehts. via cron nicht. ich gebs auf.
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
Achtung, jetzt wirds geil! :D

So funktionierts:

script1 wird von crontab aufgerufen:
Rich (BBCode):
#!/bin/ash
clear
ssh oppenheimer "echo 3 > /dev/ttyS1; echo "":"" > /dev/ttyS1; exit;"
/usr/syno/bin/synonetbkp -a "networkBackupVolume1"
/usr/syno/bin/synonetbkp -a "networkBackupVolume2"
/bin/sleep 10
/volume2/homes/leetbashhaXXor1337/BashScripting/helper.sh

script2, wird vom obigen script aufgerufen
Rich (BBCode):
while (/bin/ps | /bin/grep networkBackupVolume | /bin/grep -v grep)
do
	/bin/sleep 5
done
ssh oppenheimer "echo 8 > /dev/ttyS1; echo 3 > /dev/ttyS1; poweroff;"
exit

echo's wurden entfernt nachdem das script lauffähig war.

next steps:
# eigenen rsync verbauen
# scripte sinvoller im system platzieren
# error handling
# logoutput (via parameter)
# code aufhübschen

i'm stoked. :D
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
so v3. basiert jetzt auf rsync. hierbei wird auch brav gewartet bis der rsync abgeschlossen ist bevor der shutdown erfolgt.
ich kann mir die anfänglichen probleme immernoch nicht erklären, aber whatever. ;)


Rich (BBCode):
#!/bin/ash
/usr/syno/bin/rsync -avz /volume1/src/dir/ root@oppenheimer:/volume1/trgt/dir/ >> /volume2/log/dir/logA.txt 
/usr/syno/bin/rsync -avz /volume2/src/dir/ root@oppenheimer:/volume2/trgt/dir/ >> /volume2/log/dir/logB.txt 
ssh oppenheimer "echo 3 > /dev/ttyS1; poweroff;"
exit


next steps:
# eigenen rsync verbauen
# scripte sinvoller im system platzieren
# error handling
# logoutput (via parameter)
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
wegen der alten Probleme mit cron ist mir noch was aufgefallen. Bei cron muss man scheinbar recht vorsichtig sein, wenn man echos auf stdout macht. cron interpretiert eine solche Ausgabe schnell als Fehler resp als return Wert ungleich 0. Das Problem scheint ja verschwunden zu sein, seit du auf die echos verzichtest. Von dem her könnte es sein, dass dies der Grund war. echos in Scripten die per cron aufgerufen werden sollten immer in eine Datei geleitet werden
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
echo's wurden entfernt nachdem das script lauffähig war.

daran hatte es leider nicht gelegen, war auch eine meiner ersten theorien. :/
mittlerweile ist auch nail integriert. es wird, es wird. :)
 
Zuletzt bearbeitet:

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
ich spiele gerade mit dem gedanken den ssh tunnel wieder raus zu werfen,
1,5-2mb/s sind mir definitiv zu langsam als übertragungsgeschwindigkeit.

ist der verlust wirklich so hoch, oder hab ich vllt ein falsches flag oä gesetzt?

hat hier jemand erfahrungen?
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
v4

Rich (BBCode):
#!/bin/ash
clear
echo "RSYNC jobs started on: `date`" >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume1/music/ rsync://root@oppenheimer/music/ >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume1/photo/ rsync://root@oppenheimer/photo/ >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume1/web/ rsync://root@oppenheimer/web/ >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume1/video/Seasons/ rsync://root@oppenheimer/Seasons/ >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume2/homes/ rsync://root@oppenheimer/homes/ >> /path/to/log.log
/usr/syno/bin/rsync --stats -ahz /volume2/softwarearchive/ rsync://root@oppenheimer/softwarearchive/ >> /path/to/log.log
echo "RSYNC jobs stopped on: `date`" >> /path/to/log.log
/bin/sleep 30 
echo 3 > /dev/ttyS1;
/bin/sleep 5
ssh oppenheimer "poweroff;"
echo "RSYNC cronjob finished. Logfile is attached to this email." | /opt/bin/nail -s "Rsync status Email" -a /path/to/log.log user@host.tld
exit

auf oppenheimer wurde rsync nochmals via ipkg installiert und die rsyncd.conf wie folgt (auszug) angepasst:

Rich (BBCode):
[music]                           
path = /volume1/RSYNC1/music      
comment = Music rsync dir         
uid = root                        
gid = root                  
read only = no              
list = yes                  
charset = utf-8          
#auth users = root
secrets file = /etc/rsyncd.secrets
hosts allow = einstein_ip_adress         
hosts deny = all

leider funktioniert das mit dem auth über rsyncd.secrets nicht, weder mit root:klarpasswort noch mit root:synochecksum.
ohne läufts perfekt, jemand eine idee hierzu?

das launchscript habe ich wie folg angepasst:

Was musste ich noch anpassen?
- in /usr/syno/etc/rc.d/S84rsyncd.sh den Pfad des rsync binaries auf /opt/bin/rsync ändern und
- " $Rsync --daemon" auf erweitern auf "$Rsync --daemon --config=/etc/rsyncd.conf"
- Benutzer/Passwörter unter /etc/rsyncd.secrets anpassen
 

MattDS

Benutzer
Mitglied seit
06. Jan 2012
Beiträge
207
Punkte für Reaktionen
16
Punkte
24
bezüglich der geschwindigkeit ist mir aufgefallen das eventuell auch der "." an der falschen position angezeigt wird.
lt. sender und empfänger läuft gehen rund 20-30 mb/s aus und ein. ist das schonmal jemandem aufgefallen?
 
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