Raspberry Pi Backup

Ein regelmäßiges Raspberry Pi Backup schützt vor Datenverlust. Über den Raspberry Pi wird in zahlreichen Foren und Blogs berichtet. Ein Thema das ich dabei persönlich oft vermisse ist das Backup. Grundsätzlich sollte man sich bei jedem System, egal ob nun Linux, Mac oder Windows immer eine intelligente Backupstrategie überlegen. Vor allem dann, wenn man mit Daten arbeitet, deren Verlust tragisch ist. Seien es nun Daten die einen reellen Wert (Kundendaten, Rechnungsdaten, …) haben oder nur sentimentalen Wert (zum Beispiel die Familienfotos).

Raspberry Pi Backup

Der Raspberry Pi muss nicht unbedingt lebensnotwendige Daten besitzen, welche nicht durch eine Neuinstallation ersetzt werden können. Es kann aber sein, dass man den Raspberry Pi als Webserver oder Datenbankserver nutzt und dort Programmdaten und live Daten speichert. Diese sollte man regelmäßig sichern. Grundsätzlich unterscheide ich hier 2 Backup Lösungen:

  • manuelles Backup der SD Karte als Image
  • automatisches Backup im Betrieb

manuelles Backup

Das einfachste Backup ist beim Raspberry Pi die komplette Sicherung aller Daten auf der SD Karte. Dafür müssen wir jedoch den laufenden Raspberry Pi herunterfahren, die SD Karte herausnehmen und am PC oder Laptop anschließen. Die Sicherung unterscheidet sich hier je nach Betriebssystem auf der Sicherungsmaschine.

Linux / Mac OSX

bei Unix Betriebssystemen ist das ganze recht einfach. Folgende Schritte sind in einer Konsole/Terminal auszuführen:

alternativ auf Linux Systemen:

Hier muss man feststellen unter welchen Pfad die SD Karte gemounted wurde (üblicherweise /dev/disk1s1 oder ähnlich).

Die SD Karte muss entfernt werden. Das ist der Unmount Befehlt von MacOSX bei Linux reicht umount als Befehl.

Mit diesem Befehl kopiert man den gesamten Inhalt Bitweise in eine Image Datei. Hier muss man den korrekten mount Ordner der SD Karte angeben und ein Verzeichnis am lokalen Rechner in der das Image gespeichert wird. Achtung: das Image kann so groß werden wie der angegebene Speicher auf der SD Karte! Die Sicherung wird mit dem selben Befehl zurückgespielt. Man muss nur die Pfade von if und of tauschen.

Windows

Unter Windows kann man die SD Karte mit dem Tool win32Diskimager.exe sichern. Einfach in der Image File Zeile einen Speicherort nach Wahl für das Backup angeben und danach ‚Read‘ klicken. Nach kurzer Zeit hat man eine voll Sicherung als Image.

Raspberry Pi Backup

automatisches Backup

Das automatische Backup kann mit einem Skript direkt am Raspberry Pi ausgeführt werden. Es ist notwendig, dass ein genügend großer Speicher verfügbar ist, auf dem das Image gesichert werden soll. Das kann zum einen ein USB Stick oder eine externe Festplatte sein oder besser ein Netzlaufwerk.
Zuerst sollte man herausfinden, wo die SD Karte mit dem Betriebssystem am Raspberry Pi gemounted ist. Das geht am einfachsten mit:

Normalerweise ist /dev/mmcblk0p2 die SD Karte. Diese kann man auch im laufenden Betrieb mit dem dd Befehl sichern:

Wobei der Output Pfad (of) der USB Stick, die externe Festplatte oder ein Netzlaufwerk ist. Diesen Befehl kann man auch sehr gut über ein Skript laufen lassen, dass täglich ausgeführt wird.

Im Internet habe ich dafür ein tolles Skript gefunden, dass so eigentlich direkt genutzt werden kann:

Ich hoffe ihr könnt so mit täglichen oder wöchentlichen Raspberry Pi Backups einem Datenverlust vorbeugen.

(Visited 9.297 times, 5 visits today)

Das könnte auch interessant sein...

