dd will fail on the first bad block on the device.
Not if you use conv=noerror,sync. But unless your bs= value equals the
sector size, a bad block will take out some nearby blocks as well when
run that way; you really want something better tuned to imaging disks,
something that in particular steps down to smaller blocksizes when it
gets a read error, so as to recover as much as it can.
Of course, this all presumes that there is a Unix variant for a machine
to which the disks can be attached....
/~\ The ASCII der Mouse
\ / Ribbon Campaign
X Against HTML mouse at rodents.montreal.qc.ca
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B