Backup des laufenden Systems anlegen

  • Hallo Leute,


    ich beschreibe euch hier, wie ihr mit Hilfe eines Bash-Scriptes von Phil Drummond, das ich bei Adafruit gefunden, ins Deutsche übersetzt und verbessert habe, euer laufendes System auf eine andere SD-Card klonen könnt. Ihr braucht dazu:


    * einen USB-Cardreader für SD- oder Micro-SD-Cards
    * eine freie SD-Card, die groß genug ist, alle Daten aufzunehmen
    * das Script, das ihr hier runterladen könnt
    * einen gebooteten, laufenden Pi


    Die Methode ist sehr einfach und erzeugt eine SD-Card, die ihr als Backup an einem sicheren Ort aufbewahren könnt und die euch im Falle einer Beschädigung des Filesystems eurer aktuellen SD-Card erspart, die ganze Installationsprozedur ein weiteres Mal durchzuführen.


    Die Methode ist aber auch hervorragend geeignet, um den belegten Speicherplatz eures Systems zu reduzieren. Wenn ihr z. B. eine 16 GB SD-Card eingerichtet habt, auf der noch jede Menge Platz ist, könnt ihr den Inhalt mit dieser Methode z. B. auf eine 4 GB SD-Card übertragen, von der ihr dann z. B. ein Image erstellen und weitergeben könnt. Somit ist es auch möglich, eine einmal eingerichtete Karte auf eine kleinere zu klonen.


    Die Einrichtungsschritte, um das Backup machen zu können:
    1. Script auf den Computer runter laden.


    2. Verbindung über PuTTY (Windows) oder Cyberduck (Macintosh) zum Pi aufbauen. SSH oder VNC über eine Terminalverbindung ist natürlich auch möglich.
    alternativ: Script am Computer über den Cardreader auf die SD-Card übertragen.


    3. Script in das Homeverzeichnis des Pi übertragen.
    alternativ: Von der in den USB-Cardreader eingesteckten SD-Card am Pi in das Homeverzeichnis kopieren.


    4. Script ausführbar machen:

    Code
    chmod +x rpi-clone.sh


    5. Wenn die SD-Card über den USB-Cardreader mit dem Pi verbunden ist, ist sie normalerweise als /dev/sda gemountet. Um festzustellen, wie die SD-Card am Pi bezeichnet ist, führe folgenden Befehl aus:

    Code
    sudo fdisk -l


    Die SD-Card wird als /dev/sda bzw. /dev/sdb angezeigt, wenn noch ein anderer Cardreader mit dem Pi verbunden ist. Ist die SD-Card bereits partitioniert, werden die Partitionen der als /dev/sda1 und /dev/sda2 bzw. /dev/sdb1 und /dev/sdb2 angezeigt. /dev/mmcblk0p1 und /dev/mmcblk0p2 sind die Partitionen im Kartenslot des Pi selbst.


    6. Ist die SD-Card lokalisiert, wird der folgende Befehl ausgeführt:

    Code
    sudo ./rpi-clone.sh sda -f


    Der erste Parameter (sda) gibt das Ziellaufwerk an, der zweite (-f) weist das Script an, das Laufwerk zu formatieren, bevor das System geklont wird. Wird der -f Parameter weggelassen, wird ein inkrementelles Backup angelegt, d. h. es werden nur die Änderungen seit dem letzten Backup geschrieben. Während des Prozesses kannst du noch ein Label für die Backup-SD angeben. Das Klonen dauert eine Zeit, also Geduld!


    Durch den Befehl ohne Parameterübergabe kann übrigens die Hilfe aufgerufen werden.

    Code
    sudo ./rpi-clone.sh


    Nach dem Klonen werden mit einem Tastendruck die frisch angelegten Partitionen dismountet. Wenn vorher noch Änderungen durchgeführt werden sollen, weil z. B. die SD-Card für einen anderen Pi vorgesehen ist und z. B. die Netzwerkeinstellungen geändert werden sollen, kann das über eine zweite Terminalsitzung gemacht werden.


    Ich hoffe, ich konnte dazu beitragen, dass es für euch etwas bequemer wird, regelmäßig Backups anzulegen, Images zum Weitergeben zu erstellen bzw. das System so wie es ist auf einer kleineren Karte unterzubringen, wenn ihr euch im Speicherbedarf verschätzt habt und die größere SD-Card noch ganz gut für ein umfangreicheres Projekt brauchen könnt.


    Übrigens: Es ist eine ganz gute Idee, die Funktionsfähigkeit der neuen SD-Card zu überprüfen, bevor die alte gelöscht wird!!!


    Gruß
    Hans


    Edit: Hier nun auch als Attachment: rpi-clone.sh

    Edited once, last by HaSch ().

  • 6. Ist die SD-Card lokalisiert, wird der folgende Befehl ausgeführt:

    Code
    sudo ./rpi-clone.sh sda -f


    Der erste Parameter (sda) gibt das Ziellaufwerk an, der zweite (-f) weist das Script an, das Laufwerk zu formatieren, bevor das System geklont wird. Wird der -f Parameter weggelassen, wird ein inkrementelles Backup angelegt, d. h. es werden nur die Änderungen seit dem letzten Backup geschrieben. Während des Prozesses kannst du noch ein Label für die Backup-SD angeben. Das Klonen dauert eine Zeit, also Geduld!


    Hallo vielen Dank für die Anleitung die ich schon lange gesucht habe. Allerdings bekomme ich bei Ausführung des Befehls eine Meldung:


    Quote


    [font="Menlo"]sudo ./rpi-clone.sh sde -f[/font]
    [font="Menlo"]/dev/mmcblk0p2 ist aktuell gemountet auf /mnt.[/font]
    [font="Menlo"]Unmount /mnt vor Ausführung von rpi-clone.sh.[/font]


    Was muss ich machen? Sorry, habe leider nur begrenzt Ahnung :helpnew:


    Trotzdem Danke und Grüße, Uli


  • Bist du sicher, dass du 'sudo ./rpi-clone.sh sde -f' eingeben wolltest? 'sde' bedeutet, dass du 5 Kartenleser oder einen 5fach Kartenleser in deinem Pi stecken hast.

  • Bist du sicher, dass du 'sudo ./rpi-clone.sh sde -f' eingeben wolltest? 'sde' bedeutet, dass du 5 Kartenleser oder einen 5fach Kartenleser in deinem Pi stecken hast.


    5fach Kartenleser ist korrekt :blush:
    [hr]
    So sieht es aus:


    Code
    sudo blkid
    /dev/loop0: TYPE="squashfs"
    /dev/mmcblk0p1: SEC_TYPE="msdos" UUID="0245-883E" TYPE="vfat"
    /dev/mmcblk0p2: LABEL="berryboot" UUID="402efaa4-5af4-4dd4-b3fe-a6752aca0774" TYPE="ext4"
    /dev/sda1: LABEL="berryboot" UUID="6ab92ec8-88ff-459f-8035-d833d9b617df" TYPE="ext4"
    /dev/sdc1: UUID="4736a56a-fce5-4aa7-aed7-4fabe4a99224" TYPE="ext4"
    /dev/sde1: UUID="9016-4EF8" TYPE="vfat"

    Edited once, last by uli007 ().

  • hmm... von der SD Karte im RPI... mehr kann ich dazu nicht sagen... wie erkenne ich das?
    [hr]
    wie kann ich mal testweise /dev/mmcblk0p2 unmounten?

    Edited once, last by uli007 ().


  • hmm... von der SD Karte im RPI... mehr kann ich dazu nicht sagen... wie erkenne ich das?
    [hr]
    wie kann ich mal testweise /dev/mmcblk0p2 unmounten?


    sudo umount /mnt


    Ich ändere das gerade mal im Script, so dass das deutlicher wird. Kannste in ca. 10 Min. drüber verfügen.

  • muss gleich mal was essen gehen... ich melde mich so in 2 h wenn ichs ausprobiert habe...

    Edited once, last by uli007 ().

  • Nettes Script zum manuellen Clonen. Wer automatisch zeitsparend Backupversionen per cron erstellen lassen will kann die Details dazu hier nachlesen :)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

  • sudo umount /mnt


    Ich ändere das gerade mal im Script, so dass das deutlicher wird. Kannste in ca. 10 Min. drüber verfügen.


    So sieht's jetzt aus:


    Code
    sudo ./rpi-clone-2.sh sda -f
    /dev/mmcblk0p2 ist aktuell gemountet auf /mnt
    sudo umount /mnt vor Ausführung von rpi-clone-2.sh


    hilft das weiter? Hm... hat sich nix geändert...

    Edited once, last by uli007 ().

  • So sieht's jetzt aus:


    Code
    sudo ./rpi-clone-2.sh sda -f
    /dev/mmcblk0p2 ist aktuell gemountet auf /mnt
    sudo umount /mnt vor Ausführung von rpi-clone-2.sh


    hilft das weiter? Hm... hat sich nix geändert...


    Jetzt hast du aber sda als Parameter übergeben…?
    Was du nun machen musst, steht doch da: sudo umount /mnt, danach noch mal das script aufrufen!

  • Jetzt hast du aber sda als Parameter übergeben…?
    Was du nun machen musst, steht doch da: sudo umount /mnt, danach noch mal das script aufrufen!


    sorry, copy fehler das mit dem sda..


    so sieht es jetzt aus:


    Code
    sudo umount /mnt
    umount: /mnt: not mounted
    sudo ./rpi-clone-2.sh sde -f
    /dev/mmcblk0p2 ist aktuell gemountet auf /mnt.
    sudo umount /mnt vor Ausführung von rpi-clone-2.sh.


    hat sich nix geändert

    Edited once, last by uli007 ().

  • Du hast aber schon gelesen, was du jetzt machen musst? Noch mal wiederhole ich das nicht und es steht ja auch in dem Output!


  • Du hast aber schon gelesen, was du jetzt machen musst? Noch mal wiederhole ich das nicht und es steht ja auch in dem Output!


    meinst Du "sudo umount /mnt vor Ausführung von rpi-clone-2.sh" ?


    Habe ich doch gemacht... und die Meldung war: "umount: /mnt: not mounted"

    Edited once, last by uli007 ().

  • HaSch: Habe das Script mal bei mir auf meiner SpielPi laufen lassen. Dabei habe ich zwei Dinge festgestellt:


    1) Ich habe meine 8GB SD Karte mit 2.4GB Belegung versucht auf eine 2GB Karte zu clonen. Das Clonen startete ... und dann seh ich dass dabei auch noch mein remoter nfs Server gemounted auf /backup mitgesichert werden sollte :-/. Der Parameter -x sollte noch zum rsync dazu abgegeben werden damit das nicht passiert.


    2) Anschliessend lief der Clone wieder an - jetzt aber ohne meinen nfs Space ... obwohl nur 2GB zur Verfügung stehen und 2.4GB benötigt werden. Ein Test ob die Ziel SD Karte groß genug ist wäre ganz sinnvoll im Script ;)


    Danach habe ich eine 4GB Karte genommen und alles lief perfekt durch. Und jetzt kommt der Knaller: Damit ich das testen konnte habe ich das Raspbian auf der 8GB SD Karte mit shutdown beendet, den 4GB Clone reingesteckt und gebootet. Der Clone lief ohne Probleme. Dann habe ich wieder die 8GB Karte reingesteckt .... und dann bootete nix mehr :(. Das mehrmalige Clonen der 8GB SD Karte war wohl zu viel für sie :wallbash:. Nun läuft meine SpielPi auf der geclonten 4GB Karte und ich habe eine 8GB SD Kartenleiche - RIP

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

    Edited once, last by framp ().


  • Hallo framp,


    tu dir keinen Zwang an, du kannst die Features gerne einbauen. Das Script dann aber wieder zurück an mich, dann kann ich es in den Links aus Post 1 ersetzen.


    Zu der Sache mit deiner SD-Card: Das tut mir echt leid, aber ich glaube nicht, dass das Script dafür verantwortlich ist. Wahrscheinlich wäre sie ohnehin bald gestorben...


    Schönen Abend noch
    Hans


  • ...Zu der Sache mit deiner SD-Card: Das tut mir echt leid, aber ich glaube nicht, dass das Script dafür verantwortlich ist. Wahrscheinlich wäre sie ohnehin bald gestorben...


    Nope, falls es so rübergekommen ist. Ich wollte damit sagen dass ich quasi zum letztmöglichen Zeitpunkt es gerade noch geschafft habe mit dem CloneScript einen aktuellen Backup zu bekommen der läuft. Mein Backupup läuft bei meiner Spielwiese nur 1 mal pro Woche. Da ist Dein Script noch nicht drauf;)

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

  • Hey,


    ist es auch möglich, dass Backup auf ein NAS zu spielen statt auf eine SD-Karte?


    Viele Grüße


    Tobi


  • ...ist es auch möglich, dass Backup auf ein NAS zu spielen statt auf eine SD-Karte? ...


    In dieser Anleitung wird es beschrieben wie es geht. Ist allerdings ein anderes Tutorial mit anderem Schwerpunkt und ein anderes Script.

    "Really, I'm not out to destroy Microsoft. That will just be a completely unintentional side effect."

    Linus Benedict Torvalds, 28.9.2003


    Hast Du die Woche schon Deine Raspberry gesichert :fies: Bei mir tut das raspiBackup automatisch :shy:

    Edited once, last by framp ().

  • Ich binn ja auch so ein "Allesausprobierer" ....


    Dabei ist mir folgendes aufgefallen:


    Natürlich findet es keine fat16 Partition.


    Spannender (als/ob 16 oder 32) ist für mich die Frage obs später auf fat16 bootet...
    [hr]
    Nachtrag:



    Es hat also eine fat32 angelegt.
    Alles tuts.


    Einen herzlichen Dank an den edlen Spender.