Raspberry Pi: Image Backup erstellen

20 Aug
20. August 2013

Wenn man seinen Raspberry Pi einmal fertig konfiguriert hat und alles läuft wie es soll, hat man die Arbeit geschafft und das Vergnügen beginnt. Jedoch findet man immer wieder neue Anwendungen, die man einmal auf seinem Raspberry Pi ausprobieren möchte und ehe man sich versieht, hat man das Betriebssystem mal wieder zerschossen oder zugemüllt. Folglich ist eine Neuinstallation des Betriebssystems auf der Tagesordnung und damit Verbunden ist natürlich auch das erneute Einrichten aller gewünschten Programme.

Es gibt jedoch die Möglichkeit den Stand des Betriebssystems als Image festzuhalten und es später, wie bei einer Neuinstallation, wieder zu installieren. Wie dies unter Windows, Linux und Mac OS X funktioniert, erkläre ich im Folgenden.

Windows

Step 1

Zunächst müssen wir das Tool Win32 Disk Imager in der Binary-Version herunterladen und entpacken.

Step 2

Im Win32 Disk Imager müssen wir nun im Feld Image File den Pfad samt Dateinamen angegeben, wo das Image gespeichert werden soll, das Laufwerk auf dem die SD-Karte eingebunden ist wählen und auf Read klicken.

Linux / Mac OS X

Step 1

Unter Linux und Mac OS X ist es recht einfach mittels dd ein Image seiner SD-Karte zu erstellen. Dabei muss man /dev/sdx durch den Pfad zur SD-Karte ersetzen (bei Mac OS X für gewöhnlich /dev/diskx) und /path/images.img durch den Pfad samt Dateinamen wo das Image gespeichert werden soll.

dd if=/dev/sdx of=/path/images.img bs=1M

Fertig! Nun ist der aktuelle Stand des Betriebssystems gesichert, man kann unbesorgt neue Programme ausprobieren und im Bedarfsfall einfach das gesicherte Image wieder einspielen.

Dieses Tutorial wurde am 08. März 2015 überarbeitet.

