Backup-Skript

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

mehldutt

Benutzer
Registriert
16. Mai 2012
Beiträge
8
Reaktionspunkte
0
Punkte
1
Hallo Leute,
brauche dringend Hilfe von einem Experten:

Ohne nennenswerte Programmierkenntnisse habe ich mir ein Skript gebastelt, dass es mir erlaubt 1x wöchentlich ein Backup von meiner DiskStation1 auf meine alte Diskstation2 (beherrscht WOL nicht!) auszuführen.

Auf meiner DiskStation 2 wird beim Hochfahren ein Skript ausgeführt, das ein Skript auf der DiskStation1 ausführt, dass nach Abschluss eines Backups die DiskStation2 wieder abschaltet.

/usr/syno/etc/rc.d/S99zzbackup.sh auf DiskStation2:
Rich (BBCode):
#!/bin/sh
if test "$*" = 'start'; then
ssh -i /root/.ssh/backupssh root@DiskStation1 "/root/backup.sh"
fi

/root/backup.sh auf DiskStation1:
Rich (BBCode):
#!/bin/ash
clear
/usr/syno/bin/synonetbkp -a „Backup2“
/bin/sleep 30
while (ps | grep Backup2 | grep -v grep)
do
	/bin/sleep 5
done
ssh -i  /root/.ssh/backupssh root@DiskStation2 „/sbin/poweroff“
exit

Ich möchte nun die Skripts derart optimieren, dass der Backup-Prozess auf der DiskStation2 erkannt wird, sodass dieser sich selbst ausschalten kann und nicht mittels ssh von der DiskStation1 wie bisher.

Wäre toll, wenn mir jemand helfen könnte.
 
Zuletzt bearbeitet:
bitte nicht doppelt posten ... ich lösch den anderen Post

Itari
 
was spricht denn dagegen den Shutdown von DS2 im Script auf DS2 zu machen? Die wird ja wohl am besten wissen wenn sie mit dem Backup durch ist. Also so was in der Art auf DS2
Code:
#!/bin/sh 
rsync -a -e "ssh -i /root/.ssh/backupssh" root@DiskStation1:/VERZEICHNIS /volume1/backup/
poweroff
diese Script führst du dann wöchentlich im Cron aus
 
Klar, würde gehen.
Allerdings würde ich mir eine Meldung auf DiskStation1 wünschen, dass das Backup erfolgreich war.
 
Schick Dir ne Mail, nimm den syslog, ruf über ssh ein Skript auf, ... gibt genügend Möglichkeiten für eine Benachrichtigung.
 
Habe synodsmnotify entdeckt.
Damit bekomme ich die Meldung auf dem DMS-Desktop, so wie ich es wollte.
So schaut's jetzt aus:

#!/bin/sh
rsync -a -e "ssh -i /root/.ssh/backupssh" root@DiskStation1:/volume1/public/testverz /volume1/backup/
ssh -i /root/.ssh/backupssh root@DiskStation1 synodsmnotify @users "rsync" "erfolgreich"
poweroff

Schön wäre noch eine Fehlermeldung wie z.B.:
if <<error>> then
ssh -i /root/.ssh/backupssh root@DiskStation1 synodsmnotify @users "rsync" "error"
else
ssh -i /root/.ssh/backupssh root@DiskStation1 synodsmnotify @users "rsync" "erfolgreich"
fi
 
$? hat das Ergebnis vom letzten Befehl. Die möglichen für rsync findest Du in der Doku.
 
Sorry Merthos, "$? hat das Ergebnis vom letzten Befehl." verstehe ich nicht.

In der Doku habe ich folgendes gefunden:
Exit Values
0 Success
1 Syntax or usage error
2 Protocol incompatibility
3 Errors selecting input/output files, dirs
4 Requested action not supported: an attempt was made to manipulate 64-bit files on a platform that cannot support them; or an option was specified that is supported by the client and not by the server.
5 Error starting client-server protocol
6 Daemon unable to append to log-file
10 Error in socket I/O
11 Error in file I/O
12 Error in rsync protocol data stream
13 Errors with program diagnostics
14 Error in IPC code
20 Received SIGUSR1 or SIGINT
21 Some error returned by CWwaitpid()
22 Error allocating core memory buffers
23 Partial transfer due to error
24 Partial transfer due to vanished source files
25 The --max-delete limit stopped deletions
30 Timeout in data send/receive
35 Timeout waiting for daemon connection
Ist das irgendwie hilfreich?
 
$? ist der Exit Status des letzten Befehls, nach "rsync" also einer der o.g. Codes.
Code:
rsync ....
STATUS=$?
if [ $STATUS -eq 0 ] ; then
  echo "Ok"
else
  echo "Fehler"
fi
 
So, Testläufe waren alle erfolgreich. Vielen Dank für die Hilfe.
Hier nochmals den vollständigen Code:
Code:
#!/bin/sh
rsync -a -e "ssh -i /root/.ssh/backupssh" root@DiskStation1:/volume1/public/testverz /volume1/backup/
STATUS=$?
if [ $STATUS -eq 0 ] ; then
  ssh -i /root/.ssh/backupssh root@DiskStation1 synodsmnotify @users "rsync" "erfolgreich"
else
  ssh -i /root/.ssh/backupssh root@DiskStation1 synodsmnotify @users "rsync" "Fehler"
fi
sleep 60
poweroff
Dieses Script wird jetzt einmal wöchentlich im Cron ausgeführt.
 
Zuletzt bearbeitet:
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