Basic Backup Basic Backup

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314

Basic Backup Version 0.5-023 vom 25.01.2022

(...sobald von den Machern von CPHub freigegeben!)

  • Bei der Auswertung, ob ein Auftrag aktuell ausgeführt wird oder nicht, wurde nach Teilzeichenketten im Auftragsnamen gesucht und nicht nach ganzen Wörten. Das hatte zur Folge, das ähnlich lautende Aufträge fälschlicherweise als aktiv gekennzeichnet wurden, obwohl sie inaktiv waren. Fehler wurde behoben.
  • Endete der Pfad des Datensicherungsziels mit einem / (Slash) wurde die Datensicherung im root Ordner abgelegt. Fehler wurde behoben.
  • In der Auftragsbearbeitung wurde die Bezeichnung "Datensicherungsziel" gegen "Freigegebener Ordner" und die Bezeichnung "Zielordner" gegen "Zielverzeichnis" ausgetauscht. Ebenfalls wurden die Info-Felder entsprechend umgeschrieben.

Weiterhin viel Spaß mit Basic Backup

Tommes
 
  • Like
Reaktionen: eMBae

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.057
Punkte für Reaktionen
3.871
Punkte
488
Erklärt mir bitte mal jemand den Unterschied zwischen ${var[target]} und ${target} ?
Ist var bei ${var[target]} ein Array mit target als Key/Index und ${target} nur eine normale Variable?
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.563
Punkte für Reaktionen
1.389
Punkte
234
Das hab ich @Tommes privat auch gerade angefragt, aber da klären wir das halt hier 😇

Ich denke da auch nur an ein Array, aber verstehen tue ich es nicht (was nichts zu heißen hat!).
Ich löse das Problem mit einem abschließenden Slash so (aber vielleicht gibt es da einen Fallstrick, den ich noch nicht erkannt hab):
Bash:
path="${path%/}/"
 
  • Like
Reaktionen: Benares

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Also, das ist so…

Über das Auftragsformular von Basic Backup werden die per POST-Requests erhobenen Formulardaten in ein key="value" Array übergeben. Beim Datensicherungsziel wäre der key="value" Wert z.B. var[target]="/volume1/NetBackup/Zielverzeichnis". All diese Werte lege ich in einer Konfigurationsdatei ab… also der Auftragskonfiguration, mit der Dateiendung .conf

Im rsync Script lade ich mir dann die entsprechende Auftragskonfiguration, die ich ausführen will und hohle mir so wieder die key="value" Werte zurück. Für var[target] lautet die BASH Variable also ${var[target]} wobei ich mir die Schreibweise mit den geschweiften Klammern angewöhnt habe.

Zu deiner Frage @Benares
${target} hat also die gleiche Aussagekraft wie ${var[target]} nur dem Unterschied, das letzteres aus einem Array entsprungen ist und das man mit solchen Arrays mehr anstellen kann, als mit einer “normalen„ Variabeln. Aber wie eindimensionalere bzw.. mehrdimensionale Arrays funktionieren wisst ihr sicherlich selber.

@geimist
Ich habe deine Lösung nicht getestet, aber es führen wohl viele Wege nach Rom. Wichtig war mir, das ich stets einein abschließenden Slash am Ende des Pfads erhalte. Wenn schon einer da ist, dann ist gut, falls nicht, wird dieser angehangen. Wie man das prüft, ist wohl sehr individuell. Mein Problem war, das ich keine else Anweisung hatte und damit $Target keinen Wert erhalten hat, wenn ${var[target]} einen abschließenden Slash hatte.

Tommes
 
Zuletzt bearbeitet:
  • Like
Reaktionen: geimist

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
14.057
Punkte für Reaktionen
3.871
Punkte
488
Thx - Ich sehe schon, auch ich lerne jeden Tag immer noch etwas Neues dazu (y)
 
  • Like
