Überblick

raspiBackup erstellt Backups vor Raspberry Pis. Das Script kann den erstellten Backup auch wieder restoren. Dabei werden auf der Ziel SD Karte neue Partitionen angelegt und dann mit dem entsprechenden Tool (dd, tar oder rsync) die Daten wieder restored. Das dd Backup kann man auch unter Windows restoren. Alle anderen Backuptypen benötigen eine Raspberry mit einem laufenden Raspbian oder ein anderes System, welches Linux als Betriebssystem hat. Ein manueller Restore der Daten mit den zuvor benutzten Backuptools dd, tar oder rsync ist natürlich auch möglich. Sollte ein externes Rootfilesystem gesichert worden sein wird es auch wieder auf ein externes Gerät zurückgespielt.

 

Funktionsübersicht

  • Einfacher Restore der Sicherung für Windows, Mac oder Linux Benutzer mit der Raspberry selbst
  • Meldungen in Deutsch und Englisch
  • Externes Rootfilesystem kann gesichert und restored werden wenn der normale Backupmodus und ein tar oder rsync backup benutzt wurde
  • Einsetzbar auch zum Klonen von einer Raspberry Pi
  • Einfacher Update des Scripts durch die aktuellste Version (-U Parameter)
  • Raspberry Pi kann sich selbst wiederherstellen

 

Inhaltsverzeichnis

Aufrufsyntax und -optionen

Wiederherstellungsszenario für Windows- und Macbenutzer

Wiederherstellungsszenario für Linuxbenutzer

Beispielaufrufe

 

Aufrufsyntax und -optionen

raspiBackup muss als Benutzer root oder per sudo aufgerufen werden.

raspiBackup.sh Option1 Option2 Option3 ... [Backupverzeichnis bzw Backupdatei] 

Je nachdem ob das Quellsystem nur die SD Karte benutzt oder sein Rootfilesystem extern ausgelagert hat sind zwei verschiedene Aufrufe des Restores zu unterscheiden, die durch den Parameter -R gesteuert werden.

Parameter Funktion Standard
-d

Ausgabedevice (die SD Karte). Beispiel: /dev/sda

Achtung: Dieses Device wird vollständig gelöscht und neu angelegt. Ab der Version 0.6.1.3 wird automatisch bei tar und rsync Backup die Größe der root Partition entsprechend verkleinert oder vergrößert wenn die SD Karte eine andere Größe hat als die SD Karte des Backups.

Keiner
-r

Verzeichnis aus welchem der Backup gelesen werden soll oder die Backupdatei.

Diese Option ist obsolet ab der Version 0.6.1.2 und wird in einer der nächsten Versionen nicht mehr existieren. Stattdessen ist der Backuppfad oder die Backupdatei als letzter Parameter beim Scriptaufruf mitzugeben.

Keiner
-R

Partition auf welchem das root Verzeichnis restored werden soll. Beispiel: /dev/sdb1

Achtung: Die Partition wird neu formatiert. Deshalb aufpassen, dass es die richtige Partition ist!

Durch diese Option kann man Backups von Systemen restoren, die eine externe Partition als Rootpartition benutzen wie USB Sticks oder Festplatten. Dieses ist nur möglich wenn ein tar oder rsync Backup vorliegt.

Hinweis: Diese Option steht nur zur Verfuegung wenn der normale Backupmodus benuzt wurde. Im partitionsorientierten Modus (Option -P) kann keine externe Rootpartition mitgesichert werden.

Keiner
-0 Es wird kein neues Paritionslayout auf der SD Karte erstellt sondern das existierende benutzt.  Keiner
-1 Fehler, die beim Erstellen des Partitionslayouts auftreten werden ignoriert.   Keiner


 

Wiederherstellungsszenario für Windows- und Macbenutzer

Sofern eine DD Backup erstellt wurde kann das mit dem Windows32DiskImager restored werden. Alternativ kann jedes Backup mit der Pi wiederhergestellt werden. Soll ein TAR oder RSYNC Backup wiederhergestellt werden muss dieser alternative Weg beschritten werden. Die folgenden Schritte sind notwendig:

