You can use 'cp -ax'; the '-a' flag preserves attributes and links (and is recursive), while the '-x' flag prevents problems if the destination is mounted as a subdirectory on the first file system. See the
manpage for details.
It is wise to avoid using 'mv' where it is a complex copy; failures halfway through can be messy.
If the two file systems are not both POSIX (eg moving ext3 to vfat), you won't be able to preserve the permissions correctly.