Linux & Co.Netzwerk

Festplatten unter Linux klonen – auch über das Heimnetz

Ihr wollt ein 1:1-Backup Eures Systems? Oder auf eine größere Festplatte umziehen? Einen zweiten PC mit identischem System aufsetzen? Linux macht es an der Stelle ganz furchbar einfach. Es gibt allerlei Tools mit allerlei schönen Features, aber es läuft doch immer wieder auf den Klassiker hinaus, der an Einfachheit nicht zu überbieten ist.

Tools, Tools, Tools

Wer im Netz nach dem Thema schaut, wird schnell auf Tools wie insbesondere Clonezilla treffen. Der Name verrät es, Clonezilla ist der Klon-/Imaging-Spezialist schlechthin. Man bootet von der Clonezilla-Live-CD und greift von dort über eine recht einfache Textmenüführung auf die Funktionen zu. Das ist super, wenn man etwa ein System nicht hochfahren will oder kann – beispielsweise zwecks Datenrettung/Forensik. Aber der Umweg über die Live-CD ist eben doch ein Umweg.

Auch der bekannte Partitionierer Gparted kann Festplatten klonen, genauer gesagt: Partitionen kopieren. Das funktioniert zwar in einer netten grafischen Nutzeroberfläche, ist aber dennoch recht aufwändig – zumal man über den Aufbau der Linux-Partitionen Bescheid wissen muss.

gparted screenshot
Gparted kann auch klonen – ist aber umständlich.

Wirklich einfach ist der Klassiker: dd liest eine Datei ein und gibt sie 1:1 in eine andere Datei aus. Erfreulicherweise ist unter Linux alles eine Datei! Ja, auch Laufwerke findet Ihr im Dateisystem als Datei und könnt sie entsprechend ansprechen. dd ist also nichts weiter als ein simpler Kopierbefehl.

Klonen mit dd

Bevor jemand meckert: Ja, man kann heute (fast) alles unter Linux auch mit grafischen Werkzeugen erledigen. Aber der Terminal ist manchmal einfach besser. Und besser heißt hier durchaus auch einfacher! Und dd ist auf so ziemlich jedem Linux vorhanden. Und dd kann als CLI-Tool – natürlich – auch über das Netzwerk klonen. Es ist zuverlässig und läuft dezent im Hintergrund, benötigt wenige Ressourcen und so lohnt es sich einfach, es zu kennen.

Die übliche Ausgangssituation: Ihr habt eine alte Systemfestplatte, die standardmäßig die Bezeichnung sda trägt und durch die Datei /dev/sda dargestellt wird. Dann kommt eine zweite neue Platte hinzu, die das System dann als /dev/sdb einhängt. Partitionen heißen dann übrigens sda1, sda2 und so weiter.

Da dd nur Quelle (if für Input File) und Ziel (of für Output File) benötigt ist der Befehl genau so simpel:

sudo dd if=/dev/sda of=/dev/sdb

Da dieser Vorgang länger dauert und dd so keine Statusmeldung ausgibt, solltet Ihr in der Praxis besser

sudo dd if=/dev/sda of=/dev/sdb status=progress

nutzen, um den Fortschritt verfolgen zu können.

terminal screenshot
dd in Aktion.

Nachtrag: Um den Vorgang zu beschleunigen könnt Ihr noch die Blockgröße auf 1 Megabyte hochsetzen, Standard sind winzige 512 Byte:

sudo dd if=/dev/sda of=/dev/sdb status=progress bs=1M

Troubleshooting

Von der erstellten Festplatte könnt Ihr anschließend booten – bekommt aber eventuell Fehlermeldungen und landet in einem Terminal mit dem Hinweis, es würde ein manuelles fsck für die Partition sda1 benötigt. Gebt in dem Fall einfach

fsck /dev/sda1

ein, um den Filesystem-Check (fsck) durchzuführen. Etwaige Fragen beantwortet Ihr mit Ja, und schon sollte die Reparatur durchlaufen. Nach dem ersten Booten solltet Ihr im Terminal einmal

sudo apt-get update
sudo apt-get upgrade

