Konstantin Filtschew WebLog

Der tägliche IT-Wahnsinn

Partitionen mit “dd” unter Linux sichern und auch mal per ssh über das Netzwerk

Wieder eine tolle Aufgabe, die in Linux mit Leichtigkeit zu erledigen ist.

Will man eine Partition mit “dd” kopieren (bit für bit spiegeln), dann geht es auf die folgende Art und Weise:

# dd if=/dev/sda1 of=/def/sdb1
oder für die ganze Festplatte:
# dd if=/dev/sda of=/def/sdb

Der Nachteil liegt darin, dass man keinen Fortschritt sieht. Dafür habe ich aber ein paar Vorschläge (buffer installieren: aptitude install buffer):
# dd if=/dev/sda1 | buffer -s 64k -S 10m | dd of=/dev/sdb1
oder
# dd if=/dev/sda1 | pv | dd of=/dev/sdb1
Dafür muss man aber pv installieren(unter Debian: apt-get install pv).

Das Gleiche geht natürlich auch in ein Image(mit Anzeige):
# dd if=/dev/sda1 | buffer -s 64k -S 10m > image
oder mit dem Tool “dd_rescue” falls verfügbar.
Oder das ganze mal verpackt:
# dd if=/dev/sda1 | buffer -s 64k -S 10m | gzip -c > image.gz

Um das ganze über Netzwerk zu betreiben stehen folgende Möglichkeiten zur Verfügung:
In ein Image:
# dd if=/dev/sda1 | pv | ssh user@host “cat > ~/image”
oder mit “buffer”:
# dd if=/dev/sda1 | buffer -s 64k -S 10m | ssh user@host “cat > ~/image”

oder auch mal mit Verpacken:
# dd if=/dev/sda1 | pv| gzip -c | ssh user@host “cat > ~/image.gz”
oder mit “buffer”:
# dd if=/dev/sda1 | buffer -s 64k -S 10m | gzip -c | ssh user@host “cat > ~/image.gz”

Um die Images auf eine Partition einzuspielen tut man das Folgende:
# dd if=image of=/dev/sdb1
oder mit Anzeige:
# dd if=image | pv | dd of=/dev/sdb1
oder
# dd if=image | buffer -s 64k -S 10m | dd of=/dev/sdb1

Natürlich kann man das verpackte Image auch entpacken:
# gunzip -c image.gz | pv | dd of=/dev/sdb1
oder
# gunzip -c image.gz | buffer -s 64k -S 10m | dd of=/dev/sdb1
Oder direkt auf die Partition schreiben mit(benötigt root-Rechte):
# dd if=/dev/sda1 | pv | ssh root@host “dd of=/dev/sdb1″
oder mit “buffer” (muss vorher mit “aptitude install buffer” installiert werden):
# dd if=/dev/sda1 | buffer -s 64k -S 10m | ssh root@host “dd of=/dev/sdb1″

Falls du noch ein paar hilfreiche Empfehlungen hast oder irgendwas falsch sein sollte, dann melde dich bitte! Es sind bereits einige Kommentare zu dem Thema eingegangen und dafür danke ich den Schreibern.

Konstantin

Ähnliche Beiträge:

  1. Von Windows auf Linux (ext2, ext3, ext4) Partitionen zugreifen
  2. Schrift und Schriftgröße in Google Earth unter Linux anpassen

10 Reaktionen zu “Partitionen mit “dd” unter Linux sichern und auch mal per ssh über das Netzwerk”

  1. Peter

    Vielen Dank fuer die Tips !
    Vielleicht noch ein kleiner Hinweis. Das “buffer” command war auf meiner Debian Maschine nicht da, ich musste noch

    apt-get install buffer

    sagen.
    Peter

  2. sbecker

    danke, ich nehme diese seite als referenz auf ;-)
    bzgl. der übertragung des dd-images per ssh über das netzwerk wär es escht nett zu wissen, wie ich die gegenseite präparieren muss, damit der datenstrom auch angenommen wird.
    gruss
    s

  3. Konstantin Filtschew

    Hallo sbecker,

    was meinst du mit “preparieren”. der Befehl in den Ausführungszeichen wird auf der Remotemaschine ausgeführt. Als Beispiel wäre “dd of=image.iso” dann den geschickten Inhalt in die Datei “image.iso” schreiben oder “dd of=/dev/sda1″ z.B. direkt auf die Festplatte.

    Gruß, Konstantin

  4. Mario

    Kleiner Auszug aus “man dd” bzgl der Fortschrittsanzeige:

    Sending a USR1 signal to a running ‘dd’ process makes it print I/O statistics to standard error and then resume copying.

    $ dd if=/dev/zero of=/dev/null& pid=$!
    $ kill -USR1 $pid; sleep 1; kill $pid

    18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s

  5. Konstantin Filtschew

    Hallo Mario,

    Danke für die Information. Viele Wege führen nach Rom. :)

    Gruß, Konstantin

  6. Fortschrittsanzeige von dd mit pipe-viewer | Dirk Siemers

    [...] Anleitungen findet ihr hier, und hier. Ich habe das netbook remix auf meinen USB Stick wie folgt [...]

  7. Carsten

    Oft erfolgt ein Zurückspielen des Images mit Hilfe einer Linux-Live-CD aus. Da dort meist kein sshd läuft, können die o.g. Befehle nicht benutzt werden. Hiermit klappt es:

    ssh user@host “cat /path/to/file/image.gz” | gzip -d -c | buffer -s 64k -S 10m | dd of=/dev/sdb

  8. marc

    super blog Konstantin,
    ich frage mich immer ob beim zurück spielen
    des images die partition _genau: so groß sein muss oder auch größer sein darf wie die orginal partition?
    danke

  9. Konstantin Filtschew

    Hallo Marc,

    Spielst du eine Partition zurück (z.B. /dev/sda1), dann wird die Partitionstabelle von der Festplatte (hier /dev/sda) nicht mitgeschrieben. Die Partitionsgröße (Eigenschaften einer Partition) werden nicht angefasst. Die Partition muss gleich oder größer sein. Ist sie größer, so kannst du mit den fs-tools (file system tools das Dateisystem auf die Partitionsgröße vergrößern. Das tool heißt “resize2fs”, aber sei damit vorsichtig und Datensicherung vorher nicht vergessen!

    Spielst du eine Festplatte zurück (z.B /dev/sda), so wird die Partitionstabelle mit kopiert und damit auch die Aufteilung der Partitionen. Hier wird der alte Inhalte gnadenlos mit neuem Inhalt überschrieben.

    Bei “dd” musst du mind. 3 Mal ganz genau auf den Befehl schauen, da es den Inhalt des Images oder der alten Festplatte nicht überprüft und das Ziellaufwerk oder Partition gnadenlos überschreibt.

    Gruß, Konstantin

  10. andreas

    super Konstantin

    ich arbeite schon lange mit Linux, aber diese Tipps waren heute Goldwert. Danke

Einen Kommentar schreiben

Copyright © 2012 by: Konstantin Filtschew WebLog • Template by: BlogPimp Lizenz: Creative Commons BY-NC-SA.