An understanding of dd command is important but dd itself is a simple operation of
(1) Read the "1" and "0' of the input device and write the same on the output device. The default packet size is one sector of 512 bytes unless specified otherwise by the user with the bs parameter.
(2) The starting and finishing points will be defined by the input device. This is to say from the beginning sector to the last sector of the input device.
This thread was written for the input device as one whole disk holding the original information and the output device is another spare disk larger in size. This is a lot safer than cloning a partition or a file.
As long as the input device is correctly identified then it will only be used for reading purpose. Any error in the rest isn't going to be critical. I have put in Step (3) and (4) in Post #1 purely as extra precautions for 1st and 2nd lines of defense against mistakes in choosing the wrong source disk.
I would recommend before hitting the return key a user should shout at the top of his/her voice for
Code:dd if=/dev/hda of=/dev/sda bs=32768
data dump using input file equal to device hda, output file equal to device sda and block size 32768
The block size can be omitted but the operation takes a lot longer.