backup Skript wöchentlich/monatlich

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Profbunny
Beiträge: 592
Registriert: 04.04.2004 11:12:29
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bautzen

backup Skript wöchentlich/monatlich

Beitrag von Profbunny » 05.07.2020 11:57:31

Hi,

ich habe Probleme mit meinem Skript. Kurz zu meiner Idee, normalerweise habe ich btrbk über corn.weekly und cron.monthly ausgeführt. Was dazu führt, dass immer wenn die Zeit für cron.monthly dran ist, beide Skripte laufen und es dadurch sinnlos Festplattenplatz und Ausführungszeit verschlingt.
Dann kam mir die Idee, dies komplett über cron.weekly abzuhändeln und die Logik ins Skript zu schieben. Das Skript soll nun nach Wochennummern arbeiten. Quasi Woche im Monat 1-3,5 sind incementelle Backups und Woche 4 ist ein komplettes.
Hier nun das Skript:


Ich hoffe, ich habe mein Problem verständlich geschildert und ihr könnt mir helfen mein Problem zu lösen.
Auch ein anderer Ansatz für mein Grundsätzliches Problem wäre interessant, wie löst ihr das?

Micha
Zuletzt geändert von Profbunny am 16.07.2020 15:13:17, insgesamt 1-mal geändert.
Rechner / Server Debian sid

Benutzeravatar
MegaV0lt
Beiträge: 173
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: backup Skript wöchentlich/monatlich

Beitrag von MegaV0lt » 05.07.2020 15:07:44

Oder eine einfache if-Abfrage:

Code: Alles auswählen


if [[ "$WN" -ne 4 ]] ; then 
  echo "$WN wöchentlich"
  "$W"
else
  echo "$WN monatlich"
  "$M"
fi
Edit:
In der case Anweisung dürfte das '*' dazu führen, dass es immer mit ausgeführt wird
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: backup Skript wöchentlich/monatlich

Beitrag von tobo » 05.07.2020 16:01:22

Profbunny hat geschrieben: ↑ zum Beitrag ↑
05.07.2020 11:57:31
Leider werden beide case Anweisungen ausgeführt und ich verstehe nicht warum.
In deiner Log-Ausgabe ist nur ein wöchentlich zu finden, kein monatlich.

Und auch die Syntax deines case gibt das nicht her: Wird ein case-Zweig betreten, der mit ";;" abgeschlossen ist, dann ist das case danach beendet. Da wird nicht noch in einen anderen Zweig gesprungen. Somit kann deine Vermutung schon mal grundsätzlich nicht stimmen. Anders sähe es mit einem Terminator ";&", im case-Zweig, aus. Das wäre dann das Verhalten einer C-switch.
Dann würde sich der Asterisk "*" auch nicht als "Alles" verhalten, denn verschiedene Elemente werden mit eine Pipe "|" per Oder verknüpft "[1-3,5] | *". Wenn man einen * aber per oder verknüpft, dann kann man das davor auch einfach weglassen. Und so ein *, im case-Zweig, sollte wohl grundsätzlch eher alleine stehen, da er die Reste einsammeln soll.

Benutzeravatar
Profbunny
Beiträge: 592
Registriert: 04.04.2004 11:12:29
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bautzen

Re: backup Skript wöchentlich/monatlich

Beitrag von Profbunny » 05.07.2020 16:47:50

@MegaVolt
Die Idee mit der Schleife gefällt mir schon mal gut, werde ich testen.

@tobo
Es wird beides ausgeführt, man sieht es an den Sternen vor den snapshots von home,media und handy.
Im log findet sich:

Code: Alles auswählen

/mnt/btrfs/root/rootfs/etc
+++ /mnt/btrfs/root/backup_btrbk/etc.20200705
--- /mnt/btrfs/root/backup_btrbk/etc.20200605
*** /mnt/backup/_btrbk/etc.20200705
--- /mnt/backup/_btrbk/etc.20200621
*** /mnt/vuplus/sysiphus/btrbk/etc.20200705.btrfs.bz2.gpg
--- /mnt/vuplus/sysiphus/btrbk/etc.20200621.btrfs.bz2.gpg
*** /home/mdomann/media/syncthing/backup/sysiphus/etc.20200705.btrfs.bz2.gpg
--- /home/mdomann/media/syncthing/backup/sysiphus/etc.20200621.btrfs.bz2.gpg'
++ /usr/sbin/btrbk --override=incremental=no -c /etc/btrbk/btrbk.conf run
+ M='--------------------------------------------------------------------------------
mir ist auch nicht klar, was die Ausgabe hinter dem M bedeutet?
Rechner / Server Debian sid

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: backup Skript wöchentlich/monatlich

Beitrag von tobo » 05.07.2020 17:26:23

Profbunny hat geschrieben: ↑ zum Beitrag ↑
05.07.2020 16:47:50
@tobo
Es wird beides ausgeführt, man sieht es an den Sternen vor den snapshots von home,media und handy.
Nochmal - syntaxbedingt, nein!

Und verwechsle nicht beide case-Zweige werden durchlaufen und beide Backups werden ausgeführt!? Beide Backups werden bereits hier ausgeführt:

Code: Alles auswählen

W=$(/usr/sbin/btrbk  -c /etc/btrbk/btrbk.conf run) #wöchentlich
M=$(/usr/sbin/btrbk  --override=incremental=no -c /etc/btrbk/btrbk.conf run) #monatlich
Guckst du:

Code: Alles auswählen

$ cat FILE
cat: FILE: No such file or directory
$ f=$(echo test > FILE)
$ cat FILE
test
$ rm FILE
$ f='echo test > FILE'     ##EDIT##
$ cat FILE
cat: FILE: No such file or directory
$ eval "$f"
$ cat FILE
test
Ich persönlich würde aber von eval abraten.

EDIT: Da hatte ich jetzt selbst einen Fehler eingebaut. Dummerweise hat es im Beispiel trotzdem funktioniert!? In der mit EDIT kommentierten Zeile habe ich das umschließende $() entfernt.
Zuletzt geändert von tobo am 05.07.2020 18:30:25, insgesamt 3-mal geändert.

Benutzeravatar
MegaV0lt
Beiträge: 173
Registriert: 21.11.2011 11:16:07
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: backup Skript wöchentlich/monatlich

Beitrag von MegaV0lt » 05.07.2020 17:31:39

Das ist das Problem:

Code: Alles auswählen

W=$(/usr/sbin/btrbk  -c /etc/btrbk/btrbk.conf run) #wöchentlich
M=$(/usr/sbin/btrbk  --override=incremental=no -c /etc/btrbk/btrbk.conf run) #monatlich
Wird hier bereits ausgeführt!

Das muss anders gelöst werden!
Das könnte gehen:

Code: Alles auswählen

W="/usr/sbin/btrbk  -c /etc/btrbk/btrbk.conf run" #wöchentlich
M="/usr/sbin/btrbk  --override=incremental=no -c /etc/btrbk/btrbk.conf run" #monatlich
Ich würde die Parameter vom Ausführbaren Teil trennen.
"Das Internet? Gibt's diesen Blödsinn immer noch?"
[Homer Simpson], Sicherheitsinspektor im Kernkraftwerk Springfield.

Benutzeravatar
Profbunny
Beiträge: 592
Registriert: 04.04.2004 11:12:29
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bautzen

Re: backup Skript wöchentlich/monatlich

Beitrag von Profbunny » 05.07.2020 18:42:46

Danke, jetzt habe ich das Problem verstanden und die Befehle direkt in die case Anwendung geschoben, nun scheint es zu gehen.
Rechner / Server Debian sid

Antworten