Reaktionen: Tommes

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Ich hab‘s @geimist grad schon per PN geschrieben, aber ich wiederhole mich da auch gerne. Bevor ihr jetzt einen falschen Eindruck von mir bekommt, was für ein Crack ich doch bin. Lasst euch gesagt sein, das ich immer noch mit einem Bein im dem Tal der Ahnungslosen stehe. Für mich ist das wirklich harte Arbeit und ich vergesse im Anschluss auch wieder viel, wenn ich nicht täglich damit konfrontiert werde… es ist und bleibt halt nur ein Hobby.

Ach und @Benares… ich hatte bisher auch immer den Eindruck, das du der Crack von uns beiden bist. ;):giggle::unsure:
 

pelumu

Benutzer
Mitglied seit
30. Jan 2017
Beiträge
20
Punkte für Reaktionen
0
Punkte
1
Hallo Tommes,
das mit dem integrierten AutoRun und einem automatisiertem Auswerfen der USB-Festplatte wäre eine super Sache.
Schon mal im Voraus vielen Dank für Deine Bemühungen.
Viele Grüße
Peter
 

tokon

Benutzer
Mitglied seit
12. Dez 2015
Beiträge
192
Punkte für Reaktionen
41
Punkte
28
Nach dem Update ist vor dem Update 😜

Hab hier noch ein paar Rechtschreibfehler entdeckt:
txt_save_note_true="Der Datenscherungsauftrag wurde erstellt."
txt_save_note_edit="Die Änderungen am Datenscherungsauftrag wurden übernommen."
txt_save_note_failed="Ein Problem ist aufgetreten! Der Datenscherungsauftrag konnte nicht erstellt werden."
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
FYI

Autorun kann unter DSM 7 die USB-Festplatte nicht mehr auswerfen. Kann das Basic Backup erledigen? [ ... ] das mit dem integrierten AutoRun und einem automatisiertem Auswerfen der USB-Festplatte wäre eine super Sache.

Ein erster Test verlief schon mal sehr vielversprechend...
Bash:
BasicBackup - Protokoll für ein ausgelöstes Backup über USB
---------------------------------------------------------------------------------------------
29.01.2022 09:53:08 - Einhängen des externen USB-Datenträgers...!
---------------------------------------------------------------------------------------------
Die Partition des externen USB-Datenträgers wurde als [ /dev/sdq1 ] eingebunden.
Das Dateisystem des externen USB-Datenträgers wurde als [ /volumeUSB1/usbshare ] eingehängt.
Die Startdatei [ wird-noch-nicht-verraten ] wurde lokalisiert.
---------------------------------------------------------------------------------------------

29.01.2022 09:53:19 - Script wurde erfolgreich ausgeführt!

---------------------------------------------------------------------------------------------
29.01.2022 09:53:21 - Trennen und auswerfen des externen USB-Datenträgers...!
---------------------------------------------------------------------------------------------
Das Dateisystem des externen USB-Datenträgers [ /volumeUSB1/usbshare ] wurde getrennt.
Der externe USB-Datenträger [ /dev/sdq1 ] wurde ausgeworfen.
---------------------------------------------------------------------------------------------

... und ganz nebenbei habe ich wohl auch das Problem gefunden, warum autorun den USB-Datenträger nicht auswirft. Da ich autorun aber immer noch nicht bei mir installiert habe muss ich das zuerst noch verifizieren um zu schauen, ob es wirklich daran liegt. Ich hab aber noch keine Ahnung, wann ich Zeit dafür finde, da ich erst mal an meiner Funktion für Basic Backup weiterarbeiten möchte.

Für den Moment sieht es schon recht gut aus, aber es gibt noch einige Dinge zu beachten. Ich muss noch einen Bezug zwischen Datensicherungsauftrag und USB-Datenträger herstellen, damit das Backup auch wirklich auf genau diesem Datenträger landet und evtl. auch nur auf diesem. Auch kann es vorkommen, das ein USB-Stick über mehrere Partitionen verfügt. Über all das muss ich mir noch Gedanken machen und Lösungen finden. Bis die Funktion also soweit ist, das ich das veröffentlichen kann, wird noch ein wenig Zeit vergehen. Aber immerhin, der Anfang ist gemacht und der Weg ist bekanntlich das Ziel.

