Actually, I suppose that if the target (new) drive is larger than the original, it might be far easier to just clone the drive entirely, and then resize the data partition afterwards.

Eg. cat /dev/sdb > /dev/sda ; hdparm -z /dev/sda

This copies *everything*": MBR (boot stub + partition table), partitions, swap space, etc..

Then later edit the parition table and then resize /dev/sda1

Personally, I would do the file-by-file copy though.