Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

Es besteht die Möglichkeit eigene Codeerweiterungen vor und nach dem Backupprozess des Scripts einzubinden. Dieses ist sinnvoll, wenn eigentlich Änderungen im Backupscript notwendig sind aber dann natürlich nach jedem Update von raspiBackup auf eine neue Version wieder neu eingepflegt werden müssen. Die Extensions (Plugins) sind unabhängig vom jeweiligen Codestand von raspiBackup und deshalb in diesem Falle zu empfehlen.

Drei Plugins stehen zur Verfügung und dienen als Beispiele für eigene Erweiterungen. Durch die ersten wird  die CPU Temperatur sowie die Hauptspeicher- und Backuppartitionsbelegung sowie die Partitionsbelegung vor und nach dem Backup ausgegeben. Die letzte Erweiterung wird nur am Ende des Backups aufgerufen und kann bei Erfolg bzw Misserfolg des Backups unterschiedliche Aktionen auslösen.

Wer nützliche Plugins für die Community erstellt hat kann sie gerne hier in einem Kommentar beschreiben  und die Downloadlocation nennen. Sollten Fähigkeiten der Plugins fehlen einfach einen Kommentar dazu hier hinterlassen und ich prüfe in wieweit die fehlende Funktion eingepflegt werden kann.

 

Beispielplugins

 

  1. Der einfachste Weg ist die Beispielplugins mit dem Installer zu installieren und zu aktivieren. Entweder über die Menufolge Installiere Komponenten->Installiere Beispielerweiterungen oder direkt über die Befehlszeile (Benutze die Option -e)
    raspiBackupInstallUI.sh
    oder
    raspiBackupInstallUI.sh -e
  2. Alternativ kann man durch den Aufruf von der folgenden Zeile Beispielplugins in /usr/local/bin auf der Raspberry installierern und dann manuell aktivieren:
    wget http://www.linux-tips-and-tricks.de/raspiBackupSampleExtensionsInstall.sh -O raspiBackupSampleExtensionsInstall.sh -q && bash raspiBackupSampleExtensionsInstall.sh 
  3. Wer die Beispielplugins manuell installieren will kann das tar mit diesem Link mit einem Browser downloaden oder auch direkt wie folgt auf die Raspberry downloaden und nach /usr/local/bin auspacken.
    wget http://www.linux-tips-and-tricks.de/raspiBackupSampleExtensions.tgz -O raspiBackupSampleExtensions.tgz
    tar -xzf raspiBackupSampleExtensions.tgz -C /usr/local/bin

Dadurch werden die folgenden Scripte in /usr/local/sbin kopiert:

1) raspiBackup_mem_pre.sh and raspiBackup_mem_post.sh - Reports the memory usage of the Raspberry before and after the backup run

2) raspiBackup_temp_pre.sh and raspiBackup_temp_post.sh - Reports the CPU temperature of the Raspberry before and after the backup run

3) raspiBackup_disk_pre.sh and raspiBackup_disk_post.sh - Reports the backup disk usage of the Raspberry before and after the backup run

4) raspiBackup_execute_post.sh - Execute  some code when the backup finished. Actually no longer needed because options DEFAULT_BEFORE_STOPSERVICES and DEFAULT_AFTER_STARTSERVICES can be used for this.
 

Um die Plugins zu aktivieren ist noch folgender zusätzlicher Aufrufparameter bei raspiBackup notwendig.

-N "temp mem disk execute"

 bzw in die Konfigurationsdatei ist folgende Zeile aufzunehmen

DEFAULT_EXTENSIONS="temp mem disk execute"

Details zu den Aufrufparametern bzw den Konfigurationsparametern siehe hier

 

Die Plugins erzeugen folgende Meldungen:

--- RBK1001I: Memory usage - Pre backup - Used: 97 MB Free: 130 MB - Post backup - Used: 98 MB Free: 121 MB
--- RBK1000I: CPU temperature pre and post backup: 53.2'C - 55.8'C
--- RBK1002I: Disk usage pre backup: Used: 1.30 TiB Free: 2.18 TiB
--- RBK1003I: Disk usage post backup: Used: 1.30 TiB Free: 2.18 TiB
--- RBK1004I: Free change: -256.00 KiB (0.00 %)

 

Meldungen

Die Beispielplugins benutzen Meldungen die ab dem Nummernbereich 1000 beginnen wie z.B. RBK1000I. Wer eigene Plugins erstellt sollte sofern sie Meldungen schreiben diese bei 2000 beginnen lassen und nicht den Bereich unter 1999 benutzen.

 

Interface

