AutoPilot AutoPilot für externe Datenträger

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Hi @Tommes

nochmals kurz für mein Verständnis. Bei deinem Beispiel als du eine leere PID bekommen hast, welchen Namen trägt denn die tatsächliche PID?
Ich hatte in meinem Beispiel nach folgendem String in der PID Liste gesucht:
/var/packages/HyperBackup/target/bin/img_backup

Es gibt aber weitaus mehrere Namen die wie schon erwähnt auftauchen könnten. Die da wären:
dsmbackup, synoimgbktool, synolocalbkp, synonetbkp, updatebackup.

Nachdem dies alles binaries in dem besagten Verzeichnis sind, gehe ich stark davon aus, dass alles anderen Prozesse gleicherhand in der Prozessliste zu finden sind.

Somit könnte ich mir vorstellen, den Suchbefehl mit folgendem regulären Ausdruck zu ergänzen um alle der bisher genannten Individualitäten zu treffen um die korrekte PID herauszufinden.

@Tommes kannst du in deinem Fall bitte einmal prüfen ob in deinem Beispiel mit diesem Befehl eine korrekte PID ausgegeben wird oder ob weiterhin ein leerer String zurückgegeben wird?
Einmal die Zeile in der nach der PID gesucht wird mit diesem Befehl austauschen:
Code:
pid=$(ps aux | grep -v grep | grep -E "/var/packages/HyperBackup/target/bin/(img_backup|dsmbackup|synoimgbktool|synolocalbkp|synonetbkp|updatebackup).+-k $taskid" | awk '{print $2}')
echo PID of Backup Task: "$pid"
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Wow. Hier geht es ja ganz schön ab.
Sorry, bin absolut kein Bash-Profi und das Script hatte ich mir halt mal einfach aus verschiedenen Quellen zusammengesucht und ein wenig angepasst.
Zu dem Thema, dass das Backup nich startet, gab es hier mal die Sache mit dem Interpreter: https://www.synology-forum.de/threa...ardware-copy-taste-starten.105485/post-979681
Dass es aber via Script fehlschlägt, hatte ich so noch nicht. Ich werde aber die Lösungen von @luddi noch mal durchgehen und meinen Thread aktualisieren.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Mein Script sollte nur einmal zeigen dass man sich besser auf die eindeutige PID stürzen soll anstatt auf nur einen Namen.

Natürlich müsste man mein Script erweitern für alle individuellen Einzelfälle um die korrekte PID zu bekommen.

Das sehe ich genauso und ich werde bestimmt noch ein wenig mit deinem Script rumspielen, auch wenn das zunächst nichts mit dem eigentlichen Problem zu tun hat.

Aber eines traue ich mich jetzt schon zu behaupten und nehme hier @Tommes in Schutz dass es an dieser Stelle nichts mit dem Autopilot zu tun haben kann.
Das sehe ich genauso und daher der Vorschlag, die Diskussion in den anderen Thread zu verlagern, gerne auch mit einem Querverweis hierhin, oder eine Ergbnis-Präsentation
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
@Tommes kannst du in deinem Fall bitte einmal prüfen ob in deinem Beispiel mit diesem Befehl eine korrekte PID ausgegeben wird oder ob weiterhin ein leerer String zurückgegeben wird?
Mach ich… sobald die Wochenend-Glocke läutet 🤗
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Hi @Tommes,

mir gefällt Autopilot schon ziemlich gut. Vielen Dank! Wie man es von dir kennt, wie immer sehr schön und solide :cool:

Bist du offen für Vorschläge, damit dir die nächsten Jahre nicht langweilig wird?

Ich selbst komme mit dem Erstellen des Startskripts zurecht, aber vermutlich könntest du noch viel mehr User adressieren, wenn du Backuptasks im Autopilot verwalten lassen würdest. Ich stelle mir das so vor:
  • man wählt in der GUI den gewünschten USB-Datenträger aus
  • eine weitere Listbox listet die Tasks aus Hyperbackup auf (vielleicht geht das auch mit BasicBackup)
    • alternativ könnte der versierte User auch einen Einzeiler (oder Pfad zu einem Skript) angeben
  • AutoPilot weiß nun, was zu tun ist und legt noch auf dem Datenträger eine Textdatei mit einer ID oder einem Hash ab (kommt drauf an, ob man einen USB-Datenträger vielleicht aus so eindeutig identifizieren kann).
  • in einer separaten Ansicht in AutoPiolot werden die BackupTasks aufgelistet, welche man mit deinen schönen ToggleSwitches auch deaktivieren oder ggf. auch löschen kann.
Ein weiterer Vorteil hierbei ist, dass die Kommandos nicht in einem Skript auf dem USB-Datenträger liegen, welche dann ja in der Regel von Root ausgeführt werden.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
...kannst du in deinem Fall bitte einmal prüfen ob in deinem Beispiel mit diesem Befehl eine korrekte PID ausgegeben wird oder ob weiterhin ein leerer String zurückgegeben wird?
Jepp. Funktioniert. Ich erhalte nun eine PID, der HB-Auftrag wird aber weiterhin als "Fehlgeschlagen" deklariert. Nehme ich aber einen Auftrag wo der type=image ist, dann läuft HB durch und schließt den Auftrag in der GUI erfolgreich ab. Das ist ja schon mal eine Erkenntnis.

