Raspberry Pi Backup der SD-Karte im Betrieb

Wenn ein Raspberry Pi läuft und macht, was er soll will man ihn am liebsten gar nicht mehr abschalten. Oder der Raspberry Pi ist an einer unzugänglichen Stelle eingebaut.
Außerdem nervt es wenn man den Raspberry Pi erst herunterfahren muss, die SD-Karte ausgebaut werden, in den Rechner gesteckt und gesichert werden und das ganze wieder zurück.
Es wäre doch viel einfacher ein Raspberry Pi Backup der SD-Karte im laufenden Betrieb zu machen, als die SD-Karte des Raspberry Pi für ein Backup auszubauen.

Das Dateisystem im Betrieb auszulesen ist eigentlich keine gute Idee, weil das OS im Betrieb die ganze Zeit Lese- und Schreibzugriffe durchführt. Eigentlich muss man ein Dateisystem vor dem Sichern abmelden (unmount) und aushängen. Daher ist die Lösung nicht optimal aber immer noch besser wie kein Backup.
Um ein Dateisystem bzw. ein Blockdevice auszulesen gibt es das unter Linux das Kommando dd.

dd (disk dump) dient zum bit-genauen Kopieren von Festplatten, Partitionen oder Dateien. “Bit-genaues” Kopieren bedeutet, dass der Datenträger Bit-für-Bit bzw. Byte-für-Byte ausgelesen und beschrieben wird, unabhängig von dessen Inhalt und Belegung. dd ignoriert Dateisysteme und funktioniert mit allen blockorientierten Datenträgern, also auch mit Daten-CDs/DVDs.
dd wird ohne weitere Rückfragen bzw. Sicherheitsabfragen ausgeführt. Bei unachtsamen Aufrufen könnten evtl. vorhandene Daten überschrieben werden!

https://wiki.ubuntuusers.de/dd/

dd ist eigentlich auf jedem Linux vorinstalliert und gehört wir tar (tape archive) zum “Grundwortschatz. Falls es nicht auf dem Rechner ist:

sudo apt-get install coreutils 

Dis Syntax ist simpel:

dd if=Quelle of=Ziel <Optionen> 

Quelle und Ziel können jedes Blockdevice oder jedes Dateisystem sein. (es kann auch von kaputten Dateisystemen gelesen werden, um zB Datenträger zu retten)
Die Optionen sind auch simpel, ich verwende hier BlockSize, was die Größe des am Stück zu lesenden Blocks angibt bs=1M und status=progress, damit der Fortschritt der Aktion angezeigt wird. Ansonsten macht dd keine Ausgabe.

Das Backup von einem entfernten Rechner starten

Der nächste Schritt ist das Backup von einem entfernten Rechner auf dem Pi zu starten und dort abzulegen. Man kann natürlich auch einen USB-Stick an den Pi stecken und das Backup direkt auf den Stick machen.
Dafür verwende ich eine Spielart des SSH-Kommandos welches auf dem entfernten Rechner ein gzip-Kommando startet, welches dann in eine Pipe schreibt, die dann auf dem Zielrechner in eine Datei schreibt. (Was ein nerdiger Satz – egal google einfach nach den Begriffen).

Die fertige Kommandozeile sieht wie folgt aus:

# simple Version
ssh [email protected] "sudo dd if=/dev/mmcblk0 bs=1M status=progress | gzip -" | dd of=./$(date +%Y%m%d_%H%M%S)\pi-volkszaehler.gz
# Version mit pa
myPi=192.168.4.1
# oder 
myPi=pi-rechnername.local
ssh [email protected]$myPi "sudo dd if=/dev/mmcblk0 bs=1M status=progress | gzip -" | dd of=./$(date +%Y-%m-%d_%H-%M-%S)\$myPi.gz

Beispiel:

Raspberry Pi Backup der SD-Karte von remote Host starten.
Backup fertig

Vorsicht:

Es gibt natürlich aber einige Dinge zu beachten, wenn man dieses Live-Backup macht. Wie oben bereits erwähnt ist diese Lösung nicht die beste Idee, aber besser auf jeden Fall besser als kein Backup.

  • Vorsicht bei Raspberry die Datenbanken verwenden (Datenbanken schreiben zum Teil in eigene Dateien, die wie Dateisysteme verwendet werden und immer geöffnet sind, was zu inkonsistenten Datenbanken führen kann)
  • Dauer (je nachdem wie stark der Pi während dem Backup beansprucht wird (CPU und FS) und der Größe der SD-Karte dauert das Backup um die 9 Stunden bei einer 64GB SD-Karte

Update

Um Speicherplatz zu sparen ist es besser bzip2 zu verwenden. Bei einem Backup einer 32MB SD-Karte ist die gepackte Datei ca. 300MB kleiner. Klingt nach nicht viel, aber das summiert sich recht schnell bei 5 PIs mit je 10 Backups auf der Platte.

#! /bin/bash

ssh [email protected] "sudo dd if=/dev/mmcblk0 bs=1M status=progress | bzip2 -9 -" | dd of=./$(date +%Yi-%m-%d\_%H-%M-%S)\pi-volkszaehler.bz2
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.