Here is how it is done.
(1) Always buy a disk bigger than the source you want to clone.
(2) Connect the new disk to the PC.
(3) Boot up a Live CD (any one will do, my favourite is Kanotix), use it to check the disk status by command "fdisk -l", which will list all the partitions of every disk in the PC. If the new disk is connected correctly it will show up there but without any partition. That is normal.
(4) Assuming the old source disk is hda and the new target disk is hdb the cloning is one line of command in terminal mode (date statement to show time only and can be omitted, the bs parameter instructs dd the size of each transfer and 32768 is one complete track of 64 times 512 bytes)
Code:
dtate
dd if=/dev/hda of=/dev/hdb bs=32768
date
(5) Make tea or go out to play and come back half an hour or one hour depending on how fast is your computer. Mine clones 25Gb in 7 minutes transferring at 58Mb/s yesterday. You can calculate the time taken between the two "date" statement.
Warning in the dd command if=input file and of=output file, make absolutely clear "if" is your source.
There is no need to partition nor to format. The target disk will boot same as the source. The new disk's extra space, for being bigger than the source disk, is unallocated. You cannot clone a bigger disk into a smaller disk.
More information in the first link of my signature.
dd is a hardware copying sector by sector (512 bytes per sector). It does not deal with the filing systems so will be successfull in any system (Dos, Windows, Linux, Solaris, BSD and in any combination) In dd you get a mirror image of the original. No more and no less but exactly a 100% clone.