Bist du offen für Vorschläge, damit dir die nächsten Jahre nicht langweilig wird?
Aktuell ist mir überhaupt nicht langweilig, im Gegenteil. Ob sich daran in den nächsten Jahren etwas ändert, kann ich nicht wirklich abschätzen, offen für Vorschläge bin ich aber immer. ;)

...wenn du Backuptasks im Autopilot verwalten lassen würdest...
Die Idee ist in der Tat nicht schlecht, jedoch hadere ich ein wenig damit, mich stärker an Hyper Backup zu binden. Du siehst es ja grade selbst, dass es zur Zeit Probleme mit der Ausführung von HB-Aufträgen über die Konsole gibt. Daher weiß ich nicht, ob ich mir das antun möchte bzw. man diese Probleme AutoPilot in die Schuhe schiebt. Mit Basic Backup klappt das ja alles, warum sollte ich also HB unterstützen?

Nichtsdestotrotz werde ich deine Vorschläge nochmal eingehend prüfen und schauen, inwieweit sich das überhaupt sinnvoll umsetzten lässt. Momentan benötigt AutoPilot noch keine erweiterte App-Berechtigung und es wäre schön, wenn das so bleiben könnte. Deine Vorschläge schreien aber schon fast nach mehr Rechten.

Das hier würde ich aber, unabhängig von HB sicherlich auch ohne erweiterte Berechtigungen realisieren können.
  • man wählt in der GUI den gewünschten USB-Datenträger aus
  • eine weitere Listbox listet die Tasks aus Hyperbackup auf (vielleicht geht das auch mit BasicBackup)
    • alternativ könnte der versierte User auch einen Einzeiler (oder Pfad zu einem Skript) angeben ... welches er ausführen will!
  • AutoPilot weiß nun, was zu tun ist und legt noch auf dem Datenträger eine Textdatei mit einer ID oder einem Hash ab (kommt drauf an, ob man einen USB-Datenträger vielleicht aus so eindeutig identifizieren kann). h... mit dem Namen autopilot auf dem USB-Datenträger an, füllt diese mit Inhalten und setzt die Rechte entsprechend.
  • in einer separaten Ansicht in AutoPiolot werden die BackupTasks aufgelistet, welche man mit deinen schönen ToggleSwitches auch deaktivieren oder ggf. auch löschen kann.

Tommes
 
Zuletzt bearbeitet:
  • Like
Reaktionen: geimist

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Ich weiß ja, dass dir nicht langweilig ist. Es sollte auch nur laut gedacht sein. 🤗

Mit Basic Backup klappt das ja alles, warum sollte ich also HB unterstützen?
Mit HB lassen sich z.B. auch Anwendungen sichern ;)
 
  • Haha
Reaktionen: Benie

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Pöh
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Hab grade herausgefunden, das ich mein Einzelversion Backup über diesen Befehl erfolgreich über die Konsole ausführen kann…

Bash:
/var/packages/HyperBackup/target/bin/dsmbackup --backup <task id>

… wobei <task id> durch die Backup Task Nummer ersetzt werden muss. Leider habe ich es noch nicht geschafft, dem ganzen eine PID zu entlocken, so das man die Laufzeit des Auftrages ermitteln kann. Vielleicht hat @luddi ja eine Idee?

Ach ich Blödi... natürlich geht das...

Bash:
#!/bin/bash

taskid=3
#type=image

/var/packages/HyperBackup/target/bin/dsmbackup --backup "$taskid"
#/usr/syno/bin/synobackup --backup "$taskid" --type "$type"

pid=$(ps aux | grep -v grep | grep -E "/var/packages/HyperBackup/target/bin/(img_backup|dsmbackup|synoimgbktool|synolocalbkp|synonetbkp|updatebackup).+-k $taskid" | awk '{print $2}')
echo PID of Backup Task: "$pid"

while kill -0 $pid 2> /dev/null; do
        echo Processing Backup...
        sleep 60
done
echo Backup with PID "$pid" finished!

exit 0

Läuft! Ich glaub ich habe damit das Rätsel enträtselt und man sollte nun über die Konsole auch ein Einzelversion Backup ausführen. Wobei... den Hauptteil hat @luddi dazu beigetragen.

Kann das mal jemand testen?


Tommes
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.546
Punkte für Reaktionen
1.379
Punkte
234
Funktioniert.
Allerdings benötigt kill Root-Rechte. Für die Überprüfung würde ich daher eher ps vorschlagen:
Bash:
…
while ps -p $pid > /dev/null; do
…
 
  • Like
Reaktionen: luddi

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Ah sehr schön, das hatte ich nicht bedacht weil ich immer als root an der Konsole angemeldet bin.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Dann fassen wir nochmal zusammen!