Dir hat der Artikel gefallen?
Teile ihn mit deinen Freunden!
52 Antworten
  1. Thomas says:

    So können Fehler beim Befehl sehr produktiv sein… 😉

    (Siehe vertauschte Parameter in einem anderen Beitrag ^^)

    Antworten
    • Jan Karres says:

      Ich denke zu willst mich auf einen if/of Drehen aufmerksam machen. Diesmal muss ich dich enttäuschen, denn diesmal stimmt die Reihenfolge 😀

      Antworten
  2. Alexander says:

    Backups sind immer wichtig und richtig. Ich bin momentan noch auf der Suche auf einer vernünftigen Backupmöglichkeit für meinen RPi. Dieser Läuft momentan 24/7 als kleiner Homeserver. Für ein Backup möchte ich ihn aber ungern runterfahren, die SD-Karte entnehmen in meinen Mac packen, Backup machen und wieder zurück in meinen RPi schieben um diesen dann wieder neu davon zu starten.
    Ich habe einen 32GB-USB-Stick an meinem Raspberry, auf dem ich gerne ein Backup meiner Systempartition in regelmäßigen Abständen automatisiert ziehen möchte. Bisher habe ich allerdings nur eine Notlösung mittels .tar-Backup gefunden. Der Grund, der gegen dd in meinem Falle spricht, ist, dass dd auch den „leeren“ Speicherplatz mitkopiert und Backups daher sehr groß werden.
    Kennst du zufällig eine geeignete Backuplösung für mich? Für das regelmäßige Backup würde ich dann einfach einen Cronjob einrichten.

    Antworten
    • luke says:

      hallo,
      du kannst ein dd-Backup mittels gzip direkt packen also z.B. so:


      dd if=/dev/sdx bs=1M | gzip -c > /pfad/zum/image.img

      und zurückspielen:


      gunzip -c /pfad/zum/image.img | dd of=/dev/sdx bs=1M

      …wenn dd fertig ist, am besten noch ein „sudo sync“ hinten dran um sicherzugehen das alle Daten geschrieben wurden.

      Antworten
      • b-13 says:

        @Luke: Hinweis für Linux-Anfänger:

        Wiederherstellen:
        gzip -dc /home/your_username/image.gz | dd bs=4M of=/dev/sdb

        –> wenn man vor dem gzip sudo verwendet, dann klappt es nicht. Das sudo gehört vor das dd (Ansonsten Fehler: Keine Berechtigung)
        –>Also gunzip -c /pfad/zum/image.img | sudo dd of=/dev/sdx bs=1M

        Beim Erstellen das sudo dann ebenfalls vor das dd

        Ich wusste beispielsweise nicht, dass das sudo zwingen vor das dd gestellt werden muss, erst im Nachhinein erscheint es logisch.

        Alternativ
        sudo -i

        Antworten
        • Jan Karres says:

          Muss es nicht zwingend. Aber in diesem Fall hast du Recht, dass es benötigt wird. Am besten mal in der Man-Page nachschlagen was sudo genau macht 😉

          Antworten
  3. Oliver says:

    In dem Tutorial zum Benutzen eines USB-Sticks oder eine Festplatte anstelle der SD-Karte auf raspberrypi.org benutzt der Autor „rsync -axv / /gewünschtermountpoint“ zum umziehen der Daten. Kann man das nicht auch zur Sicherung nehmen? Müsste man nur nen kleines Script im Sinne von „lege Ordner mit Datum von heute an und dann rsync dahin“.

    Antworten
  4. Rodney says:

    Und wie spielt man das Image wieder zurück, sodass das System wieder auf Backup stand ist? Danke.

    Antworten
    • Jan Karres says:

      Genau so wie man jedes andere Image auch installierte. Siehe Raspbian installieren Step 2.

      Antworten
      • TeHa says:

        Bei mir gab es das Problem, dass lediglich eine „Datei“ erstellt wurde und kein Image. Beim Versuch das Backup wieder aufzuspielen, weigerte sich win32diskimager, da es die image Datei nicht als solche erkannte. Nachdem ich aber dem Dateinamen ein „.img“ angehängt hatte lief alles problemlos.

        Antworten
        • Jan Karres says:

          Gut, eine Benennung mit „richtiger“ Endung war für mich selbstverständlich, wodurch ich das gar nicht erst erwähnt habe…

          Antworten
  5. Bob says:

    Hey, ich wollte eine größere Speicherkarte verwenden, hatte aber keine Lust alles neu zu konfigurieren. (vorher 8GB jetzt 32GB)
    Also dachte ich mir: Mit Win32 Imager ein Image von der alten SD erzeugen und auf die neue draufladen. Das hat auch alles einwandfrei funktioniert aber mit der neuen Karte bootet mein RPi gar nicht mehr. Die alte funktioniert weiterhin perfekt.
    Mache ich etwas falsch?

    Antworten
    • Jan Karres says:

      Ist die neue SD-Karte denn mit dem Raspberry Pi verträglich? Kannst du testen indem du dir z.B. das offizielle Raspbian Image draufspielst und mal schaust ob das einwandfrei funktioniert. Wenn nicht kannst du relativ sicher sein, dass diese SD-Karte am Raspberry Pi nicht funktioniert.

      Antworten
      • Jamacoe says:

        ich habe es genau so gemacht wie Bob, und bei mir bootet der Pi auch prompt von der neuen Karte. Allerdings ist der freie Platz auf der neuen Karte noch nicht allokiert und die /root ist immer noch voll. raspi-config verweigert die Expansion der Partition, da es sich um eine Noobs handelt. Mit Gparted auf einem anderen Rechner sehe ich den freien, nicht allokierten Platz, kann ihn aber nicht /root zuweisen. Was nun? Ich habe fast alles aus diesem Blog installiert und will nicht alles nochmal neu aufsetzen

        Antworten
        • Jan Karres says:

          Mit den Strukturen von Noobs kenne ich mich leider wenig aus, sodass ich dir da nicht weiterhelfen kann. Versuchs doch mal in einem der Raspi Foren.

          Antworten
  6. Ralf says:

    Diskimager und alle anderen Tool haben bei mir nie funktiniert: Grund: Die SD Karte enthält zwei Partitionen bei mir eine FAT16 (laut ODIN) und eine EXT4. Jedes Image-Programm das ich bisher ausprobiert habe „sieht“ nur die FAT16 Parttion aber nicht die EXT4. D.h. ich bekomme auch nur die 56MB FAT Parttion als Image.
    Gibts da eine Lösung?
    Gruss Ralf

    Antworten
    • Jan Karres says:

      Zumindest im Falle von Win32 Disk Imager weiß ich, dass es zwar nur die gemountete Partition anzeigt, jedoch ein Backup der ganzen SD-Karte mit allen Partitionen schreibt.

      Antworten
      • Ralf says:

        Ich habe jetzt inzwischen herausgefunden woran es lag: Es ist das in meinem Dell eingebaute SD-Karten Laufwerk (oder der dazugehörige Treiber): Auch Windows zeigt in der Datenträgerverwaltung nur eine! Partition an, eben die FAT Partition.
        Als ich heute spasseshalber die SD Karte in den HP Laptop eines Kollegen gelegt hatte und dort die Datenträgerverwaltung geöffnet habe, habe ich plötzlich die zwei Partitionen gesehen. Und auf diesem Rechner konnte ich dann auch (ich hab ODIN genommen) die komplette Karte abziehen.
        Keine Ahnung warum der SD-Karten-Leser im Dell die zweite Partition nicht anzeigt.
        Gruss Ralf

        Antworten
      • Frosch says:

        magst du nicht oben dazu schreiben, dass alle Partitionen, auch die für Windows unbekannte Linnuxpartition von Disk Imager mitgespeichert wird?
        Das kostet echt Nerven, wenn man nur die Alibi-Fat Partition auswählen kann – logisch ist das schließlich nicht.
        …und ehrlich gesagt hab ichs erst danach anhand der Imagegröße geglaubt 😉

        Antworten
        • Herbert says:

          Ja, genau da hab ich auch meine Verständnisschwierigkeiten gehabt. Sehe eine Partition mit ~55MB und hab dann ein Image mit 8GB.
          Allerdings frage ich mich gerade, ob man es nicht etwas speicherfereundlicher sichern kann. Das Original-Image hat 3,2GB. Wenn man es auf ein 8GB Karte installiert, dann hat man ein Backup-Image mit 8GB 🙁

          Antworten
  7. Tim says:

    Wenn ich eine 8GB SD verwende und auf 32GB wechsel möchte, reicht es Image zu ziehen, auf die 32er einzuspielen und in der Config zu sagen, PI möge bitte ganzen Speicher verwenden?

    Antworten
    • Jan Karres says:

      Völlig korrekt.

      Antworten
      • Tim says:

        Leider nicht

        1. sudo diskutil unmount /dev/disk3s1
        2. sudo dd if=/Users/ich/Documents/raspberry/owncloud.img of=/dev/disk3s1 bs=1m

        Ergebnis: Raspberry bootet nicht, Image kann am Mac nicht gelesen werden… da fehlt doch noch ein Schritt oder? Ich habs mit 2 SD getestet, einmal 8 –> 16 gb und einmal 8 –> 32 gb

        Antworten
      • Hannes Koch says:

        Das überspielen und booten hat einwandfrei geklappt, jedoch kann ich das Filesystem nicht über Option 1 im raspi-config expandieren lassen: │ There was an error running option 1 Expand Filesystem │

        Habe das Image mit rdisk gezogen und via rpi sd card builder auf die neue SD-Karte gezogen.

        Antworten
      • Frosch says:

        Bei mir klappt das ganz wunderbar.
        Ich hab allerdings das Image mit dem Windowstool gezogen, dann auf die neue, größere Karte gespielt.
        Nun Karte zurück in den Raspi, booten, ‚Raspi-config‘, Punkt 1 (Extend Filesystem o.ä).
        Da kommt dann kurz eine Meldung mit „erfolgreich“, nach dem beenden des Config-Tools stehen aber einige Warnhinweise in der Shell.
        Ende vom Lied ist einfach, dass man neu starten muss, damit die Karte mit der neuen Größe erkannt wird.
        Danach funktioniert alles einwandfrei.

        Danke 🙂

        Antworten
  8. Sven says:

    Cool, das klappt mal ohne HickHack. Danke dir

    Antworten
  9. Tim says:

    meine erfahrung mit dd unter os x 10.9: funktioniert nie, hab 3 sd getestete mit image zu beschreiben und sie haben die pi nie gebootet…

    Antworten
  10. Padde Müller says:

    Hallo Jan,

    wie muss ich vorgehen, wenn ich das Backup über Netzwerk auf meinen PC sichern möchte?
    Also nicht extra die SD-Karte aus dem Pi entnehmen?

    Mit dem Befehl „dd“ aber was als Output Path (of)?
    Theoretisch braucht der Pi ja die Berechtigung (Username, Passwort), um überhaupt auf den PC schreiben zu dürfen, oder?

    Besten Dank im Voraus 🙂

    Antworten
    • Stefan Hoffmann says:

      Hallo, bin zwar auch noch Linux Neuling, aber ich habe es über mounten einer freigabe realisiert mit folgenen befehl:
      mount -t cifs -o user=benutzername,password=passwort //192.168.xx.xx/rpi_backup /mnt/rpi_backup/

      Sichern dann halt mit folgendem befehl:
      sudo dd if=/dev/sda2 of=/mnt/rpi.img bs=1M

      Musst halt nur die für dich richtige Partition ansprechen, bei mir ist es sda2 weil ih es auf nem Stick laufen lasse…

      vg, stefanh

      Antworten
      • Padde Müller says:

        Hallo Stefan,

        wunderbar, mit deiner Anleitung (leicht modifiziert) erreiche ich nun das erwünscht Ergebnis.

        Gibt es noch eine Möglichkeit, dieses Backup regelmäßig automatisch durchzuführen (Cronjob?)?

        Und dass der Dateiname des Backups automatisch dem Datum und der Uhrzeit entspricht?
        Also z.B. „2014-05-05-11:00:00.img“?

        Danke & Gruß
        Padde

        Antworten
        • Stefan Hoffmann says:

          Hallo Padde,

          bestimmt ist der Weg über Cronjob der Richtige, habe ich aber auch noch nicht viel Erfahrung mit und kann Dir leider keine Hilfestellung geben. Bezgl. des Dateinames gibt es mit Sicherheit Variable, die du dort mit einbauen könntest. Als Beispiel habe ich hierzu gerade Folgendes ergooglet:
          dd if=/dev/hda8 | gzip >/media/extern/hda8_2006-07.14.img.gz
          Mit Variable:
          dd if=/dev/hda8 | gzip >/media/extern/hda8_$(date „+%Y-%m.%d“).img.gz

          VG, Stefan

          Antworten
          • Padde Müller says:

            Hallo Stefan,

            danke für die Info.
            Aber warum geben wir das Backup nun mit gzip aus, und nicht mehr direkt als img-Datei?

            Danke im Voraus.

            PS: Falls jemand bezüglich Cronjobs helfen kann, bitte melden! Danke 🙂

          • Stefan Hoffmann says:

            Das war doch nur ein Beispiel, es geht doch um die Variable, egal von welcher dateiendung wir sprechen

        • Jan Karres says:

          Thema Cronjob: Eigentlich ganz einfach. Mittels crontab -e kann man eine solche eintragen. Vor den eigentlichen Befehl muss man definieren wann der Cronjob aufgerufen wird. Wenn man die Syntax, wie in der Crontab Datei beschrienen, nicht selbst basteln möchte, kann man auf zahlreiche Crontab Generatoren zurückgreifen. Die Zeile mit Ausführzeit Definition und Befehl in eine neue Zeile der Cronab Datei einfügen – speichern nicht vergessen 😉 Das wars!

          Antworten
    • Jan Karres says:

      Idee von stefan finde ich schon gar nicht schlecht. Jedoch solltet ihr bedenken, dass die Maschine läuft und sich folglich dauernd Daten ändern können, was zu Fehlern während des Wegkopierens führen kann. Partiell kann man das System gut mit rsync sichern, jedoch eben nicht vollständig.

      Antworten
      • Stefan Hoffmann says:

        Hallo Jan, da stimme ich Dir zu. Vorsichtshalber halte ich meine Dienste für Datenbank und Webserver vorher an. rsync ist auch eine gute Idee, als Neuling bin ich aber vorsichtig und führe vor Versionsupdates meines Seafile’s lieber ein Komplett Backup durch. Würde deiner Meinung nach dafür auch ein rsync Job reichen (Webserver und Datenbank müsste ich dann doch auch mitsichern?)?
        VG, Stefan

        Antworten
        • Jan Karres says:

          Wenn du vor dem Update einer Software dessen Datenbestand sichern möchtest würde ich den betreffenden Ordner einfach händisch mittels cp kopieren.

          Antworten
  11. Martin says:

    Auf meinem Mac muss es „dd if=/dev/diskX of=/path/images.img bs=1m“ heissen. Mit grossem M bei bs=… kommt ’ne Fehlermeldung…

    Antworten
  12. Alex says:

    Danke für die gute Anleitung zur Erstellung eines Images.
    Ich habe erfolgreich ein Image erstellt mit Win32 Disk Imager.
    Dabei fiel mir auf, dass das Image 29,7 GB groß ist (also so groß wie meine 32 GB microSD Karte).
    Wird mit dieser Methode jeder Block gesichert oder?
    Mein Pi ist eigentlich frisch installiert, das heißt, da ist noch nicht viel drauf.
    Gibt es eine Möglichkeit ein Backup zu machen ohne den ganzen leeren Speicherplatz mitzusichern?

    Antworten
  13. Chris says:

    Nicht Steinigen für die Frage aber, gibt es eigentlich für den Mac auch ein Tool, wie bei Windows der DiskImager?

    Antworten
  14. bernd says:

    Hallo Leute,

    für Anfänger auf Linux gibt es auch ein schönes Gui für DD

    https://launchpad.net/gdiskdump

    sogar mit automatischer verkleinerung des Images auf die wahre größe und gzip komprimiereung.

    Antworten
  15. Ete says:

    Hallo Jan,

    wenn man dd unter MAC verwendet, dann muss die Option bs=1m heissen. Ist Case sensitive. DAs Image ist damit aber leider viel zu klein. Ich werde es unter Windows probieren.

    Antworten

Trackbacks & Pingbacks

  1. […] Original URL: https://jankarres.de/2013/08/raspberry-pi-image-backup-erstellen/ […]

Antworten

Kommentar verfassen

JanKarres.de © 2007-2016