There's a tool built into Linux called DD. In this particular case, that would be your best bet. It would even clone Windows as well! I'd highly recommend that you use the command DD_Rescue. The rescue version of DD will detect and repair any broken blocks (that you may not even have known about!) so that you have a completely un-corrupted installation on a new drive.
The usage is as follows:
dd_rescue [input] [output]
dd_rescue /dev/hda /dev/sda
dd_rescue /dev/sda /dev/sdb
I'd also recommend to check out SysRescueCD. SysRescueCD's DD_Rescue application has a nice progress bar and ETA which is always nice. You can get that at http://www.sysresccd.org/Main_Page
. You can burn it to a CD, copy it to a flash drive or even set it up on a PXE server.