Typically I'd just manually duplicate the partition layout on the target disk (as close as is this case) and then rsync all of the files over between disks or across a local network connection. And the you'll need to reload the bootloader using it's tools (grub-install, lilo, etc) because of the different partition tables.
If you were going from smaller to larger disks you could use dd and skip all of the rest of this, but to go from larger to smaller you have to be a bit more careful. Cat puts (concatenates) files (or things like files) together and dd duplicates disks.
You can use which ever fdisk you prefer from sfdisk and cfdisk up through qt-parted (so can use the mouse!). rsync arguments you want to use are definitely -a and probably -v and --progress to give some status as it goes. Mind your trailing slashes and use --dry-run in rsync until you are sure you have everything lined up right :)
If you need a bootable environment for this sort of work I can recommend sysrescd as it has all of this stuff available in a bootable cd image. There are plenty of others to choose from as well.