staging.inyokaproject.org

Backup mit Systemd Service

Status: Ungelöst | Ubuntu-Version: Kubuntu 18.04 (Bionic Beaver)
Antworten |

cpt.hawk

Anmeldungsdatum:
12. Februar 2007

Beiträge: Zähle...

Hallo zusammen,

ich moechte beim runterfahren meines Rechners mein Backup Script ausfuehren. Das Backup Script arbeitet mit dem Tool BorgBackup, es schreibt das Backup auf ein NAS und meldet danach an meinen Server, ob das Backup erfolgreich war oder nicht. Aber das nur am Rande.

Um das Backup autom. beim Shutdown auszufuehren, habe ich mir eine Service Unit fuer System geschrieben:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Unit]
Description=run Borg Backup on shutdown
Requires=network.target
DefaultDependencies=no
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=true
User=root
Group=root
ExecStart=/root/bin/backup_with_report.sh

[Install]
WantedBy=multi-user.target

Wenn der Rechner runtergefahren wird, soll das Script /root/bin/backup_with_report.sh aussgefuehrt werden. Das Script muss abr noch auf Netzwerkressourcen zugreifen koennen, damit auf das NAS geschrieben werden und der Status an meinen Server gemeldet werden kann.

Die Unit ist mit systemclt enable aktiviert worden, aber das Script wird nicht ausgefuehrt. Das Script selbst funktioniert einwandfrei.

Daher die Frage: Was mache ich falsch?

Vielen Dank

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Hast Du denn systemctl enable --now gemacht oder nach dem systemctl enable ein systemctl start?

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

cpt.hawk schrieb:

Daher die Frage: Was mache ich falsch?

Das ist einfach zu beantworten: Die Absicht, das Backup als Reaktion auf das shutdown.target zu starten, ist der Fehler. Deine Unit müsste den kompletten Shutdown aufhalten, um eine Garantie darüber zu bekommen, dass das Backup erfolgreich durchgeführt wurde und um zu verhindern, dass benötigte Services nicht mittendrin beendet werden. Solange Du das nicht tust, gibt es keine Garantie dafür, dass ein Backup erfolgreich war...möglicherweise gibt es noch nicht mal einen Hinweis darauf, dass das Backup durch den Systemmanager unterbrochen wurde, weil er einfach den Prozess gekillt hat.

Ich empfehle Dir, eine andere Backup-Strategie zu entwickeln.

cpt.hawk

(Themenstarter)

Anmeldungsdatum:
12. Februar 2007

Beiträge: Zähle...

Das ist einfach zu beantworten: Die Absicht, das Backup als Reaktion auf das shutdown.target zu starten, ist der Fehler. Deine Unit müsste den kompletten Shutdown aufhalten, um eine Garantie darüber zu bekommen, dass das Backup erfolgreich durchgeführt wurde und um zu verhindern, dass benötigte Services nicht mittendrin beendet werden. Solange Du das nicht tust, gibt es keine Garantie dafür, dass ein Backup erfolgreich war...möglicherweise gibt es noch nicht mal einen Hinweis darauf, dass das Backup durch den Systemmanager unterbrochen wurde, weil er einfach den Prozess gekillt hat.

Danke fuer die Antwort. Die Frage ist jetzt ob und wie ich den Shutdown Prozess so lange unterbrechen kann?

Ich empfehle Dir, eine andere Backup-Strategie zu entwickeln.

Ich moechte gerne meine Dtaen sichern, wenn ich den Rechner herunterfahre. So machte ich das unter Windows auch. Hat sich als gute Strategie herausgestellt.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

cpt.hawk schrieb:

Danke fuer die Antwort. Die Frage ist jetzt ob und wie ich den Shutdown Prozess so lange unterbrechen kann?

Das wäre theoretisch möglich, lässt sich aber durch die paralelle Verarbeitung des shutdown nicht so leicht bewerkstelligen. Der erste Ansatz wäre systemd-inhibit. Dann müsstest du dafür Sorge tragen, dass nicht vor der Beendigung deines Scriptes alle nötigen Dienste beendet werden.

Einfacher wäre es da wohl eine eigene shutdown-Routine zu implementieren und nach dem (erfolgreichen) Ausführen deines Scriptes den shutdown per script zu starten.

TomLu

Anmeldungsdatum:
23. August 2014

Beiträge: 603

ChickenLipsRfun2eat schrieb:

Einfacher wäre es da wohl eine eigene shutdown-Routine zu implementieren und nach dem (erfolgreichen) Ausführen deines Scriptes den shutdown per script zu starten.

Das wäre eine praktikable Lösung.... einen eigenen Desktop-Starter mit einem Poweroff-Button als Icon, der zuerst das Backup startet und als letzten Befehl nach dem Backup den shutdown durchführt.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

TomLu schrieb:

Das wäre eine praktikable Lösung.... einen eigenen Desktop-Starter mit einem Poweroff-Button als Icon, der zuerst das Backup startet und als letzten Befehl nach dem Backup den shutdown durchführt.

Gut, ich würde den Standard umbiegen. Aber ein eigener Starter geht natürlich auch. Noch einfacher ☺

Antworten |