URSPRÜNGLICHE FRAGE:
Wenn ich 2 identische Festplatten mit folgenden Eigenschaften habe:
- SATA 6,0 Gbit/s
- 5400 U/min
- 3 TB
Wie lange sollte eine vollständige dd-Kopie dauern?
Bisher läuft es seit 5 Stunden und läuft immer noch…
Ich verwende Linux Ubuntu 12.04 64bit und der Befehl, den ich verwende, lautet:
dd if=/dev/sdb of=/dev/sdc
AKTUALISIERUNG:1
Ich kann jetzt den Fortschritt sehen, und es sind mehr als 6 Stunden für die Kopie von 430 GB vergangen. Die Festplatte ist 3 TB…
Gibt es dafür keinen schnelleren Weg?
AKTUALISIERUNG:2
Das scheint viel besser als zuvor (Danke an Groxxda für die Vorschläge):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ETA beträgt etwa 9 Stunden für 3 TB, während es nach 6 Stunden 430 GB erreichte, also schätze ich, dass es mit dem vorherigen Befehl etwa 36 Stunden gedauert hätte.
Akzeptierte Antwort:
dd
war früher nützlich, als die Leute Bänder verwendeten (als Blockgrößen eine Rolle spielten) und einfachere Tools wie cat
möglicherweise nicht binärsicher.
Heutzutage dd if=/dev/sdb of=/dev/sdc
ist nur eine komplizierte, fehleranfällige und langsame Art, cat /dev/sdb >/dev/sdc
zu schreiben . Während dd
immer noch nützlich für einige relativ seltene Aufgaben, ist es viel weniger nützlich, als die Anzahl der Tutorials, die es erwähnen, glauben lässt. In dd
steckt keine Magie , die Magie liegt in /dev/sdb
.
Ihr neuer Befehl sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ist wiederum unnötig langsam und kompliziert. Die Daten werden jeweils mit 128 KB gelesen (was besser ist als dd
Standardwert 512B, aber nicht so gut wie noch größere Werte). Es durchläuft dann zwei Pipes, bevor es geschrieben wird.
Verwenden Sie das einfachere und schnellere cat
Befehl. (In einigen Benchmarks, die ich vor ein paar Jahren unter Linux gemacht habe, cat
war schneller als cp
für eine Kopie zwischen verschiedenen Platten und cp
war schneller als dd
mit beliebiger Blockgröße; dd
mit einer großen Blockgröße war beim Kopieren auf dieselbe Festplatte etwas schneller.)
cat /dev/sdb >/dev/sdc
Wenn Sie diesen Befehl in sudo
ausführen möchten , müssen Sie die Umleitung als root durchführen:
sudo sh -c 'cat /dev/sdb >/dev/sdc'
Wenn Sie einen Fortschrittsbericht wünschen, können Sie ihn, da Sie Linux verwenden, leicht erhalten, indem Sie die PID der cat
notieren Prozess (z. B. 1234) und sich die Position seines Eingabe- (oder Ausgabe-) Dateideskriptors ansehen.
# cat /proc/1234/fdinfo/0
pos: 64155648
flags: 0100000
Wenn Sie einen Fortschrittsbericht wünschen und Ihre Unix-Variante keine einfache Möglichkeit bietet, an eine Dateideskriptorposition zu gelangen, können Sie pv
installieren und verwenden statt cat
.