Das Plugin bekommt im Aufruf den aktuellen Statuscode von raspiBackup mitgegeben. Ein Statuscode von 0 bedeutet in den Postplugins der Backup war erfolgreich. Jeder andere Statuscode bedeutet dass der Backup beendet wurde.

 

eMailPlugin

Ab der Version 0.6.1.1 gibt es ein emaiPlugin D.h. man kann die emailVersendung selbst programmieren. Das ist dann besonders hilfreich, wenn die vom Script unterstützen eMailProgramme den eigenen eMailClient nicht unterstützen. Ausserdem kann das Aussehen der eMail beliebig geändert werden. Eine Beispielplugins die mailx benutzt befindet sich in den Beispielplugins.

Das Mailplugin wird dadurch aktiviert, dass für den Parameter -s mailext definiert wird. Dann wird das Mailplugin mit dem Namen raspiBackup_mail.sh aufgerufen, die dann den Mailversand vornehmen muss. Die folgenden Parameter werden dem Mailplugin Script übergeben:

email="$1"        # target email address
subject="$2"      # email subject
content="$3"      # email contents
parms="$4"        # addtl email parms passed with -E
append="$5"       # file to append

Wenn jemand ein eMailPlugin schreibt wäre es gut wenn dieses Plugin in einem Kommentar am Ende dieser Seite erläutert wird so dass der Code vielleicht mit anderen ausgetauscht werden kann.

 

Hinweise

1) Achtung: Die Extensions laufen mit root Rechten und können deshalb bei Fehlern das laufende System schädigen oder sogar zerstören !

2) Es sind nicht beide Scripts (pre und post) notwendig. Es reicht wenn eines existiert.

3) Zum Testen von Plugins ist der Parameter -F sehr hilfreich. Dadurch wird der eigentliche Backupprozess übersprungen und somit der Scriptdurchlauf sehr schnell.

4) Der Rückgabewert des Backupprozesses wird an das Plugin als Parameter weitergereicht. 0 <=> OK, <>0 Fehler

5) Da die Plugin im Scope von raspiBackup aufgerufen werden, besteht Zugriff auf interne Scriptvariablen. Davon ist abzuraten, da sich die Internas jederzeit ändern können.

5) Wenn jemand seinen Plugincode sharen möchte geht das einfach über einen Pullrequest auf github. Dort ist aller Plugins im Quellcode verfügbar um ihn zu erweitern und neuen zuzufügen.

Kommentar schreiben

*** Hinweis ***

