Question: My current situation is:

* One hard disk
* Dual boot Ubuntu 11.04 and Windows 7. Partitions:
	+ 100MB Windows System thingy
	+ 144GB Main Windows
	+ 160GB Ubuntu
	+ 4GB Swap
	+ 12GB System Restore stuff

Now I want to install an 80GB SSD and move Ubuntu to it. AFAIK I need to:

* Shrink the 160GB Ubuntu partition to 80GB
* Copy it over to the SSD
* Change `fstab` to mount the SSD as `/`

How do I do the second? And what do I need to do about Grub?

Answer: 
I was able to do this migration successfully thanks to @psusi's instructions, however I observed one "gotcha."

After installing Grub on the new SSD, it still wouldn't boot - it was looking for the ramdisk image using the UUID of my old OS drive, which I had removed. Using the --recheck option fixed this:

```
$ grub-install --recheck /dev/ssd

```

This encourages grub to re-scan the BIOS, identify the new drive, and presumably use its UUID when passing the "root=" parameter to the kernel.
Considering your HDD is /dev/sda and SSD is /dev/sdb and partitions are properly sized, you may use simple cp:

```
cp /dev/sdaX /dev/sdbY

```

Where X and Y are corresponding partition numbers.

However this method will copy 80GB of data and all sectors on your SSD will be marked as "occupied" initially.