Festplatten klonen mit dd

Wer eine Festplatte klonen oder ein Image davon erstellen will, der hat die Qual der Wahl wenn es um die Programmauswahl geht.Aus aktuellem Anlass musste ich die Festplatte eines SBS 2003 klonen, da die Spiegelung aufgrund eines Fehlers des RAID-Controllers unbrauchbar wurde. 

Natürlich gibt es für diesen Zweck eine Reihe kommerzieller Programme (Ghost, Acronis usw.), die aber meiner Meinung nach absolut überflüssig sind weil man auf hervorragende Open Source – Lösungen zurückgreifen kann. (Ausnahme ist die Erstellung von Live-Images, also bei laufendem System)

Außerdem bin ich kein Freund von kostenpflichtiger Software wenn es freie Software gibt die ihre Aufgabe gleich gut oder sogar besser erledigt.

Da wäre zum einen CloneZilla, ein bootfähiges, linuxbasiertes Programm das von CD/DVD oder einem USB Stick gestartet wird.
Damit sollte man in den meisten Fällen auskommen wenn man nur eine Platte oder eine Partition klonen will bzw. ein Image davon erstellen will.

Jedoch kann man – solange das Ziellaufwerk gleich groß oder größer als die Quelle ist, immer auch die Holzhammermethode anwenden – eine 1:1 kopie mit dd – dump device.
dd ist in den meisten Linux Distributionen enthalten ist, so auch in CloneZilla Live.
Damit lassen sich Datenströme 1:1 von A nach B leiten, was sich für’s Klonen natürlich anbietet.

Wir booten also z.B. mit CloneZilla und wechseln danach auf die Kommandozeile anstatt CloneZilla zu starten.

mit folgendem Kommando wird sda (Laufwerk auf SATA Port 1) 1:1 auf sdb (SATA Port 2) übertragen:
sudo dd if=/dev/sda of=/dev/sdb bs=8M & pid=$!

Kurz zur Erklärung der Parameter:

if = input file (kann ein x-beliebiger Stream sein)
of = output file (auch beliebig, Datei (für ein Image) oder ein Device)
bs = block size – unbedingt angeben ansonsten wird der Vorgang ewig dauern. Da muss man evtl. etwas experimentieren, ich bin letztens mit 8M ganz gut gefahren.

Mit pid=$ wird die Prozess-ID in die Variable $pid geschrieben, damit wir nachher zur Statusanzeige darauf zugreifen können, ohne die Prozess-ID manuell angeben zu müssen.

Achtung: Bevor dd ausführt sollte man unbedingt sichergehen, dass die Parameter if und of korrekt sind, ansonsten kann das Ganze sehr schnell in einem Desaster enden. sudo fdisk -l gibt Aufschluss über die angeschlossenen Devices.

Nachdem dd läuft und wir es mit & in den Hintergrund geschickt haben, senden wir zur Statusanzeige dd das Signal USR1, woraufhin es den aktuellen Fortschritt anzeigt.

sudo kill -USR1 $pid

Um bspw. alle 10 Skunden den Fortschritt zu erhalten kann man watch verwenden:
sudo watch --interval 10 kill -USR1 $pid

dd ist sehr langsam, eine 2TB Platte zu klonen kann schon mal mehrere Stunden dauern – da ist man mit CloneZilla im Normalfall besser bedient weil hier intelligenter vorgegangen wird. dd schaufelt nur „dumm“ die Blocks von A nach B, inkl. ungenutzem Speicherplatz.