Kommentare sind erwünscht. Aber um lästige Spamposts abweisen zu können gibt es ein paar Dinge die zu beachten sind:
  1. Kommentare mit dem Text http werden sofort zurückgewiesen mit der Meldung Sie sind nicht berechtigt den Tag zu verwenden. zz
  2. Kommentare werden manuell überprüft und es dauert deshalb in der Regel einen Tag bis sie veröffentlicht werden.

    Kommentare   
    #12 framp 2020-09-05 23:46
    Moin e-raser,

    das sollte nicht der Fall sein. Allerdings muss ich gestehen dass ich diesen Usecase nicht getestet habe :oops:

    Kannst Du mir mal das Debuglog dazu zukommen lassen? Das geht am besten wenn Du einen Issue in github erstellst und das log anhaengst.

    Cu framp
    Zitieren
    #11 e-raser 2020-09-05 23:36
    Hi,

    ich habe ein post-Skript für eine Notification "Backup war erfolgreich!" über eine API.

    Wie kann ich die Notification absetzen, wenn das Backup NICHT erfolgreich war? Es scheint, als würde ein post-Skript nur nach einem erfolgreichen raspiBackup aufgerufen werden.

    Danke für die Hilfestellung + Gruß

    e-raser
    Zitieren
    #10 framp 2019-06-11 12:15
    Moin Heinz aus Kiel,

    meine Tests habe ich ohne raspiBackup Call ausgefuehrt. Dabei habe ich dann nicht bemerkt dass auch beim exit von raspiBackup der trap greift. Jetzt sollte es aber funktionieren :-)

    Cu framp
    Zitieren
    #9 Heinz aus Kiel 2019-06-11 11:56
    zitiere framp:
    Noch einmal Moin Heinz aus Kiel,

    noch einmal vielen Dank fuer den Hinweis auf den Bug. Ist jetzt auch gefixed :-)

    Cu framp


    Hallo Framp,

    Hmm, bei mir fabriziert das Script "stopStartAllServicesWrapper.sh" immer noch 2 Aufrufe der trap-Routine "startAllServices", also 1x zu oft. Es werden die beiden Traps "EXIT" und "ERR" ausgelöst. Leider reicht es nicht, eine der beiden Trap-Flags zu entfernen, es bleibt bei einer doppelten Ausführung.

    Irgendwelche Ideen?

    Liebe Grüße aus Kiel,

    Heinz
    Zitieren
    #8 framp 2019-06-09 18:28
    Noch einmal Moin Heinz aus Kiel,

    noch einmal vielen Dank fuer den Hinweis auf den Bug. Ist jetzt auch gefixed :-)

    Cu framp
    Zitieren
    #7 framp 2019-06-09 18:12
    Moin Heinz aus Kiel,

    vielen dank fuer den Hinweis auf das Problem sowie wie es geloest wird. Du hast Recht: Es ist neue Funktionalitaet zum Script dazugekommen (XATTR support mit rsync) und ich habe nach der Erweiterung nicht mehr den alten Pfad getestet. Jetzt ist es gefixed :-)

    Cu framp
    Zitieren
    #6 Heinz aus Kiel 2019-06-09 14:47
    Hallo Framp,

    Das Script "stopStartAllServicesWrapper.sh" ist wirklich nützlich. Ich nutze es, um dann ein weiteres Script "raspiBackupWrapper.sh" anzustarten. Dazu sollte ein "sudo" eingefügt werden, sonst reichen die Rechte nicht aus.

    Des weiteren ist mir ausgefallen, das bei mir die Routine "startAllServices" mehrfach (6x) aufgerufen wird. Einfach zum Nachvollziehen den "RaspiBackup.sh" bzw. bei mir den "raspiBackupWrapper.sh" ausdokumentieren und von Hand starten.

    Anbei mein (gekürztes) Log. Die mit ### kommentierten Infos sind von mir!:

    service wd_keepalive stop &>/dev/null
    service watchdog stop &>/dev/null

    ###...
    service watchdog start &>/dev/null
    service wd_keepalive start &>/dev/null

    #### ==> 1 x ist ok

    ###...
    service watchdog start &>/dev/null
    service wd_keepalive start &>/dev/null

    #### ==> 2 x ist not ok

    usw.

    Liebe Grüße aus Kiel

    Heinz
    Zitieren
    #5 Heinz aus Kiel 2019-06-09 14:25
    Hallo Framp,

    könnte es sein, das in der Datei "raspiBackupWrapper.sh" die Variable LOOP_DISK_NAME bei Nichtgebrauch NICHT ausdokumentiert, sondern auf LOOP_DISK_NAME="" gesetzt werden muß? Ich habe ein paar Stündchen rumgesucht, da die "if [[-n $LOOP_DISK_NAME ]]" Abfrage im Wrapper bei dem undefinierten Zustand ab und zu fehlschlägt.

    Liebe Grüße aus Kiel
    Zitieren
    #4 Philipp 2018-01-14 19:19
    Hey framp,

    Danke für die schnelle Reaktion und den Fix, funktioniert alles, siehe auch meine Antwort auf Github :)
    Schönen Abend wünsche ich noch :-)
    zitiere framp:
    Moin Philipp,

    es gibt einen Fix fuer Dich ;-) Der neue Code steht im github. Bitte lade die beiden Extension Scripts davon runter und kopiere sie in /usr/local/bin. Danach sollte es funktionieren. Lass mich bitte wissen ob alles OK ist damit ich dann den Fix offiziell rausgebe.

    Cu framp
    Zitieren
    +1 #3 framp 2018-01-14 14:24
    Moin Philipp,

    es gibt einen Fix fuer Dich ;-) Der neue Code steht im github. Bitte lade die beiden Extension Scripts davon runter und kopiere sie in /usr/local/bin. Danach sollte es funktionieren. Lass mich bitte wissen ob alles OK ist damit ich dann den Fix offiziell rausgebe.

    Cu framp
    Zitieren
    +1 #2 framp 2018-01-14 11:58
    Moin Philipp,

    die Ausgabe von free hat sich in Stretch geändert. Ich passe das heute an.

    Cu framp
    Zitieren
    #1 Philipp 2018-01-14 11:25
    Morgen :),

    vielleicht eine einfache Frage. Unter Raspbian Stretch fehlen dem Beispielplugin mem_pre & mem_post beim auslesen die Werte. Die Ausgabe ist einfach:

    "--- RBK1001I: Speicherauslastung - Vor dem Backup - Belegt: MB Frei: MB - Nach dem Backup: Belegt: MB Frei: MB"

    Da sie im Oktober aktualisiert wurden vermute ich das sich ein Fehler eingeschlichen hat. Leider finde ich ihn nicht selbst, hat jemand eine Idee?
    Zitieren