1) Ein raspbian auf der Raspberry starten

2) Die SD Karte auf die wiederhergestellt werden soll muss in einem SD Kartenlesen angeschlossen werden

3) Das Medium, welches das Backup enthält (z.B. eine Platte) muss angeschlossen und gemounted werden bzw ein Netzwerklaufwerk mit den Backupdaten muss gemounted werden

4) Falls die Rootpartition ausgelagert wurde muss eine weitere Platte angeschlossen werden, die die Rootpartition enthält, welche wiederhergestellt werden soll

Dabei wird üblicherweise die SD Karte /dev/sda, die Backuppartition /dev/sdbx und eine eventuelle Rootpartition /dev/sdcx. Wird ein Netzlaufwerk benutzt ist die Rootpartition dann üblicherweise /dev/sdbx

Die aktuelle Gerätebelegung kann anders sein und sollte immer mit

sudo parted -l 

überprüft werden um zu vermeiden dass andere Partitionen irrtümlicherweise überschrieben werden.

 

Wiederherstellungsszenario für Linuxbenutzer

Dieses sieht genauso aus wie das für Windows- und Macbenutzer. Im Unterschied braucht aber die Raspberry Pi nicht benutzt sondern wird die SD Karte mit dem SD Kartenleser an das Linuxsystem angeschlossen, die Backuppartition gemounted und eine Partition für ein eventuelles externes Rootfilesystem bereitgestellt.

 

Beispielaufrufe

Notwendige Hardware für den Restore:

1) Eine laufende Raspberry Pi mit einem laufenden raspbian oder einem anderen Linux Betriebssystem oder ein anderer Linux Rechner mit installiertem raspiBackup.

2) Einen angeschlossener SD Kartenleser und eingelegte neuer SD Karte

3) Ein angeschlossenes Backupdevice (per USB oder Netz)

4) Falls eine externe Rootpartition wiederherzustellen ist muss noch per USB eine weitere Platte oder SD Karte angeschlossen sein.

 

Restore auf eine SD Karte

  1. Das gesicherte System heisst im Beispielaufruf raspberrypi
  2. SD Karte die den Restore der Boot- und Rootpartition erhalten soll ist im Beispiel als sdf verfügbar. Achtung: Alle bestehenden Daten der SD Karte werden nach einer Sicherheitsabfrage von raspiBackup vor dem Restore gelöscht.
  3. Das zu restorende Backup ist unter /remote/raspifix/disks/backup/rsync/raspberrypi/raspberrypi-rsync-backup-20141230-213032/ verfügbar
  4. Hier ist beschrieben wie man den aktuellen Wert für -d herausfinden kann
sudo raspiBackup.sh -d /dev/sdf /remote/raspifix/disks/backup/rsync/raspberrypi/raspberrypi-rsync-backup-20141230-213032/

Sollte das zu restorende Backup ein tar oder dd Backup sein sieht der Aufruf wie folgt aus

sudo raspiBackup.sh -d /dev/sdf /remote/raspifix/disks/backup/tar/raspberrypi/raspberrypi-tar-backup-20141230-213032.tar

oder

sudo raspiBackup.sh -d /dev/sdf /remote/raspifix/disks/backup/dd/raspberrypi/raspberrypi-dd-backup-20141230-213032.img

 

Restore auf eine SD Karte und eine externe Partition

  1. Das gesicherte System heisst raspberrypi
  2. Es wurde auf /dev/sda eine entsprechend grosse Partition /dev/sda1 angelegt um den Restore aufzunehmen. Eine Formatierung ist nicht notwendig.
  3. Die SD Karte die den Restore der Bootpartition erhalten soll ist im Beispiel als sdf verfügbar. Achtung: Alle bestehenden Daten der SD Karte werden nach einer Sicherheitsabfrage von raspiBackup vor dem Restore gelöscht.
  4. Die externe Rootpartition auf der das Rootfilesystem restored werden soll liegt im Beispiel auf sda1. Achtung: Alle Daten der Partition /dev/sda1 werden nach einer Sicherheitsabfrage von raspiBackup vor dem Restore gelöscht.
  5. Das zu restorende Backup ist unter /remote/raspifix/disks/backup/rsync/raspberrypi/raspberrypi/-rsync-backup-20141230-213032/ verfügbar
  6. Hier ist beschrieben wie man den aktuellen Wert für -d und -R herausfinden kann