Wir lösen einen Hyper Backup Auftrag nicht mehr über den Befehl ...
/usr/syno/bin/synobackup --backup "$taskid" --type "$type"
... wo man neben der Task ID noch den Typ bestimmen muss (Einzelversion oder Datenbankgestützt), sondern über den Befehl ...
/var/packages/HyperBackup/target/bin/dsmbackup --backup "$taskid"
... womit sich alle Hyper Backup Auftragstypen anhand ihrer Task-ID ausführen lassen.

Dank @luddi können wir die zugehörige Prozess-ID (PID) des ausgeführten Auftrages ermitteln, und wissen damit immer, ob genau dieser Auftrag noch läuft oder nicht. Vorher ließ sich nur ermitteln, ob grade irgendein Auftrag ausgeführt wird.

Und dank @geimist Vorschlag bezüglich kill vs. ps erhielt das neue Script den letzten Feinschliff.

Ich habe das grade zusammen mit AutoPilot bei mir getestet und es lassen sich sowohl Einzelversions- als auch datenbankgestützte Hyper Backup Aufträge ausführen. Von daher würde ich sagen:

Jungs, saubere Arbeit! :giggle:


Hier also nochmal das lauffähige Script um Hyper Backup Aufträge über die Konsole und damit in Verbindung mit AutoPilot ausführen zu können, wobei die 3 in taskid=3 durch eure gewünschte Task-Nummer ausgetauscht werden muss.

Bash:
#!/bin/bash

# Specify the Hyper Backup Task ID [task_?] from /usr/syno/etc/packages/HyperBackup/synobackup.conf
taskid=3

/var/packages/HyperBackup/target/bin/dsmbackup --backup "$taskid"
pid=$(ps aux | grep -v grep | grep -E "/var/packages/HyperBackup/target/bin/(img_backup|dsmbackup|synoimgbktool|synolocalbkp|synonetbkp|updatebackup).+-k $taskid" | awk '{print $2}')
while ps -p $pid > /dev/null; do
    sleep 60
done
exit ${?}

Vielleicht mag @daschmidt94 das bei sich auch mal testen und @plang.pl das Script in seinen Thread in irgendeiner Form unterbringen wollen.

Ich persönlich bedanke mich bei allen Beteiligten, das wir dieses Rätsel am Ende tatsächlich enträtseln konnten.

Tommes
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Hab das in meiner Anleitung mal ausgebessert (mit Quelle natürlich). Wenn ihr sagt, das läuft, dann läuft das auch. Natürlich werde ich das auch noch bei mir ändern und entsprechend testen. Im gleichen Atemzug werde ich auch den autopilot antesten. Ich muss aber erstmal warten. Seit Tagen läuft eine HyperBackup Sicherung. Die wird auch noch etwas dauern. Da werden gerade 3TB auf USB gesichert.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.259
Punkte für Reaktionen
601
Punkte
174
Eine kleine Korrektur habe ich noch angemerkt zum grep command. Details siehe hier.
 

daschmidt94

Benutzer
Mitglied seit
17. Mai 2020
Beiträge
266
Punkte für Reaktionen
19
Punkte
24
Leider bekomme ich es nicht zum laufen. Hab den Code von @Tommes kopiert aber will nicht.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Dann würde ich dich bitten, die Diskussion in diesem Thread weiterzuführen, da dein Problem erstmal nichts mit AutoPilot zu tun hat.
 

daschmidt94

Benutzer
Mitglied seit
17. Mai 2020
Beiträge
266
Punkte für Reaktionen
19
Punkte
24
das erste Problem hab ich gelöst das wenigstens der Hyperbackupjob gestartet wird, hab einfach ein sleep 30 vor der Ausführung des Backups eingestellt scheint sonst irgendwas zu schnell zu gehen.
Mit dem auswerfen nach exit0 hat aber in meinen Augen auch Autopilot ein Problem, wenn ich das Skript im Aufgabenplaner mit ausgabe ausführe, bekomme ich eine 0 zurück.

Code:
Aufgabe: autopilot
Start: Sun, 03 Sep 2023 06:46:16 +0200
Ende: Sun, 03 Sep 2023 07:00:47 +0200
Aktueller Status: 0 (Normal)
Standardausgabe/Fehler:
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Poste bitte mal dein autopilot-Script
 

daschmidt94

Benutzer
Mitglied seit
17. Mai 2020
Beiträge
266
Punkte für Reaktionen
19
Punkte
24
Bash:
#!/bin/bash

# Specify the Hyper Backup Task ID [task_?] from /usr/syno/etc/packages/HyperBackup/synobackup.conf
taskid=19
sleep 30
/var/packages/HyperBackup/target/bin/dsmbackup --backup "$taskid"
pid=$(ps aux | grep -v grep | grep -E "/var/packages/HyperBackup/target/bin/(img_backup|dsmbackup|synoimgbkptool|synolocalbkp|synonetbkp|updatebackup).+-k $taskid" | awk '{print $2}')
while ps -p $pid > /dev/null; do
    sleep 60
done
exit ${?}
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.673
Punkte für Reaktionen
1.573
Punkte
314
Zuletzt bearbeitet:


 

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