I would use rsync.
rsync can give you additional checksums, but the real power is the ability to resume after interruptions. This really helps for large files like VMs.
This really is more a serverfault question - See copying-a-large-directory-tree-locally-cp-or-rsync.