scp or sftp copy multiple files with single command
I'd like to copy files from/to remote server in different directories. For example, I want to run these 4 commands at once.
scp remote:A/1.txt local:A/1.txt
scp remote:A/2.txt local:A/2.txt
scp remote:B/1.txt local:B/1.txt
scp remote:C/1.txt local:C/1.txt
What is the easiest way to do that?
Solution 1:
Copy multiple files from remote to local:
$ scp [email protected]:/some/remote/directory/\{a,b,c\} ./
Copy multiple files from local to remote:
$ scp foo.txt bar.txt [email protected]:~
$ scp {foo,bar}.txt [email protected]:~
$ scp *.txt [email protected]:~
Copy multiple files from remote to remote:
$ scp [email protected]:/some/remote/directory/foobar.txt \
[email protected]:/some/remote/directory/
Source: http://www.hypexr.org/linux_scp_help.php
Solution 2:
From local to server:
scp file1.txt file2.sh [email protected]:~/pathtoupload
From server to local:
scp -T [email protected]:"file1.txt file2.txt" "~/yourpathtocopy"
Solution 3:
You can copy whole directories with using -r
switch so if you can isolate your files into own directory, you can copy everything at once.
scp -r ./dir-with-files user@remote-server:upload-path
scp -r user@remote-server:path-to-dir-with-files download-path
so for instance
scp -r [email protected]:/var/log ~/backup-logs
Or if there is just few of them, you can use:
scp 1.txt 2.txt 3.log user@remote-server:upload-path