-
Stai utilizzando i 512 byte predefiniti
dd
misura del blocco. Miglioreresti significativamente le prestazioni utilizzando blocchi di dimensioni maggiori, ad esempio128k
o anche1m
. -
Ci sono due output perché stai eseguendo due
dd
comandi, il primo è il lettore del dispositivo e mostra un errore di I/O. -
Probabilmente stai usando LVM dato il nome del dispositivo che usi:
/dev/Storage/Storage
. Sei sicuro che questo sia l'intero disco e non un sottoinsieme? Usalvdisplay
per capire cosa c'è dietro questo nome di dispositivo.
Guarda nei tuoi messaggi di log del kernel (dmesg
o /var/log/kern.log
) per messaggi più dettagliati dai driver SATA, se si trattava di un errore hardware. Utile anche:smartctl -x /dev/sda
. Se fosse solo un tentativo di leggere oltre la fine di una partizione o qualcosa del genere, ciò potrebbe apparire anche nel log del kernel.
Per fare in modo che dd continui dopo un errore di i/o, per leggere le parti leggibili che seguono l'errore, usa
dd if=... of=... conv=noerror bs=128k # it doesn't get any faster beyond about 128k, because of L2 cache size
(Come menzionato nei commenti sull'OP, ddrescue
ha questo e altro. conv=noerror
è stato aggiunto a GNU dd dopo ddrescue
esisteva, IIRC.)
Se vuoi riprendere da dove eri rimasto, puoi usare il seek
e skip
opzioni, con conv=notrunc
.
Se vuoi davvero vedere quanto è lungo dd, guarda la posizione del file del suo stdin:
cat /proc/$(pidof dd)/fdinfo/0 # dd opens its infile as fd #0
(o ls -lh
la dimensione del file di output). Copiare un intero disco rigido di dati 2 volte in più eseguendo il piping attraverso qualcosa mi sembra sciocco, come se rendesse il tuo computer un po' più lento del necessario per le ore che impiegheranno la copia.
O almeno fallo:
dd if=... conv=noerror bs=128k | pv > Storage.img