You need to make sure permissions and ownership are transferred properly along with devices, and you don't want to copy things like "/proc". Now the easiest way might be to create the new partition (using Linux fdisk) larger than the parition that you want to duplicate and boot from an alternate boot source (rescue disk, Tom's boot disk, knoppix CD etc), then dd the old partition to the new partition:
# dd if=/dev/hda1 of=/dev/hdb1
Then mount "/dev/hdb1" and change the "etc/fstab" to reflect the new partition device names, and you'll also have to update your boot loader to boot the new device name.
Once booted up you can use "resize2fs" command to enlarge the file system.
Having said that, you should also be able to use the "cp" method as TheQuirk mentioned above but you would want to use the "-a" switch instead of the "-r" switch, and you don't want to copy "/proc". It should work (but you also must be root obviously). Both ways are probably an equal amount of work and I would recommend that on either method you boot from an alternate boot disk to do the copy or dd. That will ensure no files are being changed during the copy.
[ September 10, 2002: Message edited by: void main ]