Can scp copy directories recursively?
Yup, use -r
:
scp -rp sourcedirectory user@dest:/path
- -r means recursive
- -p preserves modification times, access times, and modes from the original file.
Note: This creates the sourcedirectory
inside /path
thus the files will be in /path/sourcedirectory
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.
That is what the -r
option is for. :)
See the scp man page for more info if needed.