whats the best way to transfer
everything onto the new drive so that
it behaves just like the old one.
You can use any software that can make a "drive image". Popular choices include:
- Norton Ghost (proprietary)
dd (part of just about any Linux live CD)
- Clonezilla (free)
There's a fairly exhaustive list on Wikipedia.
And are there any "gotchas".
Yes, a few.
- Make really, really sure you are cloning from the right to the right partition. Everything on the "target" partition will be irretrievably lost, so if you give the wrong target partition, you may trash everything. Particularly important for the command-line programs like dd.
- Different OSes have different degress of tolerance for changes in the partition layout due to the imaging. If e.g. you clone a partition, and it was partition 1 on the old drive, but is partition 3 on the new one, Windows e.g. may not like it (i.e. fail to boot). Linux is more lenient in that respect, but with Windows you should copy all partitions to the new drive with identical layout. Once everything works, you can partition the remaining free space of the new install as usual.
- Finally (not a problem in your case): You cannot (easily) shrink or grow partitions while imaging, so the new partition will need the exact amount of free space like the old partiton. This applies no matter how full the partition's file system really is. So if source and target disk are not the same size, you may have to do some resizing.
I'd recommend you use Clonezilla to copy your whole harddisk to the new drive; then it should boot from there. Then partition the new drive's remaining space.
Finally, if your HD is really dying, a normal imaging program might abort with a read error. In that case you need something like
ddrescue, see e.g. How can I recover a crashed hard drive?