Duplicating a system partition from a SSD with bad sectors.

Tools you'll need:

Linux Mint 17.1 x64 Live Boot Disk
Windows 7 x64 install disk

You'll need to use Linux. Attempting to use windows will upset the copy process as windows tends to care about little things like permissions. Since the new drive is smaller, DD etc won't work. You can look into Clonezilla, but I'd do this by hand. For my examples, I'm using a Live Boot Disk (LBD); Mint 17.1.

Part 1. Now I'm going to start using terms you might not know. UUID is the Universally unique identifier. All partitions have one and windows uses this as part of it's activation. Our first step if you don't want to lose activation is to keep the same UUID.

Please note that most of these instructions are destructive. You can lose data if you are not careful. Make sure you are on the correct drive at every step. I will not be held responsible if you end up wiping your data filled drive.

The LBD comes with a tool called gparted. In order to clone our UUID, you need to select the disk that you want to copy. Resize it so that the partition is small enough to fit on the new disk. Then right click and copy it. Create a new table on the new disk by selecting the new disk in the combo box, then selecting Device->Partition Table, this will remove all partition information from the drive. Then right click it in the partition window and select paste. This will attempt to make a copy of the partition. Even if it fails, you should still have the correct partition layout.

Make sure to set the correct flags, such as boot. You might have two partitions on the drive, in which case you copy the boot partition first.

Now if the copy fails during the copy, you'll need to use rsync. rsync is a sort of archival backup tool. Please note you will probably corrupt your recycle bin and possibly break any hardlinks you have on the drive.

Mount both drives. I suggest using gparted to get the right mount points. They look like /dev/sdA# where A is a letter and # is a number. You can see it on the gparted screen.

In my test case, /dev/sda1 is my old drive and /dev/sdb1 is my new drive. For whatever reason, I only have a single partition. I'm doing this all as super user. Remember, be careful.

sudo su
cd /media
mkdir OldDrive
mkdir NewDrive
mount /dev/sda1 OldDrive
mount /dev/sdb1 NewDrive
rsync -avP /media/OldDrive /media/NewDrive

Remove all harddisks from the machine except the new ssd drive.

Now put the windows 7 disk in the cdrom drive and boot it. Select your language and then on the next screen click the repair link. This will scan the disk, see that something is wrong and fix it.

This whole process will copy all the files from the old drive to the new drive and should preserve any links, but I've only done this once in a real case and it corrupted my recycle bin. Strangely it didn't break my activation despite me not doing step one for the UUID. If you have two partitions you'll end up doing this with both partitions.

You can also try using Acronis, but since I can't fake a bad sector I can't test that for you.