I personally use dcfldd, available in Debian repositories.
DD defaults to cloning sector per sector when a BS count is not included in the command, dcfldd defaults to cloning block per block which is faster if you don't need the rootkits and other forms of malware that could be installed in slack space. You can also give a BS count of 512 to dcfldd and it will clone sector for sector like dd does by default. Only thing different with dcfldd is that you get to observe the progress and you'll know more or less when it will be done, dd gives you a blank prompt giving one the impression it's frozen, and you may get nervous and shut it down prematurely.
A better dd command would be:
dd if=/dev/sda of=/dev/sdb conv=notrunc,noerror
Most file systems use blocks or clusters to write data to, which can be 8 or more sectors per block. If a file is only 510 bytes in size, it will be written to one sector of the entire 8 sector block, the rest of the unallocated space/sectors is "slack space" containing nothing usable. DD will default to cloning all 8 sectors where dcfldd will only clone the data in the one sector and not the slack space.