Stern inaktivStern inaktivStern inaktivStern inaktivStern inaktiv
 

Mittlerweile sind verschiedene Hilfsprogramme zu raspiBackup entstanden. Sie stehen auf github zum Download zur Verfügung:

1) raspiBackupWrapper.sh : Damit kann man vor und nach dem Aufruf von raspiBackup verschiedene Dinge erledigen lassen. Der Code mounted schon die Backuppartition und unmounted sie falls sie vorher nicht gemounted war. Es ist etwas bash Script Kenntnis notwendig um das Script dem eigenen Bedarf anzupassen.

2) raspiBackupNfsWrapper.sh: Es wird von dem Script geprüft ob ein NFS Server verfügbar ist und nur dann raspiBackup gestartet. Ausser ein paar Definitionen des NFS Servers ist nichts anzupassen.

3) raspiBackupRestore2Image.sh: Mit diesem Script kann ein tar oder rsync Backup welches in normalen Backupmodus erstellt wurde in ein dd Backup umgewandelt werden. Dazu wird pishrink benutzt um die Größe des dd Images minimal zu halten. kmbach hat die Erstellung des Scripts angeregt. Das Script erfordert keine Änderungen.

4) raspiImageMail.sh: Dieses Script wurde von dem raspiBackup Benutzer kmbach erstellt weil er wollte, dass er am Ende von dem Aufruf von raspiBackupRestore2Image.sh eine eMail erhalten wollte. Dazu werden die raspiBackup eMail Konfigurationsparameter benutzt. Das Script erfordert keine Änderungen.

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   
    #18 framp 2021-01-08 22:41
    Moin Stephan,

    die Helperscripts sind Beispiele wie man die Funktionalitaet von raspiBackup erweitern kann und nicht supported wie raspiBackup :-* . Das Wrapperscript habe ich soweit getestet nachdem ich es als Beispiel erstellt hatte. Das raspiBackupRestore2Image Script habe ich ebenso getestet. Beides funktioniert standalone. Beides kombiniert ist nicht supported. Das geht sicherlich aber dann musst Du die beiden Scripts selbst zusammenbauen.

    Sorry - aber ich bekomme die letzte Zeit so viele Anfragen rein dass ich anfangen muss diese soweit sie nicht raspiBackup direkt betreffen abzublocken da ich sonst nur noch dabei bin mich mit diesen Anfragen zu beschaeftigen und das dann auch noch unbezahlt :sad:

    Cu framp
    Zitieren
    #17 Stephan 2021-01-08 21:32
    Hallo,
    möchte nach dem tar oder rsync Backup zusätzlich ein img-Datei. Das sollte doch über raspiBackupRestore2Image.sh funktionieren. Habe in der raspiBackupWrapper.sh am Ende den Funktionsaufruf raspiBackupRestore2Image stehen. Irgendwie gibts aber Probleme mit dem Umgang der $BACKUP_TARGETDIR, da immer nach dem Update die Meldung: "/usr/local/bin/raspiBackupWrapper.sh: line 131: BACKUP_TARGETDIR: unbound variable" angezeigt wird.
    Gruß
    Stephan
    Zitieren
    #16 framp 2018-05-13 09:49
    @Peter

    Habe eben Deinen Code ins git repo gesteckt. Noch einmal vielen Dank dafuer.

    Cu framp
    Zitieren
    #15 framp 2018-05-12 15:44
    Moin Peter,

    jetzt verstehe ich was Du damit meintest dass Du mit raspiBackup viel gelernt hast :lol: Man lernt bash immer am besten wenn man sich existierenden Code ansieht.

    Habe eben festgestellt dass das mit dem Sourcen von raspiBackup nicht klappt ohne dass raspiBackup geändert wird :oops: D.h. mein Vorschlag mit . war von vorneherein zum Misserfolg verurteilt. Sorry for the inconvenience.

    Besten Dank noch fuer die Kommentare.

    BTW:
    Code:bkppath=$(ls /backup/raspi | tail -n 1) ist noch etwas kuerzer ;-)

    Cu framp
    Zitieren
    #14 Peter 2018-05-12 12:05
    hi framp

    Vielen Dank fuer die Blumen, jedoch kenne ich mich nicht wirklich mir bash aus, dafuer sehr gut mit CMD, dadurch habe ich auch keine Beruehrungsaengste mal etwas Neues auszuprobieren.

    Falls du deinen Code erweitern möchtest oder den Code weiterverwenden willst habe ich das mini-Script etwas dokumentiert:
    Code:#!/bin/bash
    #r2i-raspi.sh

    #NFS-Share mounten
    mount -t nfs -o soft,vers=3 192.168.192.5:/c/backup /backup

    #schreibt die Verzeichnis-Struktur in die Datei folders.txt
    ls /backup/raspi > folders.txt

    #erzeugt aus den Name des neuesten Verzeichnisses die Variable $$bckpfad
    #Achtung: wenn im "backup root Ordner" Dateien vorhanden sind oder neuere Ordner die nichts mit dem Backup zu tun haben
    #werden diese ausgelesen und als Variable gesetzt!
    bckpfad="$(head -n 100 folders.txt | tail -n 1)"

    #loescht die temporaere Datei folders.txt
    rm folders.txt

    #startet r2i mit dem entsprechenden Pfad
    raspiBackupRestore2Image.sh /backup/raspi/$bckpfad

    #Bennent die erstellte "r21"-Datei um damit diese unter Windows als Image-Datei auf eine SD-Karte geschrieben werde kann
    mv /backup/raspi/$bckpfad/raspi-backup.dd /backup/raspi/$bckpfad/raspi-full-image.img


    #todo's (Ausbau fuer everyone):
    #- Alle Variablen am Anfang des Scripts definieren, wie z.B. bei raspiBackupNfsWraper.sh
    #- nur die Ordner in die Datei folders.txt schreiben und evt. sortiert (ls -D (?), ls -c (?) )
    #- pruefen ob die Datei "raspi-full-image.img" bereits exisitert, dann abbrechen.
    #- pruefen ob ueberhaupt eine Backup-Datei (*.dd) exisitiert, sonst abbrechen


    Ich bleibe an "meinen todo's" dran und werde dich udaten sobald ich etwas weiter bin (der Tag hat ja 24h und dann kommt noch die Nacht dazu :P )

    liebe Gruesse
    Peter
    Zitieren
    #13 framp 2018-05-11 21:26
    :oops: sehe gerade dass der genannte Benutzer nicht raspiBackupRestore2Image benutzen will wie Du sondern pishrink. Ich werde mir beides mal ansehen und eventuell in der naechsten Version anbieten :-) ich erstelle dazu zwei Issues im github.
    Zitieren
    #12 framp 2018-05-11 21:18
    Moin Peter,

    das ist dumm das Du es nicht so hinbekommen hast wie ich es mir vorgestellt habe :sad:

    Da Du Dich aber mit bash auskennst hast Du einen alternativen Weg gefunden und ich finde es sehr toll von Dir dass Du Deine Lösung hier der Allgemeinheit zur Verfügung stellst :thumbsup: Sofern Du keinen Einwand hast wuerde ich den Code in das Hilfsprogrammverzeichnis von raspiBackup auf github stellen.

    Es hat sich mittlwerweile noch ein raspiBackup Benutzer jemand gemeldet der dieselbe Funktionalitaet haben moechte. Ich werde mir das jetzt mal gezielt ansehen und vermutlich irgendeine Lösung in die naechste raspiBackup Version einbauen.

    Zu KISS: Ja, den Ansatz finde ich auch sehr gut - solange man es selbst ist der den Code erstellt hat und benutzt. In dem Moment wo man ihn anderen zur Verfuegung stellt ist das leider nicht mehr sehr benutzerfreundlich :-)

    Cu framp
    Zitieren
    #11 Peter 2018-05-10 22:58
    Zitat:
    Der Nachteil Deiner Loesung ist dass Du bei jedem Update von raspiBackup die Aenderung wieder einpflegen musst.
    Da hast du natuerlich Recht und dies war mir auch ein Dorn im Auge :oops:
    Zwischenzeitlich habe ich so viele Varianten der verschiedenen Scripts (Plugins, Extensions, raspiBackup-Parameter) ausprobiert, dass ich bald nicht mehr wusste was ich wie in welcher Variante ausprobiert habe! :cry: Leider hat nichts gefruchtet, entweder wurde die Variable $BACKUPTARGET_DIR nicht erkannt/uebernommen oder auf Grund eines Fehlers die ganze Sicher am Schluss des Scripts geloescht.
    Dafuer habe ich viel ueber dein raspiBackup gelernt, vielen Dank! :lol:

    Zwischenzeitlich ist auch noch ein Raspi-zero dazugekommen, der als MagicMirror von GLANCR eingesetzt wird und natuerlich auch gesichert werden will. Also habe ich mich mal etwas schlau gemacht und einige Code-Schnippsel zu einem neuen Script zusammengebastelt, welches ich nun per CRON-Job beliebig ausfuehren kann:

    Fuer den Raspi mit Pi-Hole und Unifi-Console:
    Code:#!/bin/bash
    #r2i-raspi.sh

    mount -t nfs -o soft,vers=3 192.168.192.5:/c/backup /backup

    ls /backup/raspi > folders.txt

    bckpfad="$(head -n 100 folders.txt | tail -n 1)"

    rm folders.txt

    raspiBackupRestore2Image.sh /backup/raspi/$bckpfad

    mv /backup/raspi/$bckpfad/raspi-backup.dd /backup/raspi/$bckpfad/raspi-full-image.img


    Und für den Zero mit MirrOS (MagicMirror):
    Code:#!/bin/bash
    #r2i-glancr.sh

    mount -t nfs -o soft,vers=3 192.168.192.5:/c/backup /backup

    ls /backup/glancr > folders.txt

    bckpfad="$(head -n 100 folders.txt | tail -n 1)"

    rm folders.txt

    raspiBackupRestore2Image.sh /backup/glancr/$bckpfad

    mv /backup/glancr/$bckpfad/glancr-backup.dd /backup/glancr/$bckpfad/glancr-full-image.img


    Ich bin halt der KISS-Typ (Keep It Simple and Stupid!), deshalb dieser spartanische Code :-*

    Darf auch gerne kopiert, geaendert und weiter publiziert werden.

    Viele Gruesse aus der Schweiz :D
    Zitieren
    +1 #10 framp 2018-05-08 20:24
    Moin Peter,

    das ist natuerlich eine weitere Moeglichkeit das Problem zu loesen. Allerdings muss es auch so wie ich es beschrieben habe funktionieren. Irgendeine Kleinigkeit machst Du wohl noch falsch. Der Nachteil Deiner Loesung ist dass Du bei jedem Update von raspiBackup die Aenderung wieder einpflegen musst.
    Alternativ kannst Du aich eine Extension bauen die nach dem Backup den restore aufruft. Siehe dazu hier: https://www.linux-tips-and-tricks.de/de/raspibackupcategoried/442-raspibackup-erweiterungen

    Cu framp
    Zitieren
    #9 Peter 2018-05-07 22:41
    Also die Netgear NAS-Partition ist für NFS und SMB konfiguriert bzw. freigegeben. Aber ich denke, dass die Fehlermeldung ignoriert werden kann, schliesslich wird eine Sicherung auf dem NAS gespeichert, die ich auch in ein DD umwandeln kann :-)

    Zurück zum Problem... ich habe es nun so gelöst:
    - Original raspiBackupNfsWrapper.sh wird per Cronjob ausgeführt
    - in deinem raspiBackup.sh habe ich bei Zeile 2504 diesen Code eingesetzt: raspiBackupRestore2Image.sh $BACKUPTARGET_DIR

    Tata.. und es funktioniert :lol:

    Vielen Dank für deinen Input und deine Unterstützung. :-)
    Zitieren
    #8 framp 2018-05-07 19:29
    Zitat:
    mv: failed to preserve ownership for '/backup/raspi/raspi-tar-backup-20180507-074508/raspi-backup.log': Operation not permitted
    Ich vermute Du benutzt eine Windows Partition als Backupspace.
    Zitieren
    #7 Peter 2018-05-07 07:56
    Habe nun das Script noch mit einem Echo-Befehl erweitert, damit ich im Log mehr sehe:
    Code:
    echo "Starte raspiBackup"
    . raspiBackup.sh -F
    echo "Starte Restore2Image in $BACKUPTARGET_DIR $MOUNTPOINT"
    raspiBackupRestore2Image.sh $BACKUPTARGET_DIR

    und das Log dazu:
    Code:
    Mounting 192.168.192.5:/c/backup to /backup
    Starte raspiBackup
    mv: failed to preserve ownership for '/backup/raspi/raspi-tar-backup-20180507-074508/raspi-backup.log': Operation not permitted
    chown: changing ownership of '/backup/raspi/raspi-tar-backup-20180507-074508/raspi-backup.log': Operation not permitted


    Wenn ich nun im Script raspiBackup.sh ohne ". " hnterlege, dann habe ich dieses Log:
    Code:
    Mounting 192.168.192.5:/c/backup to /backup
    Starte raspiBackup
    mv: failed to preserve ownership for '/backup/raspi/raspi-tar-backup-20180507-074613/raspi-backup.log': Operation not permitted
    chown: changing ownership of '/backup/raspi/raspi-tar-backup-20180507-074613/raspi-backup.log': Operation not permitted
    Starte Restore2Image in /backup
    raspiBackupRestore2Image.sh v0.1.4, 2018-04-01/11:50:22 - 16524e0
    ??? Missing parameter Backupdirectory
    Syntax: raspiBackupRestore2Image.sh <BackupDirectory> [<ImageFileDirectory>]


    hm... Also mit ". " bricht das Wrapperscript nach dem Backup ab ohne das Resore2Image Script bzw. den vorangestellten Befehl echo "Starte Restore2Image in $BACKUPTARGET_DIR $MOUNTPOINT" auszuführen :o
    Zitieren
    #6 framp 2018-05-06 22:06
    Moin Peter,

    das sieht alles richtg aus :-) Du bekommst aber vermutlich eine Fehlermeldung :sad: . Wie sieht die denn aus?

    Cu framp
    Zitieren
    #5 Peter 2018-05-06 21:24
    hi framp,

    ich glaub mir steht jemand auf dem Schlauch, ich krieg's einfach nicht hin :-?

    Habe die Datei 'raspiBackupNfsWrapper.sh' folgendermassen angepasst:

    if showmount -e $NFSSERVER | grep -q $NFSDIRECTORY; then
    echo "Mounting $NFSSERVER:$NFSDIRECTORY to $MOUNTPOINT"
    mount -t nfs -o soft,vers=3 $NFSSERVER:$NFSDIRECTORY $MOUNTPOINT
    . raspiBackup.sh
    raspiBackupRestore2Image.sh $BACKUPTARGET_DIR
    else


    was habe ich nicht begriffen?
    Zitieren
    +1 #4 framp 2018-05-05 17:57
    Moin Peter,

    ja, jetzt habe ich verstanden was Dein Problem ist :-) Du kannst es wie folgt loesen:

    1) Aendere die Zeile Code:raspiBackup.sh in Code:. raspiBackup.sh (Fuege Punkt und Leerzeichen zusaetzlich ein)
    2) Benutze Code:$BACKUPTARGET_DIR als Parameter fuer raspiBackupRestore2Image.sh

    Voilà ;-)

    Cu framp
    Zitieren
    #3 Peter 2018-05-05 17:40
    hi framp,

    vielen Dank für die schnelle Antwort. Mit 'automatisch erstellte Backup-Pfad "übernommen" wird.' meine ich den Sicherungs-Pfad, den RaspiBackup automatisch bei jedem Programmaufruf anlegt, also z.B:

    - raspi-dd-backup-20180421-181804 oder
    - raspi-tar-backup-20180504-040002
    - raspi-tar-backup-20180505-040001
    - raspi-tar-backup-20180505-165932
    usw.

    wenn ich raspiBackupRestore2Image.sh im NfsWrapper Script aufrufe (raspiBackupRestore2Image.sh) bekomme ich folgende Fehler-Meldung:

    ??? Missing parameter Backupdirectory
    Syntax: raspiBackupRestore2Image.sh []

    somit muss ich folgendes aufrufen damit es funktioniert:
    raspiBackupRestore2Image.sh /backup/raspi/raspi-tar-backup-20180505-165932 aber das ist ja dynamisch, da sollte doch eine Variable aus dem Backup-Script mit übergeben werden und genau diese Variable meine ich... :o

    Konnte ich mich verständlich ausdrücken?
    Zitieren
    +1 #2 framp 2018-05-05 12:10
    Moin Peter,

    man muss nur einfach anfangen und dann sieht man auch Erfolge als Newbie :-)

    Wie Du vielleicht im Header von raspiBackupRestore2Image.sh gelesen hast ist das Script auf Wunsch und in Zusammenarbeit von kmbach entstanden der es erfolgreich einsetzt.
    D.h. das was Du machen willst geht ;-) Nach dem Backup muss noch raspiBackupRestore2Image aufgerufen werden. Den Aufruf musst Du nur in das Wrapperscript am Ende mit aufnehmen. kmbach lässt das Script auf einem anderen LinuxRechner als der ProduktionsRaspi laufen und entlastet damit die Raspi. Vielleicht ist das auch eine Option fuer Dich.

    Leider verstehe ich nicht was Du mit Zitat:
    automatisch erstellte Backup-Pfad "übernommen" wird.
    meinst :sad:

    Cu framp
    Zitieren
    #1 Peter 2018-05-05 11:26
    Als Linux-Newbie bin ich erfahrenen Leute wie dir immer wieder dankbar, dass solche super Tools im Netz zur Verfügung gestellt werden, vielen Dank! :-)

    Zwischenzeitlich konnte ich sogar mit dem raspiBackupNfsWrapper.sh mein in die Jahre gekommenes Netgear ReadyNas NV+ v2 vor jedem Backup anbinden um ein TAR Backup zu erstellen.

    Der nächste Schritt ist raspiBackupRestore2Image.sh so einzubinden, dass nach jedem wöchentlichen TAR-Backup automatisch ein DD-Image im Backup-Ordner erstellt wird, welches ich als eingefleischter Windows-Nutzer bei Bedarf in eine *.IMG Datei umbenennen kann und dann mit Etcher eine SD-Karte zu erstellen.

    Kann man das überhaupt so automatisieren? Ich habe verschieden Wege versucht dies einubinden, scheitere jedoch daran, dass der automatisch erstellte Backup-Pfad "übernommen" wird. Mache ich etwas falsch?

    Mein Cront-Job wird so aufgerufen:

    /usr/local/bin/raspiBackupNfsWrapper.sh >> /home/pi/Backup.log 2>&1

    Vielen Dank für die Unterstützung.

    Grüsse aus der Schweiz
    Peter :-)
    Zitieren