Backup einer Raspberry Pi Speicherkarte via Mac (OSX) Terminal App erstellen

In diesem Tutorial zeige ich euch, wir ihr eine Sicherung eures Raspberry Pi Systems macht. Die Sicherung wird auf eurem Mac gespeichert und auch gleich komprimiert um Platz zu sparen.
Wie ihr eure SD-Karte bei einem Fehler oder Crash wiederherstellt wird auch beschrieben.

Voraussetzungen:

SD-Card Backup mit Terminal erstellen

  1. zu klonende SD-Karte in den Card-Reader stecken
  2. Terminal App öffnen (Programme->Dienstprogramme-Terminal) und mit folgendem Befehl den Namen/Ort der Speicherkarte finden
    diskutil list

    Es erscheint eine Liste mit allen Speichermedien. Die zu klonende SD-Karte erkennt ihr an ihrer Speichergröße unter Size oder ihrem Namen. In diesem Beispiel heißt sie /dev/disk1.

    sd_card_clone-diskutil_list

  3. Der folgendem Befehl erstellt ein Image von der SD-Karte, komprimiert es und speichert es auf eurem Desktop. disk1 müsst ihr durch den Namen eurer SD-Karte ersetzen.
    sudo dd bs=4m if=/dev/disk1 | gzip > ~/Desktop/rpi-image.gz
    

    Falls ihr nach einem Passwort gefragt werdet, gebt das Passwort für euren Mac ein (nicht wundern während der Eingabe werden keine Zeichen angezeigt), dann mit ENTER bestätigen.

  4. Der Kopiervorgang dauert eine ganze Weile (30min–2Std). Sobald der Vorgang abgeschlossen ist erhält man eine Meldung (während des Kopieren erhält man kein Rückmeldung).

    Tipp

    Mit ctrl+t könnt ihr anzeigen lassen wie viel bytes schon auf die SD-Karte geschrieben wurden.

Wiederherstellen der SD-Karte via Terminal

  1. Die zu wiederherstellende SD-Karte in den Card-Reader stecken.
  2. Name der SD-Karte mit folgendem Befehl herausfinden.
    diskutil list
    
  3. SD-Karte Unmounten mit (disk1 mit dem Namen eurer SD-Karte ersetzen)
    diskutil umountDisk /dev/disk1
    

    sd_card_clone-unmount

  4. Jetzt formatieren wir die SD-Karte im FAT16 Format. (Achtung es werden alle Daten auf diesem Speichermedium gelöscht. Unbedingt darauf achten das ihr das richtige Speichermedium wählt)
    sudo newfs_msdos -F 16 /dev/disk1
    

    Ihr müßt wieder das Passwort eures Mac eingeben und mit [ENTER] bestätigen.

    Option -F 16 gibt an das die Karte im FAT 16 Format formatiert werden soll.

  5. Um das zuvor erstellte Backup auf die SD-Karte zu übertragen verwendet ihr folgenden Befehl.
    sudo gzip -dc ~/Desktop/rpi-image.gz | sudo dd bs=4m of=/dev/disk1
    

    Tipp

    Falls eure Backup .gz sich an einem anderen Speicherort befindet, schreib den Befehl bis sudo dd if= und dann zieht ihr die .dmg Datei per Drag and Drop auf das Terminal Fenster. Der Pfad zur Datei wird automatisch eingefügt und ihr schreibt den Rest des Befehls weiter of=/dev/disk1.

Gib deine Stimme ab!

79 Likes
Upvote Downvote

Total votes: 72

Upvotes: 72

Upvotes percentage: 100.000000%

Downvotes: 0

Downvotes percentage: 0.000000%

Geschrieben von Ben

#Blogger #Designer #RaspeberryFan #Self-Employed #Developer #Javascript
TwitterGithubThingiverse

17 Kommentare

