While the previous answers are technically correct, you should also consider using rsync
instead. rsync
compares the data on the sending and receiving sides with a diff mechanism so it doesn’t have to resend data that was already previously sent.
If you are going to copy something to a remote machine more than once, use rsync
. Actually, it’s good to use rsync
every time because it has more controls for things like copying file permissions and ownership and excluding certain files or directories. In general:
$ rsync -av /local/dir/ server:/remote/dir/
will synchronize a local directory with a remote directory. If you run it a second time and the contents of the local directory haven’t changed, no data will be transferred – much more efficient than running scp
and copying everything every time.
Also, rsync
allows you to recover from interrupted transfers very easily, unlike scp
.
Finally, modern versions of rsync
by default run over ssh, so if scp
is already working, rsync
should pretty much be a drop-in replacement.