You could use rsync.
rsync -aP ./from/dir/ /some/other/directory/
You can even copy over ssh
rsync -aP ./from/dir/ username@remotehost:/some/other/directory/
There are various flags you can use:
-a, --archive # archive (-rlptgoD)
-l, --links # copy symlinks as links
-p, --perms # preserve permissions
-t, --times # preserve times
-g, --group # preserve group
-o, --owner # preserve owner
-D # --devices --specials
--delete # Delete extra files
You may want to add the -P option to your command.
--partial # By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the --partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster.
-P # The -P option is equivalent to --partial --progress. Its purpose is to make it much easier to specify these two options for a long transfer that may be interrupted.
Rsync man page