durchlaufen lassen, für alle Fälle. Hier traten zum Beispiel Grub-Fehler auf, die sich dann einfach über ein sudo dpkg –configure -a lösen ließen, ein Hinweis der apt-get-Kommandos ;)

Klonen über das LAN

Und wenn Euch das noch nicht überzeugt, staunet vor der Macht des Terminals: CLI-Tools (Command Line Interface) haben unter anderem einen riesigen Vorteil – sie können zusammenarbeiten. Ihr könnt im Terminal immer die Ausgabe des einen Programms an ein anderes weiterleiten – was sich unter Linux Pipe (Tunnel) nennt. Ein Beispiel: Ihr listet den Inhalt eines Ordners auf (ls) und leitet die Ausgabe per | weiter an grep, um nach dem Wort „foobar“ zu suchen:

ls ~/mein-ordner | grep foobar

Und so lässt sich eben auch der dd-Output über ssh (mehr zur ssh-Nutzung) weiterleiten und auf der Gegenseite wiederum zurück an (das lokale) dd, das den empfangenen Datenstrom wie üblich in eine Datei schreibt:

ssh root@192.168.178.100 "dd if=/dev/sda " | dd of=/home/mirco/mein-klon.img

Als Variante wird hier nicht auf ein Laufwerk geschrieben, sondern eine Image-Datei „mein-klon.img“ erstellt. So simpel im Terminal – und nun versucht mal, sowas mit GUI-Programmen zu erledigen ;)

Voraussetzung für dd über ssh ist, dass auf dem entfernten Rechner entweder SSH-Verbindungen für den Nutzer root erlaubt sind oder die Ausführung von dd ohne Passwort möglich ist. Den Root-Zugriff könnt Ihr zum Beispiel einfach in der Datei /etc/ssh/sshd_config mit folgender Zeile ermöglichen:

PermitRootLogin yes

Danach startet Ihr den SSH-Server über

service sshd restart

neu. Anschließend funktioniert nicht nur der obige Befehl, sondern freilich auch:

dd if=/dev/sda | ssh root@192.168.178.100 dd of=/home/peter/mein-klon.img

Damit schreibt Ihr ein Image Eurer lokalen Festplatte auf dem entfernten Rechner – eine perfekte Backup-Option!

SSH könnt Ihr übrigens auch ohne Passwörter nutzen.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