sudo raspiBackup.sh -d /dev/sdf -R /dev/sda1 /remote/raspifix/disks/backup/rsync/raspberrypi/raspberrypi-rsync-backup-20141230-213032/ 

 

Wie kann man die Gerätenamen der externen SD Karte und externen Platte herausfinden?

Auf demr raspberry muss man folgenden Befehl eingeben:

fdisk -l | egrep "^Disk /|^/dev"

Die Ausgabe sieht dann z.B. wie folgt aus:

pi@raspberrypi:~# sudo fdisk -l | egrep "^Disk /|^/dev"
Disk /dev/mmcblk0: 8011 MB, 8011120640 bytes
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15646719     7761920   83  Linux
Disk /dev/sda: 15.5 GB, 15548284928 bytes
Disk /dev/sdb: 300.1 GB, 300069052416 bytes
/dev/sdb1               1   586072367   293036183+  ee  GPT

Nun sieht man dass die interne SD Karte /dev/mmcblk0 8GB gross ist, die neue externe SD Karte /dev/sda 16Gb gross ist und die externe Platte /dev/sdb auf die die Rootpartition gebracht werden soll ist 300GB gross und hat eine Partition /dev/sdb1.

Somit sind ist der Parameter für  -d /dev/sda (Externe SD Karte). Falls eine externe Rootpartition mitgesichert wurde ist noch -R /dev/sdb1 (Externe Rootpartition) notwendig. Die Parameter müssen natürlich den lokalen Gegebenheiten angepasst werden.

 

Hinweis

EIn Backup sollte regelmäßig getestet werden ob der Restore immer noch funktioniert und auch immer noch alle Daten beinhaltet. Nichts ist so frustrierend wenn man in dem Moment, wo man das Backup benötigt, feststellt, dass das Backup korrupt ist oder nicht alle Daten enthält. Ein Test ist bei der Raspberry recht einfach. Eine neue SD- Karte einlegen, das Backup restoren und von der neuen SD-Karte booten.

Falls aus irgendwelchen Gründen der Restore mit dem Script fehlschlägt kann man natürlich jederzeit die vom Script gesicherten Daten mit den Standard Linuxtools, die zum Backup genutzt wurden - dd, tar oder rsync - wieder restoren. Allerdings geht das dann nicht so bequem wie mit dem Script.
 

Kommentar schreiben

Spam Kommentare sind sinnlos !
Vor der Publizierung wird jeder Beitrag auf Spam geprüft. Leider dauert es deswegen bis ein Kommentar sichtbar wird. Dafür erhält aber kein Subscriber Spam eMails.
Die eMail ist optional und nicht öffentlich sichtbar. Sie ist notwendig um eMail Benachrichtigungen zu Antworten auf Kommentare zu erhalten und wird u.U. genutzt um offline zu kommunizieren.

Spam comments are useless !
Any comment will be reviewed first and checked for spam. Unfortunately this delays the publishing of comments but will protect subscribers from spam.
eMail is optional and hidden and is required get update notifications for any comments and may be used to contact you offline


Kommentare   

0 #115 framp 2016-11-17 19:37
Super. Jetzt hoffe ich das sich die Banane und die Orange vertragen :D
Zitieren
0 #114 René 2016-11-17 18:55
Danke schön für das super Script. Der Restore hat offenbar geklappt. Jetzt muss ich nur noch den Orange Pi dazu überreden das Banana Pi Image zu schlucken :-)
Zitieren
0 #113 framp 2016-09-24 15:41
Moin Helmut,

sfdisk: end of partition 2 has impossible value for cylinders: 1021 (should be in 0-1020)