17 Antworten

  1. Hi, gibt es auch eine Möglichkeit für das manuelle Backup ohne das sich die Datei auf
    die volle SD-Kartengröße aufbläht? Ich möchte gerne eigene Images erstellen.

  2. Franz sagt:

    Danke für das Script, es liest sich interessant. Leider zerschoss es mir die SD-Karte, ich habe meinen Pi komplett neu aufgesetzt. Gut, dass ich noch eine andere Backup-Strategie habe, die mir einiges gerettet hat – u.a. meine Owncloud-Datenbank.

  3. Duc sagt:

    Kann sein, dass ich mich irre, sollte man nicht besser ein Backup von der ganzen SD-Karte machen, also /dev/mmcblk0, um die Partionen etc alles so beizuhehalten?

  4. Julian sagt:

    Hallo,
    Tolles Tut um ein Backup des Pi zu machen. Ich hab bisher immer den Pi abgedreht und die SD Card am Win7 PC mittels Win32 DiskImager eingelesen.

    Das Ergebnis am Ende des Scripts ist dann eine .img Datei mit dem selben Inhalt wie wenn ich das mit de Win32 DiskImager mache?

    Dh. ich kann dann, sollte der Pi crashen, einfach ne SD Card nehmen und das .img File aufspielen?

    Danke für deine Antwort.

    • Hallo!
      probiere es einfach mit einer 2. SD Karte aus! Dann weißt du es genau und bist auf der sicheren Seite. Die SD Karte muss nur mindestens so groß sein wie für das *.img Platz benötigt wird. Bin mir aber sicher man könnte im Notfall das Image auch mit einem externen Programm am PC verkleinern.

  5. DavidW sagt:

    Hi Werner!

    wie wäre die Zeilen (wo hdd steht) zu modifizieren, um alles direkt vom RPi auf meinen externen pw-geschutzten NAS zu schreiben statt auf irgendeinen lokalen hdd-partition?

    # Setting up directories
    SUBDIR=raspberrypi_backups
    DIR=/hdd/$SUBDIR

    Any ideas??

    Ziel ist, alles als cron.weekly einzurichten?

  6. jadikle sagt:

    Der Ansatz, überhaupt ein Backup zu machen und die Methode anderen in einem Blog als Anregung verfügbar machen finde ich sehr gut. Trotzdem habe ich Anmerkungen zum Komplettbackup/Image der SD-Karte:
    1. Am Mac muss es heißen „dd if=/dev/disk1s1 of= bs=1m“, also ein kleines „m“ am Ende, sonst gibt’s eine „illegal numeric value“ Fehlermeldung. Bei Linux/Unix ist es mir gerade nicht geläufig.
    2. Mit dem oben im dd Kommando angegebenen if-Device (disk1s1) wird nur die Boot-Partition gesichert. Will man die gesamte Karte sichern, muss es heißen „dd if=/dev/disk1 of=…“.
    3. Man kann den Vorgang deutlich beschleunigen, wenn man das RAW DEVICE ausliest: „dd if=/dev/rdisk1 of=…“. Die benötigte Zeit wird auf ca. 25% reduziert.
    4. Ein Image mit dd hat immer die Größe des gelesenen Device, es ist ein Bit-für-Bit Abbild des Device, unabhängig ob /dev/disk oder /dev/rdisk verwendet wird.
    5. Man kann sicherlich von einem laufenden System aus mit dd das Image z. B. auf einen gemounteten USB-Stick schreiben. Bei geforderter 7*24h Verfügbarkeit würde ich dies auch so tun, mit einem Image von einem sauber runter gefahrenen System würde ich aber besser schlafen.

    • danke für das ausführliche Kommentar!

      • jadikle sagt:

        Wem das Imagefile zu groß is, kann es während der Erstellung komprimieren. Der Platzbedarf sinkt dabei auf ca. 15%. Die Kommandozeile sieht dann auf dem Mac so aus:
        sudo dd bs=1m if=/dev/rdisk1 | gzip > [filename].gz

        Restore auf eine neue FAT-formatierte, gleich große (oder größere) SD-Karte:
        gzip -dc [filename].gz | dd of=/dev/rdisk2

  7. Peter sagt:

    Hallo,
    bin ein Anfänger und betreibe den Raspi für Heizungssteuerung und PV-Kontrolle. Nun möchte ich regelmässig meine SD bzw. Log-Dateien auf meinem externen Netzwerkspeicher mit der IP 192.168.x.x speichern.
    Habe mit dem Kommando
    dd if=/dev/disk1s1 of=192.168.x.x/backup/backup.img bs=1M
    versucht und erhalte den Fehler “ Verzeichnis oder Datei nicht vorhanden „.
    Was muß ich denn bei der Netzwerkangabe eingeben ?
    Gruß Peter

    • Hi, du kannst keinen externen Pfad mit der IP Adresse angeben. Du musst das Verzeichnis vom externen Gerät, also den Ordner backup dort freigeben und am Raspberry Pi mit dem mount Befehl als lokales Verzeichnis mounten, zB nach /mnt/backup. Dann kannst du im dd Befehl of=/mnt/backup angeben und die Datei wird am externen Gerät erstellt. Als Anfänger mal nach mount googlen oder die Dokumentation mit man mount lesen.

  8. Thomas Burkhart sagt:

    Guten Morgen,
    ich habe in diesem Zusammenhang die Frage, unter welchen Umständen eine SD Karte in einem Raspberry PI „gefährdet“ wird.
    Ich musste inzwischen schon 2mal Raspian + FHEm neue aufsetzen.

    Ist es
    a) ein Stromausfall am Raspberry?
    b) das Abziehen der SD-Karte

    Wie kann ich die SD-Karte richtig entfernen?

    besten Dank

    Thomas

    • Naja, eine SD Karte kann nur begrenzt oft beschrieben werden, d.h. je mehr Daten ständig gespeichert und wieder gelöscht werden (zB log Dateien) desto kürzer ist die Lebensdauer. Generell sind SD Kartem aber sehr robust.

  9. Daniel sagt:

    Hallo,
    vielen Dank für die von dir geteilten Infos für ein automatisches Backup. Ich habe jedoch Probleme wenn ich den Script im crontab ausführen möchte. Ich poste mal den output hier rein 🙂

    root@rpi:/var/log# cat backupScript.log
    Starting RaspberryPI backup process!
    /home/pi/autoScript.sh: 11: /home/pi/autoScript.sh: [[: not found
    Package ‚pv‘ is NOT installed.
    Installing package ‚pv‘. Please wait…
    Paketlisten werden gelesen…
    Abhängigkeitsbaum wird aufgebaut….
    Statusinformationen werden eingelesen….
    pv ist schon die neueste Version.
    0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
    Stopping some services before backup.
    /home/pi/autoScript.sh: 38: /home/pi/autoScript.sh: service: not found
    /home/pi/autoScript.sh: 39: /home/pi/autoScript.sh: service: not found
    /home/pi/autoScript.sh: 40: /home/pi/autoScript.sh: service: not found
    Backing up SD card to USB HDD.
    This will take some time depending on your SD card size and read performance. Please wait…
    /home/pi/autoScript.sh: 1: /home/pi/autoScript.sh: blockdev: not found
    pv: Diese Option benötigt ein Argument — »s«
    `pv –help‘ zeigt weitere Informationen an.
    0+0 Datensätze ein
    0+0 Datensätze aus
    0 Bytes (0 B) kopiert, 0,00392915 s, 0,0 kB/s
    Start the stopped services again.
    /home/pi/autoScript.sh: 53: /home/pi/autoScript.sh: service: not found
    /home/pi/autoScript.sh: 54: /home/pi/autoScript.sh: service: not found
    /home/pi/autoScript.sh: 55: /home/pi/autoScript.sh: service: not found
    Successful backup, previous backup files will be deleted.
    Backup is being tarred. Please wait…
    tar: Entferne führende „/“ von Elementnamen
    RaspberryPI backup process completed! FILE: /mnt/rpiBackup//backup_20150416_122003.img.tar.gz
    root@rpi:/var/log# nano /home/pi/autoScript.sh
    root@rpi:/var/log# dpkg -s pv | grep Status
    Status: install ok installed

    Manuell läuft der Script sauber durch!

    Vielen Dank
    Daniel

Schreibe einen Kommentar

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