Ach ja und @tokon, ich werde natürlich auch noch die Rechtschreibfehler korrigieren.

Tommes
 
Zuletzt bearbeitet:

pelumu

Benutzer
Mitglied seit
30. Jan 2017
Beiträge
20
Punkte für Reaktionen
0
Punkte
1
Hallo Tommes,

wenn Du bezüglich Autorun und automatischen Auswerfen etwas hast, kann ich es gerne auch testen.

Viele Grüße
Peter
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Ich habe hier eine Frage zu autorun gestellt, da bei mir das auswerfen, bis auf einen kleinen Schönheitsfehler, ohne Probleme funktioniert.
 

mausbieber

Benutzer
Mitglied seit
26. Apr 2014
Beiträge
105
Punkte für Reaktionen
0
Punkte
16
Hallo,
bei mir war auch der Fehler
### Rsync meldete den Exit-Code 43:
### Ueberpruefen Sie, ob der Remote-Server offline ist, ob der Rsync-Dienst gestartet wurde und ob der Port korrekt eingestellt wurde
aufgetreten, dei Ursache war hier eine unterschiedliche Portangabe bei SSH Terminal und rsync.
Könnte man für rsync eine abweichende Portangabe spendieren oder ist dieses ungewöhnlich?
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Rsync kann man auf zwei verschiedene Arten nutzen.
  • Über einen verschlüsselten SSH Tunnel der standardmäßig auf dem TCP Port 22 lauscht.
  • Über einen unverschlüsselten Daemon Service der standardmäßig auf dem TCP Port 873 lauscht.
Da Basic Backup letzteres Verfahren nicht unterstützt, ist die Angabe eines abweichenden rsync Ports nicht gegeben. Einzig der SSH Port kann nach Belieben verändert werden.

Tommes
 

mausbieber

Benutzer
Mitglied seit
26. Apr 2014
Beiträge
105
Punkte für Reaktionen
0
Punkte
16
Hallo Tommes,
ich habe mich eventuell nicht richtig ausgedrückt. Bei mir war SSH auf 8022 und ber Rsync 22 eingestellt. Da Dein Script bei dem rsync Befehl den SSH Port 8022 benutzt kam es zu dem Fehler, wenn ich -p 22 angeben habe hat es funktioniert. Ich habe nun den Port für rsync auch auf 8022 umgestellt und damit geht Dein Script unverändert. Beim ULTIMATE Backup hattet Ihr hier zwei verschiedene Parameter.
Gruß Olaf
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Auf die Gefahr hin das ich das jetzt falsch interpretiere, aber…

Im DSM unter Systemsteuerung > Dateidienste kann man unter dem Reiter [ rsync ] „nur“ einen SSH-Verschlüsselungsport angeben, der standardmäßig auf Port 22 horcht. Warum Synology hier jemanden die Möglichkeit bietet, diesen Port, abweichend zum eigentlichen SSH Port zu verändern, habe ich noch nicht rausgefunden und wird in der DSM-Hilfe auch nicht weiter dokumentiert. Ich weiß nur, das die Verbindung dabei über SSH läuft, weshalb man auch nur einen Port benötigt. Von daher arbeitet Basic Backup hier nur mit einem Port für den SSH-Tunnel.

Auf der anderen Seite kann man im DSM auch rsync-Benutzer angeben, worüber man dann unverschlüsselte Verbindungen mittels des rsync Daemon aufbauen kann. Hier lässt sich der Standard Port 873 in der GUI jedoch nicht verändern. Dies müsste man wohl in der /etc/rsyncd.conf von Hand einstellen… keine Ahnung. Hab das nie ausprobiert.

Von daher verwendet Basic Backup einzig und allein den SSH Port um einen verschlüsselten rsync durchzuführen. Alles andere macht für mich keinen Sinn. Sicherlich könnte ich Basic Backup auch einen unverschlüsselten rsync über den Daemon spendieren, jedoch sehe ich darin keinen großen Nutzen.