Das ist ein Zeichen dass die dynamische Anpassung der Rootpartition in Deinem Falle noch Probleme hat. Bei meinen Tests war alles OK aber es gibt offensichtlich noch Randbedingungen wo es nicht funktioniert :sad:

Bitte rufe den Restore mit den zusätzlichen Optionen -l 1 -m 1 auf und schicke mir das erstellte Log von raspiBackup zu. Meine eMail findest Du auf der Kontaktseite.

Wenn Du eine SD Karte nimmst die dieselbe Größe oder sogar größer ist als die Original SD Karte sollte der Restore funktionieren.

Cu framp
Zitieren
0 #112 Helmut 2016-09-24 09:44
Guten Morgen,

ich habe nun nach einigem Probieren erfolgreich rsync Backups erstellt und möcht das Restore verifizieren. Doch dies geht schief, weil sich fsdisk beim Erstellen der Partitionen beschwert. Ich bin absolut ratlos und wäre für Hilfe sehr dankbar. Im log steht dazu folgendes:

20160924-093355: MSG --- RBK0052I: Partition(en) werden auf /dev/sdb erstellt
20160924-093356: MSG !!! RBK0004W: Zweite Partition wird angepasst von 15456010240 bytes (14.39 GiB) zu 7881097216 bytes (7.33 GiB)
sfdisk: Checking that no-one is using this disk right now ...
sfdisk: OK
sfdisk: Warning: partition 1 does not end at a cylinder boundary
sfdisk: Warning: partition 2 does not start at a cylinder boundary
sfdisk: Warning: partition 2 does not end at a cylinder boundary
sfdisk: Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
sfdisk: end of partition 2 has impossible value for cylinders: 1021 (should be in 0-1020)
sfdisk: I don't like these partitions - nothing changed.
(If you really want this, use the --force option.)
20160924-093356: MSG ??? RBK0015E: Ein Fehler ist aufgetreten mit Rückgabewert=112
20160924-093356: MSG ??? RBK0077E: Restore fehlerhaft bendet: Create partition error (RC 112)

Vielen Dank im Voraus
Helmut
Zitieren
0 #111 framp 2016-08-10 19:48
Moin Creamware,

Du musst schon eine SD Karte mit der Bootpartition haben die schon bootfähig ist und damit booten, denn Du machst ja einen quasi manuellen Restore und benutzt dazu nicht raspiBackup.
Du musst aber darauf achten, dass deine restorte Rootpartition auf derselben Partitionsnumme r restored wird und dann unter demselben DeviceNamen gemountet wird wie es in der /boot/cmdline.t xt der SD Karte steht. Ansonsten wird nichts booten. Sofern Du nur ein Gerät am Raspi angeschlossen hast und nur eine Partition auf dem gerät hast ist das im Normalfall /dev/sda1. Ansonsten musst Du noch vor dem Booten die /boot/cmdline.t xt entsprechend anpassen.

Cu framp
Zitieren
0 #110 Creamware 2016-08-10 19:26
Hallo,
Werde das heute mal testen. Muss ich dann den so erzeugten Stick noch irgendwie bootfähig machen ?
Denke nein,oder ? Weil er ja nur die Rootpartition enthält,oder ?
Zitieren
0 #109 framp 2016-08-09 22:47
Moin Creamware,

Du hast Dein Problem ziemlich ungenau beschrieben. Sonst haette ich Dir gleich richtig antworten koennen ;-)

Das kein Backup gefunden wird liegt vermutlich daran, dass Du nicht das gesamte Backupverzeichn is sondern nur das tar kopiert hast. Wenn Du test2 in raspi2-tar-back up-20160806-203 002 umbenennst und /mnt/backup/raspi2-tar-back up-20160806-203 002 angibst wird es vermutlich funktionieren.

Da Du aber keine zweite SD Karte hast bringt Dir das nichts.

Ja, Du kannst das tar irgendwo entpacken (Muss nur genug Platz sein) und dann hast Du Deine Rootverzeichnis se. Nur /boot wird leer sein. Die Daten stecken in der .img Datei. Aber so wie ich Dich verstehe brauchst Du die auch nicht.

