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:
    raspiBackupInstall -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 und raspiBackup_mem_post.sh

2) raspiBackup_temp_pre.sh und raspiBackup_temp_post.sh

3) raspiBackup_disk_pre.sh und raspiBackup_disk_post.sh

4) raspiBackup_execute_post.sh

 

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

 

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

Spam Kommentare werden gelöscht und nicht veröffentlicht. Die Überprüfung wird manuell vorgenommen und deshalb dauert es i.d.R. zwischen ein paar Stunden bis zu einem Tag bis ein Kommentar veröffentlicht wird.

Kommentare   
#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