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

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

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