23 Gedanken zu „Festplatten klonen mit dd“

  1. Hey, hat sauber funktioniert, nachdem ich sda auf hda angepasst hatte, da der PC noch kein sata verwendet.
    Rund 1/2h und danach war die Sicherhungs-HD erstellt. Ging ganz einfach mit der Rescue-cd.

    Gruss, Markus

  2. Prima, danke ! Die Watch Syntax meiner Linuxdistri wollte statt „–intervall“ „-n“ haben, ansonsten hats perfekt funktioniert.  Aber ein bisschen darf man das Hirn ja trotz der perfekten Vorlage einschalten 😉

     

    1. Kann es sein dass du den zweiten Minus-Strich vergessen hast? Die Option ist –interval und nicht -interval. Unter Linux ist es nicht unüblich Optionen mit einem Buchstaben mit einem Minus-Strich zu kennzeichnen und sprechende Optionsbezeichnungen mit zwei Minus-Strichen.
      Gruß
      Aglef

  3. Danke für die ausführliche Beschreibung. Mein NAS hat es zerlegt und ich hoffe nach dem Klonen der Datenpartition auf eine zweite da noch was retten zu können. 2TB dauern jetzt schon schon 4h ca. Ich habe leider den Status vergessen mit anzugeben und nur einen blinkenden Cursor im Terminal. Kann ich das noch nachträglich eintippern ohne wieder mit allem von vorne an anzufangen?

    Anwort kommt wahrscheinlich eh zu spät 😉

     

     

  4. Im Nachhinein kann man nichts mehr am Befehl ändern. Da musst du wohl einfach abwarten

    Nicht unbedingt, in nem anderen Terminal „ps -C dd“ gibt unter anderem die PID aus, diese einfach statt „$pid“ verwenden.

  5. auch wenn das tut scho antik ist (2 Jahre OMG!!1) mein senf dazu 🙂

     

    das mit dem kill-switch fuer USR1 funktioniert natuerlich, keine frage 🙂

    als aternative dazu:

     

    dd allein zeigt keinen vernuenftigen progressbar an, dafuer gibts aber als additional tool ‚pv‘. sollte sich auf debian und anderen normaldistris einfach via apt-get, pacman, zypper, whatever installieren lassen. dann kann man sehr fein den fortschritt so beobachten:

    dd if=/dev/sda | pv | dd of=/dev/sdb

     

    OOOOODER alternativ installiert man sich dcfldd, eine dd-mutation mit eingebautem progressbar 🙂

     

    just my 2 cents 🙂

    1. OOOOODER man nutzt pv mit dem entsprechenden Parametern:
      dd if=/dev/sda bs=1M count=100 | pv -petra -s 2000000m | dd of=/dev/sdb

      (wobei hier 2TB in MB umgerechnet wurden)

  6. Herzlichen Dank für die Hilfe!

    Ich stand ebenfalls vor dem (für mich noch unerklärlichen) Problem, dass Clonezilla nicht wirklich wollte (ebenfalls auf einer neuen SSD konnten keine Partitionen angelegt werden).

    Mittels dd bin ich nun aber trotzdem da wo ich hinwollte 😉 1:1 geklont – hervorragend! Danke!

  7. Danke erstmal für den Erfahrungsbericht.

    Habe soeben von SATA auf SSHD umgestellt bei selbiger Kapazität (1TB). Hat wunderbar geklappt. Ca. 1 Stunde kopiert . . . fertig. Umgestöpselt und gebootet. Alles da keine Probleme. Wenn ich ehrlich bin, hatte ich ein bisschen Sorge wegen „Grub2“. War aber kein Problem. Somit Danke nochmals.

  8. ich muss auch bei meiner NAS eine Platte clonen, das RAID hat es zerlegt.
    Ich clone eine 6TB Platte (WD Green), das dauert aber schon 8 Tage, dabei habe ich erst 3,1 TB (also die Hälfte) „geschafft“. Die Kopiergeschwindigkeit sinkt kontinuierlich, anfangs ca 150 MB/s bis jatzt auf ca 4,7 MB/s. Ist das NORMAL?
    Meine Quell-HDD hat S.M.A.R.T.-Fehler.

    1. das Problem hatte ich auch, aber der Blick in die Prozesse und die Systemauslastzng zeigte bei einer 4kern8fred-Cpu 12%. Gzip lief demnach nur auf einem Kern unter Volllast, ist also der Flaschenhals. Habe Gzip aus dem Befehl entfernt. Nun schieszt es mit 260MB/s statt 8MB/s dahin. Es braucht so nur mehr Speicher. Ich habe mir aber die Mühe gemacht, die Platten über SATA einzuhängen. Mit USB dazwischen dauert es auch sehr lange.

      | gzip > stand in meinem Befehl anstelle von of= und davor noch die Option z.B. bs=8M

      Mir ist jetzt nur noch unklar, wie ich die Daten aus den QNAP-NAS verschlüsselten Partitionen auslese.
      ansegisel

  9. Hallo, gibt es eine einfache Möglichkeit, nach dem Klonen zu überprüfen, ob auch tatsächlich alles 1:1 rüberkopiert wurde? Bei mir geht es darum, mehrere PCs in Betrieb nehemen zu müssen, aber ich möchte nur einmal die komplette Installation durchführen und anschließend auf die SSDs der anderen PCs klonen. Schöne Grüße!

  10. Sehr guter Artikel.
    Hat mir sehr geholfen. Habe heute erfolgreich mein komplettes System auf eine neue SSD umgesiedelt. Anschließend wurde mit GParted die home-Partition auf die maximale Kapazität des neuen Massenspeichers vergrößert.
    Das gesamte Prozedere war mit dem Artikel und ein paar guten Kommentaren sehr einfach.

  11. Sehr geehrter Herr Dick,

    ich hatte Schwierigkeiten meine Platte zu klonen und habe dann einfach nach Ihrer Ausführung dd if=sda of=sdb im Superusermodus bei SuSE Linux eingegeben – mit Erfolg. Vielen Dank

    Friedrich-Karl Stolzenwald

  12. Hallo, Herr Dick,

    herzlichen Dank, funktionierte quasi OOB.  Clonezilla weigerte sich aus welchen Gründen auch immer, eine postfrische leere Platte anzufassen; Ihr Hinweis half sofort.

  13. Vielen Dank, Herr Dick, weil ich eine komplizierte „Operation“ machen musste mit einem Multibootsystem über vier Stationen, habe ich mich vorsichtshalber im Netz kundig gemacht und bin auf Ihre Seite gestoßen. Sie hat mir nicht nur einiges klarer gemacht, sondern die strenge Einhaltung der Befehle hat auch zum vollen Erfolg geführt. Zwar langsam, doch in der Zeit habe ich meine eMailaccounts aufgeräumt.

  14. Funktioniert super.  Daumen hoch !
    Und das mit der „langen Dauer“ ist auch relativ.
    Konnte eine 1TB große m.2 pci-e ssd innerhalb von 13 Minuten und 40 Sekunden klonen.

  15. Mein Hund fand die Anleitung auch toll. Statt stundenlang darüber zu grübeln, warum cyclone beim Klonen von gpt Festplatten Probleme hat, kann ich mich jetzt mit meinem Vierbeiner beschäftigen. ????

  16. Ich habe eine 2 TB (1,8 TiB) (GPT-) Festplatte erfolgreich geklont – Zeitdauer ca. 4,5 Stunden.

    Das war die Bootfestplatte von Windows 8.1, auf einer SSD ist Windows 10 installiert und alle anderen Methoden die Bootfestplatte auf eine größere zu klonen – da hat Windows 8.1 noch funktioniert, Windows 10 dagegen hat beim ersten Start einen Bluescreen of Death gemacht und ist erst beim zweiten Durchlauf gestartet und die großen Sprünge auf die nächste Version ließen sich auch nicht installieren.

    Zuerst ein ISO-Image von GParted 64Bit heruntergeladen um ein bootfähiges System zu haben und von diesem gemäß dieser Anleitung einen bootfähigen USB-Stick erstellt

    Ubuntu von einem USB Stick installieren – Thomas-Krenn-Wiki (thomas-krenn.com)

    Alle Festplatten bzw. SSD abgehängt außer die zu kopierende und die Zielfestplatte. Vom USB-Stick gebootet und mit GParted nochmals kontrolliert dass es sich auch um die beiden richtigen Platten handelt (da sieht man gleich welche sda und welche sdb ist). GParted beendet und den Clonevorgang gestartet.

    Problem nachher ist, dass sich auf der Zielfestplatte weil sie größer ist die zweite GPT in der Mitte und nicht am Ende befindet und die Größe der Platte nicht mit dem Eintrag im PMBR (Protective Master Boot Record) übereinstimmt.

    Das lässt sich korrigieren:

    partitioning – Fixing corrupt backup GPT table? – Ask Ubuntu

    sudo gdisk /dev/sdb

    Nacheinander die Kommandos p dann v und dann w durchführen – GPT erfolgreich geschrieben

    Noch was: da beide Festplatten und auch die Partitionen die gleiche GUID haben darf man nicht beide Festplatten in einem Computer gleichzeitig betreiben oder man muss die GUID einer Festplatte (am besten der geclonten) und ev. auch die GUID der geclonten Partitionen ändern.

    Bei mir hat dann die Zielfestplatte die Quelle ersetzt und alles läuft bestens (und die Quellfestplatte dient als Backup für den Notfall)

Schreibe einen Kommentar zu Friedrich-Karl Stolzenwald Antworten abbrechen

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