Kommentar verfassen
  1. hallo,
    der Tip unter Punkt 5 zur Rücksicherung ist meines Erachtens falsch beschrieben.
    Es gibt es in dem Befehlt zum Schreiben auf die Karte kein if=
    sudo gzip -dc ~/Desktop/rpi-image.gz | sudo dd bs=4m of=/dev/disk

    Vermutlich ist damit gemeint das zu erstellende Image an einen anderen Speicherort abzulegen.
    Trotzdem wäre der Tip nicht unwichtig, da die erstellten Images häufig auf externe Festplatte aufgelagert werden und von dort zurückgeschrieben werden.

    Grüße Ufi

  2. Zu beachten ist hier auch noch das die neue Speicherkarte mit dem Backup mindesten genauso groß wie die alte sein muss damit es funktioniert, andernfalls wird der Raspberry pi nicht booten.
    Das image passt ja normalerweise von der Größe immer.

    Ich habe da ein paar Tage herumgewerkelt mit diversen Tools. Besonders tückisch ist hier das auf den SD Karten ja immer die volle Speicherkapazität drauf steht. In Wahrheit weicht diese nach oben oder unten ab.

    Die Karte mit der Sicherung war bei mir 31,6 GB groß , das image 9,6 GB , die nächsten Karten hatten alle 31,1 oder 31,3 GB Kapazität. Sicherung und zurückspielen ging mit obiger Anleitung auf die neuen Karten ohne Probleme und ohne Fehlermeldung. Trotzdem der hat der Pi nicht gebootet, bis ich dann schlussendlich bei dem Tool balena etcher gelandet bin.

    Das Tool selbst kann nur images auf die Karten schreiben, aber hat mir schlussendlich den Hinweis gegeben, das es das image nicht schreiben kann weil die neue Karte zu klein ist.
    Hatte dann noch eine Karte mit 32,6GB herum liegen mit der es dann funktioniert hat.

    Der Fehler das der Pi nicht booten kann hängt mit den Partiontionstabellen zusammen.

  3. Moin
    Wieso muss ich die SD-Karte neun formatieren, wenn ich das Backup zurückspiele, das ich ja mit dd am Dateisystem vorbei gemacht habe? Wenn ich das Backup zurückspiele, dann ja auch das ganze Dateisystem, weil dd eine Ebene darunter ansetzt.

  4. Erstmal toller Beitrag leider funktioniert das Ganze bei mir nicht ;-(
    Ich habe das Backupn schon per ApplePi-Baker und über die Konsole mit dd probiert. Lieder funktioniert nichts davon wie in diversen Foren beschrieben.

    Zur Info, wenn ich meine neue 16GB SD nehme und LibreELEC dort frisch installiere klappt das alles sehr wohl.
    Wenn ich aber versuche von meiner aktuelle 8GB SD mit LibreELEC ein Image zu erstellen und auf eine neue 16GB Karte lade funktioniert es nicht.
    Die Version von LibreELEC habe ich von OpenELEC aus geupdated. Es sind 2 Partitionen auf der SD, kann es daran liegen?

    Wäre nett wenn wir jemand helfen könnte.
    Ich habe mit viel Mühe Hyperion und TvHeadend eingerichtet und würde das und all die anderen Einstellungen ungern wiederholen müssen.

    Danke für eure Hilfe!

    • Hallo Jörg,
      das liegt einmal daran das die SD-Karten unterschiedliche Größen haben.
      Aus dem Kopf weiß ich jetzt nicht genau ob das mit dd geht.
      Schau dir mal rpi-clone an. Sieht auf den ersten Blick etwas kompliziert aus, aber damit lassen sich auch Kopien auf SD-Karten/USB-Sticks mit unterschiedlichen Größen machen.

  5. Hi,

    ich habe auf einer 8GB Karte LibreELEC installiert. Das Ganze ist auf 2 Partitionen verteilt, glaube das liegt an NOOBS?!
    Im Diskutil sieht das dann wie folgt aus:
    0: FDisk_partition_scheme *7.9 GB disk2
    1: Windows_FAT_32 NO NAME 268.4 MB disk2s1
    2: Linux 1.7 GB disk2s2

    Wenn ich jetzt mit dd von disk2 ein backup mache und es danach auf eine 16GB Karte spiele wird beim hochfahren des Raspberry immer ein Fehler erkannt (Bootsektor nicht erkannt…) danach geht LibreElec in den Reparatur-Modus und setzt das System neu auf.

    Was mache ich hier falsch, ich hab alle Befehle 1 zu 1 kopiert.
    Danke für eure Hilfe!

  6. Hallo Ben,
    Auch hier danke für die Anleitung, leider für mich nicht anwendbar, da nicht MAC Fan.
    Aber zu dem Thema einige Fragen. Ich habe auf meinem PI eine für mich größere Haussteuerung, die immer weiter aktualisiert wird. Unter Anderem gibt es einen Verbrauchs und Kostenzähler der Mittels HourCounter realisiert wurde. Jetzt zu meiner Frage:
    Datensicherungen mache ich bisher immer mit dem win32 Diskimager. Dazu beende ich Fhem und fahre den PI runter. Nach der Datensicherung die umgekehrte Reihenfolge. Nun beginnt der HourCounter aber neu zu zählen und die alten Werte sind nicht mehr vorhanden. Über Sicherungen gibt es viele Beiträge im Netz, aber nicht was ich suche. Es soll jedenTag zu einer bestimmten Zeit eine Komplettsicherung erfolgen, wobei die Älteren gelöscht werden sollen und nur die Sicherungen der letzten drei Tage verfügbar bleiben. Ich habe gelesen, dass Fhem vor so einer Sicherung beendet werden soll. Das ist aber Aus Zeitgründen nicht immer möglich. Hast Du eine Idee wie für meine Bedürfnisse eine Lösung realisiert werden kann?
    Gruß Michael

  7. hallo marco, die Rücksicherung läuft bei mir ewig. Wie erkenne ich im Terminal wan die Rücksicherung beendet ist?
    mit Ctrl +T erscheint:


    11993088 bytes transferred in 21.096689 secs (568482 bytes/sec)
    load: 2.09 cmd: dd 7059 uninterruptible 0.00u 0.13s
    load: 2.09 cmd: dd 7059 uninterruptible 0.00u 0.13s
    0+191 records in
    0+190 records out
    12451840 bytes transferred in 22.905758 secs (543612 bytes/sec)
    load: 2.16 cmd: dd 7059 uninterruptible 0.00u 0.14s
    0+199 records in
    0+198 records out
    12976128 bytes transferred in 24.809499 secs (523031 bytes/sec)
    load: 2.15 cmd: dd 7059 uninterruptible 0.00u 0.67s
    0+893 records in
    0+892 records out
    58458112 bytes transferred in 227.486268 secs (256974 bytes/sec)

    danke gruss martin

    • Hallo Martin,
      Jedes mal wenn du Ctrl +T drückst wird dir der aktuelle Status angezeigt. Also wenn sie etwas ändert, ist der Schreibvorgang noch am laufen.
      Je größer die Speicherkarte, desto länger dauert es.

    • Ich empfehle dringend bei der Rücksicherung das Device /dev/rdiskX zu verwenden, da da die Daten dann erheblich schneller geschrieben werden. Das “X” entsprechend dem Tutorial mit einer “1” ersetzen bzw. mit der von euch ermittelten Device Nummer.

  8. Funktioniert das auch, wenn die neue SD-Karte ein kleineres Volumen hat?
    Die SD-Karte-1 hat 64Gb und wurde zum testen verwendet, jetzt sollte alles auf die Richtige SD-Karte-2 mit 8Gb geladen werden. Vom Speicher geht es sich locker aus.

  9. ein frage, ich habe noobs drauf und somit 2 Partitionen

    /dev/disk3
    #: TYPE NAME SIZE IDENTIFIER
    0: FDisk_partition_scheme *15.5 GB disk3
    1: Windows_FAT_16 RECOVERY 1.2 GB disk3s1
    2: Linux 33.6 MB disk3s5
    3: Windows_FAT_32 boot 66.1 MB disk3s6
    4: Linux 14.2 GB disk3s7

    wenn ich vor dem zurückkopieren die sd formatiere, werden dann auch beide Partitionen zurückkopiert?

    gruß marco

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.