First of all, cp -a is not appropriate in this situation. What you want to do is CLONE the partition. Here we will use the 'dd' tool but there are others available with GUI etc if you prefer eg Clonezilla.
Connect both drives to your computer. Make sure the new drive is the same size or larger than the partition you want to copy. It does not need to be formatted or anything, just leave it raw.
Boot a live DVD/USB and run:
sudo blkid
This will list all the drives and partitions on your computer. Make a careful note of the partition you want to copy, eg. /dev/sda1 and the new blank drive eg. /dev/sdb (no number).
Use dd to clone your partition to the new drive - be very careful, this can destroy your data if you type the wrong command! 'if' is the (old) partition you want to copy. 'of' is the new (blank) drive. Don't get these mixed up! So for example:
sudo dd if=/dev/sda1 of=/dev/sdb status=progress
You can add bs=4096 if you want it to go faster, but I prefer not to. Now go away and do something else because it will take a while.
When it's done (you are still in the live session at this point) you can add a swap partition to the new drive if you want to, using gparted, then install/run Boot Repair as below - this will install a nice fresh Grub onto the drive of your choice (overwriting any existing one) and find any OS on any drive connected:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Reboot and enjoy. Note: you will want to make sure your BIOS is booting the drive with the fresh Grub on it.
~~~~~~~~~~
UPDATE: Sorry for the late reply. So yes, if you haven't already done it by now, what you said before is what you want to do. Create an empty ext4 partition of about 20Gb on the new drive, to install the new Ubuntu system. Clone the /home partition from your old drive onto the new one (make sure you have enough space), then finally add the swap partition. You will then be ready to install the system on the new drive from your USB session - select the 'something else' option during install, choose to install / on the empty 20Gb partition WITH formatting, select the new cloned partition for /home WITHOUT formatting and place Grub on the new drive (see the dropdown selection at the bottom, the new drive should already be selected by default) and that should do the trick.
Bear in mind that when you're done, Grub should show Ubuntu x2 and Windows x1 so make sure you're booting the correct one.
sudo update-grub
once the new OS is ready. – user68186 May 12 '18 at 23:38