Normally I would suggest a solution such as "hook up the 2nd hard drive using an external enclosure, boot from a linux CD, then use a command such as dd if=/dev/sda of=/dev/sdb bs=1G
, but since you want to use the same technique for work, I have what may be a better solution.
All of my servers and laptops get imaged at work using Clonezilla. There are two ways of using it...one of which uses a dedicated server and is probably overkill for you, and another which utilizes a boot CD and external hard drive.
The idea is that you boot in with the Clonezilla CD and have a largish (bigger than the source drive) external USB drive. Clonezilla walks you through making an image of the existing drive, after which you power down the machine, replace the drive, then boot back into Clonezilla, and it walks you through restoring the data.
This gives you the opportunity to A) put the image on a bigger drive, and B) retain a backup of the data.