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.

Tags:

Scp