How to copy all files from a directory to a remote directory using scp?
scp has the -r argument. So, try using:
$ scp -r ~/local_dir [email protected]:/var/www/html/target_dir
The -r argument works just like the -r arg in cp, it will transfer your entire folder and all the files and subdirectories inside.
If your goal is to transfer all files from local_dir
the *
wildcard does the trick:
$ scp ~/local_dir/* [email protected]:/var/www/html/target_dir
The -r
option means "recursively", so you must write it when you're trying to transfer an entire directory or several directories.
From man scp
:
-r
Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal.
So if you have sub-directories inside local_dir
, the last example will only transfer files, but if you set the -r
option, it will transfer files and directories.
Appending /.
to your source directory will transfer its contents instead of the directory itself. In contrast to the wildcard solution, this will include any hidden files too.
$ scp -r ~/local_dir/. [email protected]:/var/www/html/target_dir
Credit for this solution goes to roaima, but I thought it should be posted as an actual answer, not only a comment.