Wie kann ich DD verwenden, um Daten von einem alten Laufwerk auf ein neues Laufwerk zu migrieren?

29

Ich aktualisiere die interne SATA-Festplatte meines Laptops von einer 40-G-Festplatte auf eine 160-G-Festplatte. Ich habe einen Linux / Ubuntu-Desktop mit einer SATA-Karte. Ich würde eigentlich gerne dasselbe für ein paar CentOS & FreeBSD-Boxen bei der Arbeit tun, und es scheint, als hätte dies die gleiche Lösung.

Ich habe gehört, dass ich DD verwenden kann, um die 40G-Partition auf das 160G-Laufwerk zu spiegeln, oder dass ich die 40G-Partition als Image auf meinem lokalen System speichern und dieses 40G-Image dann auf das 160G-Laufwerk kopieren kann.

Kann jemand beschreiben, wie ich das machen darf? Brauche ich noch andere Hilfsprogramme wie gparted

Stefan Lasiewski
quelle
3
Ahha ... Das ist die erste Frage !!
Harshit Shrivastava
2
Frage Nummer Eins! Ich bin auch der Antragsteller für diese Site, und ich dachte, ich würde die Site mit einer ziemlich technischen Frage starten. Ich wurde mit einem T-Shirt und etwas Beute belohnt.
Stefan Lasiewski

Antworten:

6

Ihre erste Aufgabe wäre es, beide Festplatten an ein vorhandenes Linux-System anzuschließen oder die neue Festplatte an das ursprüngliche System anzuschließen.

Sie müssen sehr vorsichtig sein, da es sehr einfach ist, den Rohling auf den guten Datenträger zu kopieren!

Um die Bootsektoren und alles zu erreichen, würden Sie etwa Folgendes tun:

dd if=/dev/hdx of=/dev/hdy

Wo hdxist Ihre 40G-Festplatte und hdyist Ihre 160G-Festplatte. Sie werden feststellen, dass es keine Partitionsnummern wie /dev/hdx1. Dies kopiert die gesamte Festplatte, Partitionsinformationen und alles.

Ihre neue Festplatte wird genauso wie die alte Festplatte mit 40 GB belegt. Es sollte sofort starten, wenn es wieder in Ihrem Laptop steckt. Hoffen Sie, dass Sie LVM verwendet haben? Hoffen Sie sonst, dass Sie nicht alle Partitionen verwendet haben? Um an diesem Punkt vorbeizukommen, sind viel mehr Informationen erforderlich.

Eine andere Lösung besteht darin, jede einzelne Partition zu sichern. Dies erfordert viel mehr Situationsbewusstsein, da Sie die Startinformationen neu erstellen müssen.

All dies wird am besten zum Klonen von Computern und nicht zum Aktualisieren von Festplatten verwendet. Es ist viel besser, eine neue Installation mit Ihren Backups wiederherzustellen.

Stephen Jazdzewski
quelle
17

Normalerweise würde ich eine Lösung vorschlagen, wie "die 2. Festplatte über ein externes Gehäuse anschließen, von einer Linux-CD booten und dann einen Befehl wie" dd if=/dev/sda of=/dev/sdb bs=1Gverwenden " eine bessere lösung.

Alle meine Server und Laptops werden bei der Arbeit mit Clonezilla abgebildet . Es gibt zwei Möglichkeiten, es zu verwenden: Eine verwendet einen dedizierten Server und ist wahrscheinlich zu viel für Sie, die andere verwendet eine Boot-CD und eine externe Festplatte.

Die Idee ist, dass Sie mit der Clonezilla-CD booten und ein größeres (größer als das Quelllaufwerk) externes USB-Laufwerk haben. Clonezilla führt Sie durch die Erstellung eines Images des vorhandenen Laufwerks. Anschließend schalten Sie den Computer aus, tauschen das Laufwerk aus und starten Clonezilla erneut. Anschließend werden die Daten wiederhergestellt.

Dies gibt Ihnen die Möglichkeit, A) das Image auf ein größeres Laufwerk zu kopieren und B) eine Sicherungskopie der Daten zu erstellen.

Matt Simmons
quelle
5

