URSPRÜNGLICHE FRAGE:
Wenn ich 2 identische Festplatten mit folgenden Merkmalen habe:
- SATA 6.0 Gb / s
- 5400 U / min
- 3 TB
Wie lange sollte es dauern, bis eine vollständige DD-Kopie fertig ist?
Bisher ist es 5 Stunden gelaufen und geht immer noch ...
Ich verwende Linux Ubuntu 12.04 64bit und benutze folgenden Befehl:
dd if=/dev/sdb of=/dev/sdc
UPDATE: 1
Ich kann jetzt den Fortschritt sehen und es waren 6+ Stunden für die Kopie 430GB. Die Festplatte hat 3 TB ...
Geht das nicht schneller?
UPDATE: 2
Das scheint viel besser zu sein 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
Die ETA beträgt für 3 TB ungefähr 9 Stunden, während die ETA nach 6 Stunden 430 GB erreicht hat. Ich nehme an, dass die Verwendung des vorherigen Befehls ungefähr 36 Stunden gedauert hätte.
SIGUSR1
, und BSD dd verwendetSIGINFO
bs=
Argument bisdd
) angeben . Ziehen Sie auch in Betracht, jede Festplatte an einen eigenen Sata-Port anzuschließen.Antworten:
dd
war früher nützlich, als die Leute Bänder verwendeten (wenn es auf Blockgrößen ankam) und wenn einfachere Tools, wie siecat
möglicherweise nicht binärsicher sind.Heutzutage
dd if=/dev/sdb of=/dev/sdc
ist es nur eine komplizierte, fehleranfällige, langsame Art zu schreibencat /dev/sdb >/dev/sdc
. Obwohl esdd
für einige relativ seltene Aufgaben immer noch nützlich ist , ist es viel weniger nützlich als die Anzahl der Tutorials, in denen erwähnt wird, dass Sie es glauben machen würden. Es ist keine Magie indd
, die Magie ist alles in/dev/sdb
.Ihr neuer Befehl
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ist wieder unnötig langsam und kompliziert. Die Daten werden gelesen 128kB zu einer Zeit (die besser ist als derdd
Standard von 512B, aber nicht so gut wie noch größeren Werten). Es geht dann durch zwei Pipes, bevor es geschrieben wird.Verwenden Sie den einfacheren und schnelleren
cat
Befehl. (In einigen Benchmarks, die ich vor ein paar Jahren unter Linux erstellt habe,cat
war das schneller alscp
bei einer Kopie zwischen verschiedenen Festplatten undcp
war schneller alsdd
bei jeder Blockgröße;dd
bei einer großen Blockgröße war das Kopieren auf dieselbe Festplatte etwas schneller.)Wenn Sie diesen Befehl ausführen möchten
sudo
, müssen Sie die Umleitung als root ausführen :Wenn Sie einen Fortschrittsbericht benötigen, da Sie Linux verwenden, können Sie diesen problemlos abrufen, indem Sie die PID des
cat
Prozesses (z. B. 1234) notieren und die Position seines Eingabe- (oder Ausgabe-) Dateideskriptors überprüfen.Wenn Sie einen Fortschrittsbericht und Ihre Unix - Variante wollen nicht eine einfache Möglichkeit bietet auf einer Dateideskriptor Positionen zu erhalten, können Sie installieren und verwenden
pv
stattcat
.quelle
cat
schneller alsdd
? Könnte es sein, dasscat
der Cache verwendet?sudo sh -c 'pv /dev/sdb >/dev/sdc'
anstelle vonsudo sh -c 'cat /dev/sdb >/dev/sdc'
?pv
Sie , wo Sie verwenden würdencat
.cat /dev/sdc1 >/dev/sdb1 && cat /dev/sdd1 >/dev/sde1
. Die Verkettung der beiden Teile macht keinen Sinn. Wenn Sie die Struktur des BTRFS-Volumes ändern möchten, müssen Sie zum Ändern der Struktur die BTRFS-Tools verwenden oder ein neues Dateisystem mit der gewünschten Struktur erstellen und die Dateien kopieren .dd
verwendet standardmäßig eine sehr kleine Blockgröße (512 Byte). Dies führt zu einem hohen Overhead (einerread()
undwrite()
Syscall für jeweils 512 Bytes).Es geht viel schneller, wenn Sie eine größere Blockgröße verwenden. Optimale Geschwindigkeiten beginnen bei
bs=64k
oder so. Die meisten Leute benutzen ein noch größeres,bs=1M
damit es für den Menschen lesbar wird (wenndd
es kopiert wird1234 blocks
, wissen Sie, dass es1234 MiB
ohne Mathematik auskommt). Die Verwendung noch größerer Blockgrößen führt wahrscheinlich nicht zu Geschwindigkeitsverbesserungen, sondern nur zu einem höheren Speicherverbrauch.Der Befehl sollte also lauten:
Wenn Sie bereits eine langsame
dd
Ausführung haben, können Sie diese unterbrechen und mit einer schnellerendd
Instanz fortfahren. Hierzu ist es wichtig zu wissen, wie weit der Kopiervorgang bereits fortgeschritten ist.dd
Normalerweise wird der Fortschritt gedruckt, wenn Sie ihn abbrechen, oder Sie können dasUSR1
Signal senden, während es ausgeführt wird, damit der Fortschritt gedruckt wird.Wenn beispielsweise mehr als kopiert wurde
1234MiB
, können Sie an der Position1234MiB
fortfahren, indem Sie Folgendes verwenden:Wenn weniger als kopiert wurde
1234MiB
, ist Ihre Kopie unvollständig. Wenn mehr als kopiert wird1234MiB
, werden einige bereits kopierte Teile erneut kopiert, was normalerweise keinen Schaden anrichtet. Wenn Sie also Zweifel haben, sollten Sie einen Wert wählen, der etwas kleiner ist als der, von dem Sie glauben, dass er bereits kopiert wurde.quelle
Statistiken über den laufenden dd-Prozess abrufen
Sie können den
kill
Befehl mit dem entsprechenden Signal verwenden, um diedd
Ausgabestatistik auf Standardfehler umzustellen.Aus der GNU dd-Manpage:
Stellen Sie sicher, dass Sie zuerst in Ihrer Manpage nach dem richtigen Signal suchen, da es bei verschiedenen Implementierungen von dd unterschiedlich sein kann: (BSD dd verwendet SIGINFO).
Den Prozess beschleunigen
bs=
Argument. Schauen Sie sich diesen Thread im Superuser an und probieren Sie einige Werte aus.dd
Aufrufe zum Lesen und Schreiben und verwenden Sie eine Pipe, um sie zu verbinden (dd if=/dev/sda bs=1M | dd of=/dev/sdb bs=1M
).Wenn Sie dies tun und eine Blockgröße angeben, stellen Sie sicher, dass Sie bei jedem Aufruf dieselbe Blockgröße verwenden.
direct
Argument versuchen .quelle
Haben Sie versucht, "gparted"? Sie können eine Partition buchstäblich von einem Laufwerk auf ein anderes kopieren und die Größe entsprechend anpassen. Sie erhalten Übertragungsrate und verbleibende Zeit. Es verwendet 'e2image' für Linux-Partitionen.
quelle
Es gibt kommerzielle Software namens HDClone . Es ist sowohl als Freeware als auch als kommerziell lizenziert. In beiden Versionen können Sie ein bootfähiges Pendrive oder eine DVD erstellen sowie Datenträger kopieren. Schließen Sie die Quell- und Ziel-HDs an und befolgen Sie die Anweisungen auf der GUI-Basis.
Die kostenlose Version überträgt mit einer Geschwindigkeit von ca. 80 MB / Sek., Während die kostenpflichtigen Versionen viel schneller sind. Für NTFS- und FAT-Dateisysteme können die kostenpflichtigen Versionen so konfiguriert werden, dass nur die belegten Bits der Festplatte geklont werden, was die Geschwindigkeit jedes Klons erheblich erhöht.
quelle