I wish to clone a large disk (a 500GB SSD, for what it's worth), and I am leaning toward using
cat, as suggested by Gilles here. But what gave me pause is that I do not really know what
cat does upon read errors. I know how
dd behaves in these cases, i.e. the command
dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
does not stop for errors on read, and pads the read error with zeroes (the
sync option) so that data stays in sync. Unfortunately, it does so by padding the zeroes at the end of the block to be written, so that a single error in an early 512-byte read messes up the whole 64K of data (even worse with larger, faster block sizes).
So I am wondering: can I do better/differently with
cat? Or should I just move on to Clonezilla?