Copy boot partition from one disk to another

I'm currently facing a hardware HD problem.

One of my HDs has semi-died. It works, kind of; data is being read, but once in awhile now and then, it decides to not respond for a while.
Windows hangs for a few seconds, and sometimes I get an event in my event log saying that the device didn't respond fast enough, or something to that effect.

Now I got a new HD to replace it, but I'd love not to reinstall Windows. Are there any tools that can copy a partition "bit-to-bit" from one HD to another so that I can swap the HDs, and it'll still boot up, and everything will work as if nothing had happened?

I'm assuming I'll be loading both HDs in another machine, so I wouldn't be copying the partition from which the system that copies them has booted up, but I would need it to boot up later my original machine.

Note: the new HDD I bought is bigger than the old one. The old one is 160Gb, and the new one is 500Gb. However, all I care about is a 20Gb partition in the original one, the one that boots up. For the 140Gb partition, I can copy files manually. Or, if a program will copy everything exactly and leave 2 partitions (20 / 140 Gb) in the new HD, and I can create a 3rd one for the rest of the space, that's perfectly fine too.


Solution 1:

Norton Ghost is the traditional commercial tool for this purpose.

Personally, I'm skint, so I use a Linux live CD that has GParted on it. GParted can copy, move and resize partitions, so you can copy the partition to the new disk then resize it to fit.

Solution 2:

If you have a linux system laying around you can use DD, it should be built in.

Solution 3:

SystemRescueDisk can do smart (compression aware, empty spare aware) copies of paritions to local media or network shares. Saved my butt several times.