Raspberry Pi Backup mit Linux

Bei Projekten mit einem Raspberry Pi ist es oft wünschenswert, Backups der SD-Karte zu erstellen.
Bei Recherchen im Internet lassen sich viele unterschiedliche Beschreibungen finden. Die einfachste Möglichkeit ist ein stumpfes Kopieren des kompletten Inhalts mittels dd. Diese Variante hat jedoch den Nachteil, dass das Image genau so groß ist wie die SD-Karte, selbst wenn diese nur zum Teil belegt ist. Es lassen sich sogar Anleitungen finden, die ein Kopieren mittels dd im laufenden Betrieb direkt auf dem Raspberry Pi beschreiben. Ich rate jedoch von solchen Backups ab, da dann die Integrität des Dateisystems nicht gewährleistet werden kann.
Ich möchte an dieser Stelle meinen Favouriten erläutern, welcher mittels eines Kartenlesers und den Linux Kommandozeilentools dd und fsarchiver ein Image erstellt. Falls ihr die Schritte nachspielt, müsst ihr natürlich mein Homeverzeichnis durch euer Zielverzeichnis austauchen.

Backup erstellen

Wir werden uns nun zunächst ansehen, wie die aktuelle Partitionstabelle aussieht:

sudo fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 31.9 GB, 31914983424 bytes
 4 heads, 16 sectors/track, 973968 cylinders, total 62333952 sectors
 Units = sectors of 1 * 512 = 512 bytes
 Sector size (logical/physical): 512 bytes / 512 bytes
 I/O size (minimum/optimal): 512 bytes / 512 bytes
 Disk identifier: 0xb1c554f2

Device Boot Start End Blocks Id System
 /dev/mmcblk0p1 8192 137215 64512 c W95 FAT32 (LBA)
 /dev/mmcblk0p2 137216 62333951 31098368 83 Linux

Wir sehen, dass sich zwei Partitionen auf der SD-Karte befinden. Die erste ist mit dem Dateisystem FAT32 formatiert und die zweite mit einem Linux Dateisystem. Da fsarchiver leider keine FAT32 Unterstützung bietet, werden wir die erste Partition zusammen mit der Partitionstabelle sichern. Dies geschieht über den folgenden Befehl:

 sudo dd if=/dev/mmcblk0 bs=521 count=137216 | gzip -c > /home/michael/Rpi_P0_P1.dd.gz

Dabei setzen wir für die Option „count“ den Wert ein, welcher den Start der zweiten Partition kennzeichnet. Außerdem wird hier über die Pipe das Image direkt gezippt, um Speicherplatz zu sparen.
Im nächsten Schritt werden wir nun noch die zweite Partition sichern, wobei wir fsarchiver benutzen. Dieses Programm hat den Vorteil, dass es das Dateisystem kennt und somit nur belegte Sektoren sichert. Darüber hinaus wird standardmäßig eine Komprimierung genutzt.

 sudo fsarchiver savefs /home/michael/Rpi_P2 /dev/mmcblk0p2

Backup wiederherstellen

Zunächst werden wir die Partitionstabelle und die Boot Partition wiederherstellen mit dd. Dazu genügt folgendes Kommando (Achtung: Alle derzeitigen Daten auf der SD-Karte gehen verloren!):

 gunzip -c /home/michael/Rpi_P0_P1.dd.gz | sudo dd bs=2M of=/dev/mmcblk0; sync

Anschließend stellen wir noch mit fsarchiver die zweite Partition wieder her:

 sudo fsarchiver restfs /home/michael/Rpi_P2.fsa id=0,dest=/dev/mmcblk0p2

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.