In Hyper Backup hast du u.a. auch die Wahl, die Übertragungsverschlüsselung ein- oder auszuschalten. Schaltest du diese ein, dann springt der Port auf 22 um, schaltest du diese aus, dann springt der Port auf 873 um. Es bleibt also dabei… einen separaten Verschlüsselungsport für rsync macht keinen Sinn… oder ich habe das große Ganze noch nicht verstanden. Vielleicht hat hier ja jemand mehr Background-Wissen um Licht ins Dunkle zu bringen.

Beim ULTIMATE Backup hattet Ihr hier zwei verschiedene Parameter.
Bei Ultimate Backup war auch nicht immer alles richtig 🤫😏 … auch wenn es funktioniert hat.

Tommes
 

Wölfchen78

Benutzer
Mitglied seit
23. Dez 2021
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
  • Im rsync-Script wurde der Shutdown nicht ausgelöst, da eine Umgebungsvariable nicht bzw. falsch gesetzt war.
Funktioniert der Shutdown nur, wenn auch WOL unterstützt wird oder habe ich beim Konfigurieren etwas übersehen? Ich habe einen Push-Backup-Auftrag von einer DS220+ auf eine DS211j am laufen. Auf WOL kann ich gut verzichten, die DS211j kann ich ja zeitgesteuert einschalten. Da ich aber vorher nicht weiß, wie lange das Backup benötigt wäre der Shutdown am Ende des Auftrags aber doch sinnvoll.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.736
Punkte für Reaktionen
1.642
Punkte
314
Hi!

Für die Verwendung von WOL sind gewisse Hardware Voraussetzungen nötig und auch nur dafür wird die MAC Adresse benötigt.

Beim Shutdown handelt es sich um einen Standard Befehl unter Linux worüber man den lokalen Server herunterfahren kann. Mit einer entsprechenden Verbindung sowie den nötigen Berechtigungen, funktioniert das auch auf einen Remote Server. In deinem Fall müsstest du eine SSH als root in Richtung deiner DS211j aufbauen um die Shutdown Funktion nutzen zu können, da in diesem Fall nur root die nötigen Rechte dafür hat. Sich jedoch als root aufzuschalten sollte gut überlegt sein und ich kann das mittlerweile auch nicht mehr guten Gewissens empfehlen. Nichts desto trotz funktioniert das, wenn auch nur unter gewissen Rahmenbedingungen. Was du daraus machst ist dir selbst überlassen.

Was man auch noch bedenken sollte ist, das wenn der Shutdown ausgelöst wurde, das Gerät ohne Rücksicht auf Verluste herunterfährt.

Tommes
 
  • Like
Reaktionen: Wölfchen78

Wölfchen78

Benutzer
Mitglied seit
23. Dez 2021
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
In deinem Fall müsstest du eine SSH als root in Richtung deiner DS211j aufbauen um die Shutdown Funktion nutzen zu können, da in diesem Fall nur root die nötigen Rechte dafür hat. Sich jedoch als root aufzuschalten sollte gut überlegt sein und ich kann das mittlerweile auch nicht mehr guten Gewissens empfehlen.
Danke für die Info, dann werde ich das nicht auf diesem Wege umsetzen ;)
 

tokon

Benutzer
Mitglied seit
12. Dez 2015
Beiträge
192
Punkte für Reaktionen
41
Punkte
28
Für so einen Fall wäre ein Pull-Backup doch die bessere Variante. Sollte dann nur eine Option geben den Zielserver nach dem Backup herunterzufahren.
Bzw. was passiert, wenn man über den Energie-Zeitplan ein Herunterfahren plant? Wenn die Aufgabe noch nicht abgeschlossen ist, wird ja lt. Hinweis dies nicht ausgeführt. Aber wird das dann nur verschoben oder gar nicht ausgeführt?
 


 

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