Backup der SD Karte im Raspberry Pi via Netzwerk

  • Sagt mal bitte, gibt es ein fertiges Tool/Script oder Anleitung die mir meinen Raspberry Pi mit Homebridge (also die SD Card) z.B. nachts automatisch im Netzwerk (via ssh) auf einen anderen Rechner/NAS sichert?


    Danke und Gruß,

    Dirk

  • Du könntest die komplette SD Card über das Netzwerk in ein Image kopieren. Ich hab das mit einem Mac und einem Raspi getestet und vom Raspi aus ein Backup zum Mac gesendet. Danach habe ich das Backup auf eine andere SD Card geschrieben und davon gebootet.


    Aufbau:

    Rechner, der gesichert werden soll: Raspi

    Rechner auf den gesichert werden soll: Mac. Falls du keinen Mac hast, kannst du das Folgende ganz leicht an eine Linux-Maschine anpassen. Wie es mit Windows funktioniert: keine Ahnung. Ich helfe gern bei etwaigen Fehlermeldungen, die du erhalten könntest.


    Verwendete Programme auf beiden Rechnern: dd, nc, bzip2



    Schritte auf dem Mac:

    1) Auf dem Mac eine Shell öffnen (Terminal)

    2) Eingeben: nc -l 22000 | bzip2 -d | dd bs=16M of=/Users/sschuste/Images/Raspberry\ Pi/raspi.bak.img


    (ennzeh minus ell zweiundzwanzigtausend Pipe bzipzwei minus deh Pipe dede beh ess …… Achtung: das ist ein kleines L vor 22000 und ein gerader Strich vor und hinter dem bzip2. Man sagt Pipe zu dem Strich. Naja, eigentlich sagt man nix zu dem Strich, außer vielleicht "wo auf der verdammten Tatstatur bist du?", man sagt halt Pipe, wenn man über ihn spricht. Falls du das bereits wusstest, dann betrachte diese Erklärung bitte als gegenstandslos, aber es wird doch hoffentlich irgendwen geben, der das noch nicht wusste.)


    und das bedeutet:

    nc -l 22000 : starte netcat als Service, der auf Port 22000 lauschen soll. Der Port ist dir überlassen und sollte zwischen 1025 und 65535 liegen

    | bzip2 -d : alles was bei netcat reinsegelt, nach bzip2 schicken und dekomprimieren. Spoiler: da segelt später dein Backup rein.

    | dd bs=16M of= : alles was bzip2 ausspuckt, nach dd schicken und in eine Datei schreiben (of heißt output file)

    /Users/sschuste/Images/Raspi/raspi.bak.img : Die Datei raspi.bak.img nimmt das Backup auf. Der Pfad dahin muss von dir angepasst werden. Der Dateiname muss nicht raspi.bak.img lauten.


    Dann die Returntaste drücken und sich freuen, wenn jetzt keine weitere Meldung erscheint.


    Schritte auf dem Raspi:

    1) Auf dem Raspi einloggen als dein Lieblingsuser (pi, dirk, homebridge, you name it)

    2) Eingeben: sudo dd bs=16M if=/dev/mmcblk0 | bzip2 -c | nc 192.168.1.203 22000


    (Auch hier ist das eine Pipe und kein kleines L vor und hinter dem bzip2!)


    und das bedeutet:

    sudo: führe den folgenden Befehl mit root-Berechtigung aus

    dd bs=16M if=/dev/mmcblk0 : mache einen disk dump in 16 Megabyte großen Blöcken und benutze als disk das Device /dev/mmcblk0 (if heißt input file. Unbedingt siebenmal nachprüfen, dass da wirklich if steht und nicht etwa of). Der Parameter bs=lädt ein, andere Blockgrößen zu versuchen und damit das Backup zu beschleunigen. Ich glaub ja nicht so dran.

    | bzip2 -c : sende den Output von dd an bzip2 zum Komprimieren

    | nc 192.168.1.203 22000 : sende den Output von bzip2 via netcat an die IP-Adresse 192.168.1.203 (das ist der Mac) auf Port 22000. Natürlich änderst du hier zumindest die IP-Adresse und setzt die deines Zielrechners ein.


    Returntaste drücken und sich freuen, wenn jetzt keine weitere Meldung erscheint.


    Dann passiert erstmal eine ganze Weile scheinbar gar nichts. In deinen Terminals blinken möglicherweise enervierend die Cursor in der Hoffnung, man möge sie beachten. Das ist zwar sehr langweilig, aber es gibt auch keinen Grund, sich das anzusehen. Sorry Cursors.


    Du darfst jetzt auf keinen Fall die Terminalfenster schließen!


    Bei mir hat dieser katatonische Zustand gute 80 Minuten gedauert. In dieser Zeit schickt der Raspi ein komprimiertes Abbild seiner SD Card an den Mac, der es auspackt und abspeichert. Vielleicht hat dein Partner auch gerade Lust, ausgepackt zu werden, und tatsächlich ist jetzt ein guter Zeitpunkt dafür. Ich war beim Rewe und hab mir die Treuepunkte lieber da abgeholt.


    Deine Daten rauschen derweil durch die Progrämmchen und dann über das Netz von einem auf den anderen Rechner, und dort nochmal durch die Programme, etwa so:

    [Raspi] - /dev/mmcblk0 -> dd -> bzip2 -> nc -> LAN/WLAN -> nc -> bzip2 -> dd -> raspi.bak.img - [Mac]


    Irgendwann passieren dann zwei Dinge gleichzeitig:


    Auf dem Raspi:

    nc beendet sich mit einer Ausgabe wie:


    949+1 records in

    949+1 records out

    15931539456 bytes (16 GB) copied, 5280.61 s, 3.0 MB/s


    Auf dem Mac:

    nc beendet sich mit einer Ausgabe wie:


    0+935064 records in

    0+935064 records out

    15931539456 bytes (16 GB) copied, 5295,53 s, 3,0 MB/s


    Und fertig ist das Backup.


    Auf dieser Seite kannst du nachlesen, wie man ein Restore auf die SD Card macht:

    https://computers.tutsplus.com…d-line-in-os-x--mac-59911


    Vorteil dieser Vorgehensweise: man kann das Backup von der Shell aus machen und per cronjob automatisieren. Du könntest es via homebridge-cmd sogar per Siri starten ("Hey Siri, mama Backup" - "Ich habe das hier über Bäcker im Internet gefunden"). Weiterer Vorteil: alles wird gesichert. Du setzt damit den Raspi komplett in den gesicherten Zustand zurück. Nachteil: es ist echt lahmarschig, aber wen interessiert das mitten in der Nacht? Und es wird unverschlüsselt übertragen.


    Stefan

  • Herzlichen Dank an det und sschuste! :thumbup: Gerade an Stefan für seinen sehr ausführlichen und vor allem sehr sehr kurzweiligen und erfrischenden Schreibstil! 8) Ich werde beides mal ausprobieren. ncläuft sogar schon. ;) Auf meinem Mac zu Testen verlangt es allerdings ein kleines m beim bsParameter sonst hagelt es im Terminal ein bs: illegal numeric value .


    Gruß, Dirk

  • Inzwischen mache ich das Backup nicht mehr so. Der Nachteil ist, dass es eine Menge Platz auf meinem Mac braucht. Und außerdem kann ich inzwischen eine Homebridge blind installieren. Da geht es dann schneller, die Bridge neu zu bauen als da mit dem lahmen Backup herumzumachen.


    Aber es gibt trotzdem ein wichtiges Backup, nämlich config.json. Wenn die Konfiguration von Homebridge weg ist, nee, darüber möchte ich lieber nicht nachdenken.


    Stefan

  • Den Raspi neu aufsetzen ist kein Ding. Die Homebridge hab ich inzwischen schon dreimal installiert. Mit deiner Anleitung ja auch kein Problem. Die config.json habe ich in unterschiedlichen Variationen gesichert. Kann eigentlich ganz entspannt sein?