Es war eine der wichtigsten Bedingung von mir an raspiBackup, dass man an die Backupdaten auch mit normalen Linuxbefehlen herankommt :-)

Cu framp
Zitieren
0 #108 Creamware 2016-08-09 22:06
Hallo Frame,
Habe das schon alles genau gelesen. Meine Problem ist aber folgendes. Wenn ich das Backup Verzecihnis angebe mit Deiner Syntax, dann kommt immer die Meldung das kein Bsckup gefunden wurde. Des Weiteren habe ich keinen Kartenleser, und auch keine zweite SD Card. Ich möchte nur den Backup der Root Partition, den ich auch als tar file habe, auf den /dev/Sdb Stick zurücksichern.
Oder könnte ich das far file einfach auf den Ersatzstick entpacken ??
Zitieren
0 #107 framp 2016-08-09 21:39
Moin Creamware,

eigentlich habe ich sehr deutlich geschrieben dass man nach dem ersten Backup den restore testen soll :-*

Anyhow: Auf der Seite zum Restore habe ich in einem Beispiel beschrieben wie der Befehl aussehen muss wenn man ein restore mit externer Rootpartition vornehmen will.
https://www.linux-tips-and-tricks.de/de/raspibackup-restore

Dort steht z.B. Zitat:
sudo raspiBackup.sh -d /dev/sdf -R /dev/sda1 /remote/raspifi x/disks/backup/ rsync/raspberry pi/raspberrypi- rsync-backup-20 141230-213032/
Jetzt ist natürlich die Frage wie man rausbekommt welche Laufwerksbezeic hnungen was ist. bei mir sieht es z.B. so aus bei 'sudo fdisk -l'

root@raspberrypi:~# fdisk -l

Disk /dev/mmcblk0: 8011 MB, 8011120640 bytes
...
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/mmcblk0p2 122880 15646719 7761920 83 Linux

Disk /dev/sda: 15.5 GB, 15548284928 bytes
...
Device Boot Start End Blocks Id System
/dev/sda1 8192 122879 57344 c W95 FAT32 (LBA)
/dev/sda2 122880 30367743 15122432 83 Linux

Disk /dev/sdb: 300.1 GB, 300069052416 bytes
256 heads, 63 sectors/track, 36338 cylinders, total 586072368 sectors
...
Device Boot Start End Blocks Id System
/dev/sdb1 1 586072367 293036183+ ee GPT

Dort siehst Du and der Größe dass /deb/sdb1 die externe Rootpartition ist (300GB) und /dev/sda die externe SD Karte ist (15.5 GB). Die interne SD Karte ist mmcblk0. Also lautet bei mir der Befehl

sudo raspiBackup.sh -d /dev/sda -R /dev/sdb1 /remote/raspifi x/disks/backup/ rsync/raspberry pi/raspberrypi- rsync-backup-20 141230-213032/

wobei mein rsync Backup auf /raspifix/disks /backup/rsync/r aspberrypi/rasp berrypi-rsync-b ackup-20141230- 213032/ liegt.

Du musst Deine Werte anpassen und dann wird es funktionieren. Ausserdem wirst Du vor dem Restore noch einmal die Ausgabe von fdisk -l sehen von den Geräten und kannst noch einmal checken ob alles OK ist.

Cu framp
Zitieren
0 #106 Creamware 2016-08-09 16:55
Hallo,
habe jetzt den ersten Notfall, wo ich ein Backup restoren müsste, und komme nicht weiter. Boote im Prinzip von SD, und root liegt auf einem Stick. Backup war tar, und liegt in einem Verzeichnis, das ich nun auf einem anderen Raspberry gemounted habe. habe den Stick auf den ich restoren will angesteckt, und der lautet auf dev/sdb. Wie kann ich nun das tar file auf den Stick restoren ??
Möchte ja auf diesem Raspberry nicht die SD Card überschreiben !
Folgender Befehl wurde versucht:
raspiBackup.sh -R /dev/sdb /mnt/backup/test2/raspi2-tar-backup-20160806-203002.tar

Danke...
Zitieren