23 Kommentare

  1. Hi Mirco,

    na, das ist ja was – so einfach kann es gehen? Ich will gerade einen älteren Laptop mit einer SSD aufmöbeln, und wäre natürlich sehr froh, wenn ich die bestehende Installation einfach so mit dd rüberschaufeln kann. Bin gespannt. Danke für Deinen Tip!

    1. Hi Mirco,
      bin immer noch fasziniert von diesen Möglichkeiten! Leider hat es bei mir aber nicht ganz geklappt.

      Ich habe mit dem dd-Befehl das alte Setup auf die neu eingebaute SSD übertragen. Dort kam es aber (warum auch immer :-) mehrfach an und hat die gesamte Festplatte (500gb) vollgepackt.
      Eine komplette Version des Betriebssystems wurde es dennoch nicht, am Ende wurde nicht alles transferiert. Ich habe dann noch gewerkelt, muss am Ende aber alles löschen und hab es heute neu installiert.

      Trotzdem danke, beim nächsten Mal versuche ich es wieder!

      1. Tut mir leid, das zu hören, ich weiß aus Erfahrung wie ärgerlich das ist – gerade bei System-Platten sind die Fehlerquellen vielfältig … Meist gibt es Probleme mit laufenden Systemen, sicherer ist immer ein Start von einem Live-System. Grundsätzlich ist dd allerdings ein extrem solides Werkzeug, also gib es nicht auf ;)

  2. Tach, möchte meine hdd durch ssd im notebook tauschen. Auf dem NB ist nur ubuntu, keine Partitionen, drauf. UND LÄUFT seit 8 Jahren ohne Murren. Meine praktischen Fragen.
    1. Für internen Tausch gekaufte SSD wie an NB anschließen wenn HDD noch eingebaut
    2. Brauche ich ein SATA auf USB Kabel/Adapter um die noch „ext.“ SSD am z. B. USB-Anschluß des NB anzustöpseln
    3. Wie müssten die dd kommandozeilen dann lauten, wenn die noch „externe“ SSD am z. B. USB angeschlossen ist.
    sudo dd if=/dev/sda of=/dev/sdb status=progress bs=1M
    Nicht, oder?

    Zur Info HDD ist Jaaa 120GB und die SSD wird 250 bzw. 500 GB werden.
    Danke im Voraus

    .

    1. @Richard
      Wenn dein Notebook von der derzeitigen Systemplatte gebootet ist, werden sich einige Dateien im System während des Kopiervorganges verändern, du weißt dann nicht genau, in welchem zustand sich das System auf der neuen Platte befindet.
      Deshalb ist es besser, das Notebook mit einem „Rettungssystem“ vom USB-Stick zu booten, auf deiner jetzigen Systemplatte ändert sich dann nichts.
      Ich kann mir nicht vorstellen, dass du nicht wenigstens eine Partition auf deiner Platte hast (obwohl es das gibt).
      Mit beispielsweise „fdisk -l“ kannst du dir das anzeigen lassen, und weißt auch gleich, welchen Namen die Platten vom System bekommen haben. An der Größe erkennst du, welches die alte und die neue HDD ist. Wahrscheinlich bekommst du Daten über „sda“ und auch „sda1“ angezeigt
      Dein dd-Befehl wird dann so funktionieren.
      Beachte aber, dass du danach nicht beide Platten am Notebook hast, wenn du neu startest. Die haben dann beide die gleiche UUID´s, und das führt zu Fehlern. Außerdem wirst du auf der neuen Platte erst einmal nicht mehr Platz haben. Dazu muss entweder die jeweilige Partition vergrößert werden, anschließend auch noch das Dateisystem.
      Oder, auf dem gewonnenen Platz kann eine weitere Partition angelegt werden.
      Alternativer Vorschlag: Wenn dein ubuntu schon 8 Jahre alt ist, wäre es vielleicht auch angebracht, mal eine neuere Version zu installieren, einfach ganz neu. Die für dich relevanten Daten kannst du dann besser mit „rsynv -av“ auf das neue System übertragen.

    2. @Richard
      Deine Frage zum Kabel: Ja, du brauchst einen USB –> SATA-Adapter.
      Die Elektronik ist oft im Adapterkabel integriert.
      Wenn du USB2 verwendest, muss dieser auch noch mit einem externen Netzteil gespeist werden, alternativ einen aktiven Switch dazwischen hängen.
      Über USB3-Anschluss mit USB3-Adapter hat es bei mir immer ohne externe Spannungsversorgung funktioniert.

  3. Und wie bekomme ich den Inhalt einer Platte mit 512 Byte – Blöcken auf eine solche mit 4096 Byte – Blöcken (Advanced Format) übertragen?

    1. Die Frage stell ich mir auch gerade – schade das deine Frage nicht beantwortet wurde.
      Hast du eine Lösung gefunden?

  4. Ich erwarte wohl doch zu viel:
    Kopie (Image) nur die Daten, von installiertem System, also nicht Byte-für-Byte, bzw. Sektor-für-Sektor.
    Diese Kopie in Datei, für Recovery von dort. (Gerne NEBEN: auch ´klonen´.)
    Kopie ganze Festplatte, mit bspw. 2 Partitionen, um bspw. AUCH auf kleinere Festplatte, ODER auf portable Festplatte, je bootfähig entsprechend des Quell-Laufwerks, der Quell-Festplatte.
    Im Wesentlichen für Images von Datei-System FAT32.
    Danke für´s Lesen, danke das Interesse.

  5. Danke die Übersicht der Möglichkeiten mit/in Linux, Image(s) von HD durch-zu-führen.
    2 Fragen, bitte:
    Image in eine Datei: geht nicht ? (Um von da als Recovery zu kopieren.)
    2 Partitionen auf einer Festplatte, mit installierten Betriebs-Systemen, geht auch ? Oder, bitte, wie ? (Boot-fähig gerne, auch externes, portables USB-drive.)
    Herzlichen Dank im voraus.

    1. dd kann auch in eine Datei schreiben – wie oben in „Klonen über das LAN“ beschrieben, da landen die Daten in einer Datei „mein-klon.img“.

      Auch das Kopieren von Festplatten mit mehreren Partitionen ist möglich, ebenso das Booten davon.

      dd erstellt schlicht 1:1-Kopien, von daher unterscheiden sich Original und Kopie/Backup nicht voneinander. Wobei es natürlich immer auch Problemchen und Ausahmen und kleine Details zum Beachten gibt – mehr dazu gibt es beispielsweise bei ubuntuusers.de

      1. Vielen Dank die schnelle Antwort.
        Mir steht Knoppix 9.1 Live-CD (und -DVD) zur Verfügung.
        Leider ist mir Linux sehr ´un-handlich´, nach-dem Windows gewohnt, besonders die Befehlszeilen-Anweisungen.
        Ohne die gesamte Festplatte – Sektor-für-Sektor – kopieren müssen, nur die (tatsächlichen) Daten der beiden Partitionen EINER Festplatte, in eine Datei, ist wohl etwas aufwendiger, die Anweisung dafür, als ein direktes Image von Laufwerk (Festplatte) zu Laufwerk (Festplatte).
        Und das Recovery braucht dann nochmals (eine) die korrekte Anweisung.

        (In meinem Fall handelt es sich um ca. 14 GB Daten, die gesamte Festplatte je um 110, 500 GB.)
        Zusätzliche Hürde: ich muß mal zu 110 GB HD und aber auch wieder zurück. Bedeutet: Bei 14 GB Daten, plus zusätzlich vorbereiterter HD mit passenden Partitions-Größen (passend zur benötigten Größe der zu kopierenden Dateien) macht ein Kopieren des MBR, für die Partitions-Größen (des Ziel-Laufwerks) zwei-mal überflüssig, bzw. (1 mal) unbrauchbar.
        ABER: der Rest des MBR muß wohl kopiert werden können müssen.
        (Heißt: ich muß auch auf (Ziel-)Festplatte kleiner als Quell-Laufwerk mal kopieren können.)

        Ich muß leider noch immer zweifeln, daß mir das eine kosten-freie Möglichkeit überhaupt leisten kann, Entschuldigung, bitte.

  6. Danke für die ausführliche Anleitung! Der geplante Umzug auf eine größere Platte hat mit dd stressfrei funktioniert. Selbst bei mir Nichtkönner! Super! Andreas

  7. Oh Sh**, falsche Taste erwischt. Wollte den Namen ergänzen: Jens_zwo.
    Unglaublich, so oft kommt der Name ja nicht vor.

    Schade, die schöne Formatierung hat es komplett verhagelt. Jetzt ist es kaum noch lesbar.

  8. Denkt an eure Datenmengen, die übertragen werden sollen.

    Ich muss jede Nacht eine Datensicherung über 150km Distanz erstellen. Der Server hat 2TByte Filespace, von dem etwa 500GByte belegt sind. Weiter unten habe ich mal schnell eine Übersicht erstellt wie lang so etwas bei Vollsicherung per dd dauert.

    Pro dd:

    1. Cooles Kommando zum schnellen klonen
    2. Man kann damit Bootplatten einfach klonen

    Contra dd:

    1. Klonen per ssh übers Netz wird schnell zäh bzw. ihr blockiert ggf. das Heimnetz für Stunden!
    2. Es wird jedesmal eine Vollsicherung erstellt.

    Backup -> rsnapshot -> je nach Datensicherungstiefe einfach bis rel einfach eingerichtet

    Link lasse ich weg ( pot. Copyright Probleme), aber wer im Netz nach „Linux rsnapshot“ sucht findet alles was er braucht.
    Für reine Backups besser rsnapshot nehmen, das macht eine erste Vollsicherung, danach wird bei den nächsten Sicherungen nur noch das weggesichert, was sich seit der letzten Änderung geändert hat (Deltas). Ändert sich wenig, ist die Sicherung nachts ratz-fatz durchgelaufen. Man kann dabei stündliche, tägliche, wöchentliche, monatliche Sicherungen rel. simpel einrichten.

    Bestimmung der benötigten Übertragungsdauer

    Bei den Plattengrößen von i.d.R. 2-4TB wird das dann schnell zäh.
    Viele DSL-Zugänge haben zwar einen fetten Download, aber einen kleinen Upload und der ist dann der Flaschenhals.

    Beispiel: Ich sichere über 2 Standorte mit 150km Distanz.

    Standort1:  35MBit/s Download und 5MBit/s Upload (Backupserver)
    Standort2:  25Mbit/s Download und 2MBit/s Upload (Cloud, Fileserver, Backup auf interne, gespiegelte Platten)
    HDD-Größe: 1TB ~ 1.000GByte ~ 1.000.000MByte ~ 8.000.000MBit
    

    Downloadzeit (Test):
    Von Standort2 wird an Standort1 folgende Datei kopiert (wegen der Authentifizierung per scp)

    root@server2[~]#   ls -lh home.tar
    -rw-r--r-- 1 user  group  102M Okt  2 04:29 home.tar
    
    user@server1[~]#   time scp server2:/home/user/home.tar   .
    real 7m6,063s
    user 0m0,072s
    sys 0m0,556s
    

    Der Wert bei „real“ ist die Übertragungsdauer. Gut 7 Min. für 100MByte, also 70 Min. für 1GByte, also 70.000 Min. für 1 TByte. Das wären 1166 Std. oder 48 Tage.
    Bei 100MBit DSL-Upload immer noch 1 Tag.
    Im internen Hausnetz mit GigaBit Ethernet etwa 2,5 Stunden.

    1. Danke für die ausführlichen Ergänzungen! Und ja, für dauerhafte entfernte Backups ist rsync immer die richtige Lösung, egal ob pur oder als Unterbau wie bei rsnapshot (das ich mir mal näher ansehen werde).

      Habe die Formatierung ein wenig angepasst.

      Und hier für alle noch der LInk zu rsnapshot:
      https://rsnapshot.org/

  9. Auf gut Deutsch: Wenn ich mit dd die interne Platte auf eine externe sichere, brauche ich im Katastrophenfall nur die beiden auszutauschen und kann dann – wiederum mit dd – zurückspielen? Und schreibe ich damit ein Script und trage das in Cron ein, kann ich zeitgesteuert regelmäßig eine Sicherung erzeugen?
    Is ja cool, eeh …

    1. Wenn Du die Festplatten dann einfach austauschst, brauchst Du ja gar nichts zurückspielen.
      Wichtig ist, dass nicht beide Festplatten in einem System stecken, da auch die UUID´s der Partitionen identisch sind, und dann das System nicht weiß, welche es einbinden soll.
      Die Platten müssen nicht gleich groß sein! Die Zielplatte darf auch größer sein, ist dann aber nicht voll ausgenutzt. Mit einem Partitionierungs-Tool kann man aber eine vorhandene kleinere Partition vergößern, oder aber den übrigen Platz für eine weitere neue Partition nutzen.
      Für die Systemplatte (120GB) habe ich mich für folgenden Weg entschieden: Sicherung in eine Datei (System.img), von dort auf eine zweite Platte. Im Fehlerfall einfach alte Platte raus, neue rein.
      Da das Image noch vorhanden ist, kann man es auch nochmal auf eine Platte kopieren, und, bei Bedarf, eben auch auf eine größere, welche sofort funktioniert. Die kann man dann, wie gesagt, noch nachbearbeiten.

  10. Es fehlt nur noch das übliche bs=1M, damit DD nicht in 512byte Blöcken liest und schreibt… macht dass DD unheimlich viel schneller, bes. bei SD Kärtchen und ähnlichem Gedöns!

    Gruß

      1. Ich hab 250Gb.
        Mit der jetzigen Geschwindigkeit geht das ewig.
        Kann ich den Vorgang auch abbrechen?
        Möchte meinen Rechner kein halbes Jahr laufen lassen bis das fertig ist.

Schreibe einen Kommentar zu Mandri Vator Antworten abbrechen

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

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

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.