-
Sie verwenden die standardmäßigen 512 Bytes
ddBlock Größe. Sie würden die Leistung erheblich verbessern, indem Sie eine größere Blockgröße verwenden, sagen wir128koder sogar1m. -
Es gibt zwei Ausgaben, weil Sie zwei
ddausführen Befehle, der erste ist der Geräteleser und zeigt einen E/A-Fehler an. -
Angesichts des von Ihnen verwendeten Gerätenamens verwenden Sie wahrscheinlich LVM:
/dev/Storage/Storage. Sind Sie sicher, dass dies die gesamte Festplatte ist und nicht eine Teilmenge? Verwenden Sielvdisplayherauszufinden, was sich hinter diesem Gerätenamen verbirgt.
Sehen Sie in Ihren Kernel-Protokollmeldungen nach (dmesg , oder /var/log/kern.log ) für detailliertere Meldungen der SATA-Treiber, wenn es sich um einen Hardwarefehler handelt. Auch nützlich:smartctl -x /dev/sda . Wenn es nur ein Versuch war, über das Ende einer Partition hinaus zu lesen, könnte das auch im Kernel-Log erscheinen.
Um dd dazu zu bringen, nach einem I/O-Fehler weiterzumachen, um die lesbaren Teile zu lesen, die auf den Fehler folgen, verwenden Sie
dd if=... of=... conv=noerror bs=128k # it doesn't get any faster beyond about 128k, because of L2 cache size
(Wie in den Kommentaren zum OP erwähnt, ddrescue hat dies und mehr. conv=noerror wurde nach ddrescue zu GNU dd hinzugefügt existiert, IIRC.)
Wenn Sie dort weitermachen möchten, wo Sie aufgehört haben, können Sie den seek verwenden und skip Optionen, mit conv=notrunc .
Wenn Sie wirklich sehen wollen, wie weit dd fortgeschritten ist, sehen Sie sich die Dateiposition seiner stdin an:
cat /proc/$(pidof dd)/fdinfo/0 # dd opens its infile as fd #0
(oder ls -lh die Größe der Ausgabedatei). Das Kopieren einer ganzen Festplatte voller Daten 2 zusätzliche Male, indem man sie durch etwas leitet, erscheint mir albern, als würde es Ihren Computer nur ein kleines bisschen langsamer machen als für die Stunden, die die Kopie dauern wird.
Oder zumindest tun:
dd if=... conv=noerror bs=128k | pv > Storage.img