[Eisfair] rsnapshot 1.2.0

Hilmar Böhm hilmar.boehm at web.de
Do Aug 23 02:23:50 CEST 2018


Hallo Marcus,

>>> /usr/bin/rsnapshot $* 2>&1 | /usr/bin/rsnapreport.pl | /bin/mail -s
>>> "${_subject}" ${_report_to}
>>>
>>> Das 2>&1 - so gibt es auch der autor an - sorgt dafür das rsnapreprt.pl
>>> alle Ausgaben sieht, auch die Fehler. Wenn rsnapreport.pl die aber dann
>>> ausfiltert hat man an der Stelle verloren.

> Nein, der ganze Output geht in rsnapreport.pl rein, sodann denn überhaupt
> schon obige Zeile beim Abbruch in Ausführung ist.
> 
> Wie soll man überhaupt gescheit auf Ctrl-C reagieren?
> 
> Es gibt zwar Traps in der Bash, die dann einen geordneten Rückzug (z. B.
> Löschen temporärer Dateien) machen kann, aber das kann dir nicht sagen, was
> nun los war.
> 
> Wenn du etwas zwangsweise brutal mit Ctrl-C oder per kill killst, musst du
> dir über mögliche Konsequenzen selbst im Klaren sein; das kann dir niemand
> abnehmen.
> 

Ja selbstverständlich bin ich mir über die Konsequenzen bei einem Abbruch klar...
Du kannst ja alles so lassen wie es ist. Wie ich schon sagte: Leeres rsnapreport-Mail --> Backup fehlerhaft/nicht brauchbar.

Aber darf ich bitte mal Oberlehrer spielen? :-)

Die rsnapshot pipe (s.o.) kann man auch auftrennen: rsnapshot schreibt seinen gesamten Output (2>&1) in eine /tmp-Datei.
Die anderen beiden Elemente der Pipe  folgen danach. Dazwischen erfolgt eine Bash Error-Status Abfrage, die das gesamte Skript
ggf. mit einer Mail-Msg beendet.

Ich habe das mal so auf meinem Debian-Server gecheckt mit einem kleinen Testskript:
--------------------------------
#!/bin/bash
#
rsnapshot daily 2>&1 >/tmp/rsnapout.txt
if [ "$?" -ne  "0" ]; then
         echo "rsnapshot backup - FEHL GESCHLAGEN oder abgebrochen. Kein rsnapreport!!" | mailx -r "backup at server" -s "rsnapshot 
fehlgeschlagen" "<Meine Mail-Adresse>";
         exit  1
fi
#
cat /tmp/rsnapout.txt | /usr/local/bin/rsnapreport.pl | mailx -r "backup at server" -s "rsnapreport" "<Meine Mail-Adresse>"
#.....
exit 0
--------------------------------

Da der größte Teil der Laufzeit des Skript von "rsnapshot daily" verbraucht wird, wird bei einem händischen Abbruch (^C) auch 
sehr wahrscheinlich das rsnapshot-Perl-Skript abgebrochen (und nicht die anderen Teile der Pipe). Bash meldet dann in "$?" einen 
Wert > 0 zurück.

Ich bin mir natürlich im klaren, dass der Abbruch ein unvollständiges und unbrauchbares Backup hinterlässt. Den händischen 
Abbruch habe ich vor allem bei Testen eines neuen rsnapshot Setups verwendet. Der Eisfair-Wrapper hat den Vorteil, dass er die 
erforderlichen Mounts macht...

[Oberlehrer off] :-(

Viele Grüße. / Hilmar.

P.S.: Es gibt auch rsnapshot Skripts, die (u.a.) ein Rollback eines fehlgeschlagenen Backups machen: z.B.: "rsnapshot-once".
--> https://blog.heckel.xyz/2013/06/28/script-run-rsnapshot-backups-only-once-and-rollback-failed-backups-using-rsnapshot-once/


Mehr Informationen über die Mailingliste Eisfair