The problem you have is that scp/rsync etc are not preserving the
holes. All the empty blocks are being allocated on the disk and take
up real space.

cp can handle such files, read the man page about sparse files.
Another option i have used in the past it to create a cpio archive
using --sparse, copy the cpio archive over and then unpack it, again
with --sparse.

      

When atempting to use cpio --sparse, I get an error that sparse cannot be used when creating a file. How would you include sparse in the cpio command line?

I discovered rsync uses a sparse flag and it seemed to be working fine but then erred out at the end as in other attempts:

rsync -av --progress --sparse /home/raymond/LV2/NLS-Storage/NLS-Storage-flat.vmdk /home/raymond/sdf/NLS-Storage/NLS-Storage-flat.vmdksending incremental file list
NLS-Storage-flat.vmdk
1,610,924,554,240 100%  236.33MB/s    1:48:20 (xfr#1, to-chk=0/1)
rsync: read errors mapping "/home/raymond/LV2/NLS-Storage/NLS-Storage-flat.vmdk": Input/output error (5)
WARNING: NLS-Storage-flat.vmdk failed verification -- update discarded (will try again).