There are commercial programs like Acronis True Image that can do that and have good linux support but they are not free. If the source and target drives are the same size you can install the target drive in your box if you have room, boot from a livecd like knoppix, unmount both drives and use the dd command:
# dd if=/dev/hdx of=/dev/hdy
where x is for the source and y is for the target device files.
Edit - Here's a link for Acronis True Image on sale at NewEgg for $29.95 with rebate:
http://www.newegg.com/Product/Produc...82E16832200204
Or, if you don't mind spending the money($49), here's an excellent usb2.0 hard drive enclosure form Apricorn that comes with Acronis True Image bundled with it so you can install your target drive in the enclosure and clone the drive in your box with great ease. This is what I use and I love it. It's another $20 over the cost of True Image alone but you get a great enclosure that can be used for external backup when your not using it for cloning:
http://www.amazon.com/gp/product/B00...Fencoding=UTF8
Note: the Acronis program is a windows program but you can make a bootable cd after the windows install and use it anywhere. Also, Acronis can see and clone all your linux partitions from within windows if you like. The common linux filesystems, ext2, ext3 and reiserfs, are supported but xfs is not supported.