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....
dd has also been talked about on Commodore mailing lists as a tool
to backup hard drives connected to a C64 or 128.
Cheers,
Bryan