Während Sie können einen Datenträger wie das kopieren verwenden dd, hat dabei eine Reihe von Nachteilen:

  1. Das Ziel muss mindestens genauso groß sein wie die Quelle
  2. Nach dem Kopieren müssen Sie die Größe der Partitionen ändern, um zusätzlichen Speicherplatz zu belegen
  3. Sie verschwenden Zeit damit, freien Speicherplatz zu kopieren
  4. Auf der alten Festplatte vorhandene Fragmentierungen bleiben erhalten

Wenn Sie ein Imaging-Programm wie Ghost4Linux, partclone oder clonezilla verwenden, werden mindestens die Nummern 2 und 3 berücksichtigt. Sie können die neue Festplatte auch einfach formatieren, einbinden und alle Dateien mit cp -ax(als Root) kopieren und anschließend neu installieren Bootloader auf dem neuen Laufwerk. Dieses Verfahren weist keinen der oben genannten Nachteile auf.

Psusi
quelle
3

Um die Partition einfach zu kopieren, können Sie dd if=/dev/srcDrive of=/dev/dstDriveoder so etwas verwenden. Ich würde Ihnen empfehlen, die Manpage zu lesen . Tut mir leid, ich kann nicht mehr viele Informationen geben, da ich gerade auf der Arbeit bin.

Bern
quelle
2

Sie haben gefragt, wie es mit dd gemacht werden soll, aber es ist mir besser gelungen, die Ausgabe von dump in restore zu leiten . Ausgehend von der Quelle ad1s1a und dem Ziel ad2s1a :

$ mount /dev/ad2s1a /target
$ cd /target
$ dump -0Lauf - /dev/ad1s1a  | restore -rf -

Ich habe das auf FreeBSD ausprobiert, eigentlich habe ich es im FreeBSD-Forum gefunden

zvolkov
quelle
1

Ein einfaches Beispiel ist folgendes:

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

Aber wenn Sie spezielle Bedürfnisse haben, sollten Sie unbedingt die Manpage (man dd) lesen oder auf Google suchen.

Eine andere Idee könnte die Verwendung von rsync sein (vergessen Sie nicht, die richtigen Optionen zu setzen, wie -az [packt die Dateien anstatt eine Datei nach der anderen zu kopieren] oder --numeric-ids [verwendet die UID / GID anstelle von Namen wie "root"] und vielleicht einige andere). Der Link enthält viele Beispiele.

Wenn die neue Festplatte keine Partitionen hat, können Sie gparted oder palimpset verwenden.

Wenn Sie sich nicht sicher sind, formatiere ich die Festplatte und synchronisiere die Daten mit rsync.

waechter
quelle
1

Nun, ich habe ähnliche Migrationen durchgeführt, indem ich mit beiden Festplatten und einer Live-CD gebootet habe.

  1. Sie erstellen die Partitionsinformationen des ersten Datenträgers auf dem zweiten Datenträger neu und vergrößern möglicherweise einige Partitionen, um den zusätzlichen Speicherplatz zu nutzen.
  2. Nehmen wir an, Sie haben / dev / sda {1,2,3,4} und möchten diese nach / dev / sdb {1,2,3,4} kopieren. Dann haben Sie mkdir / mnt / sd {a, b} {1 , 2,3,4} und mounten jede Partition in jedem Verzeichnis (oder wenn Sie es nacheinander tun möchten, können Sie ein / mnt / origin / mnt / destination erstellen und jedes Paar mounten / umounten)
  3. Dann machst du ein cp -avr / mnt / origin /. / mnt / destination / (oder ein cp -avr / mnt / sda1 /. / mnt / sdb1 /
  4. Warten Sie, während Sie im Internet surfen :)
  5. Denken Sie daran, grub, lilo oder den von Ihnen verwendeten Bootmanager neu zu installieren.

Auf diese Weise defragmentieren Sie die Dateien beim Kopieren. Sie können auch die Dateisysteme in den Partitionen ändern (von reiserfs oder ext3 nach ext4 usw. migrieren). Denken Sie jedoch daran, nach dem Kopieren / etc / fstab zu bearbeiten die neue situation.

Jorge Nerín
quelle