我想复制文件从/到远程服务器在不同的目录。 例如,我想一次运行这4个命令。
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
最简单的方法是什么?
我想复制文件从/到远程服务器在不同的目录。 例如,我想一次运行这4个命令。
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
最简单的方法是什么?
当前回答
不使用scp更简单:
tar cf - file1 ... file_n | ssh user@server 'tar xf -'
这还允许您执行一些操作,例如压缩流(-C)或(自OpenSSH v7.3以来)-J,以便随时在一个(或多个)代理服务器之间跳转。
通过将公钥对应到~/来避免使用密码。Ssh /authorized_keys(在服务器端)与Ssh -copy-id(在客户端)。
也张贴在这里(有更多细节)和这里。
其他回答
scp remote:"[A-C]/[12].txt" local:
从远程复制多个文件到本地:
$ scp your_username@remote.edu:/some/remote/directory/\{a,b,c\} ./
从本地复制多个文件到远程:
$ scp foo.txt bar.txt your_username@remotehost.edu:~
$ scp {foo,bar}.txt your_username@remotehost.edu:~
$ scp *.txt your_username@remotehost.edu:~
从远程复制多个文件到远程:
$ scp your_username@remote1.edu:/some/remote/directory/foobar.txt \
your_username@remote2.edu:/some/remote/directory/
来源:http://www.hypexr.org/linux_scp_help.php
scp -r root@ip-address:/root/dir/ C:\Users\your-name\Downloads\
使用-r可以下载远程服务器的dir目录下的所有文件
在我的案例中,有太多名称不相关的文件。
我最后用了,
$ for i in $(ssh remote 'ls ~/dir'); do scp remote:~/dir/$i ./$i; done
1.txt 100% 322KB 1.2MB/s 00:00
2.txt 100% 33KB 460.7KB/s 00:00
3.txt 100% 61KB 572.1KB/s 00:00
$
你可以使用-r开关复制整个目录,所以如果你可以把文件隔离到自己的目录中,你可以一次复制所有的文件。
scp -r ./dir-with-files user@remote-server:upload-path
scp -r user@remote-server:path-to-dir-with-files download-path
例如,
scp -r root@192.168.1.100:/var/log ~/backup-logs
或者如果只有几个,你可以用:
scp 1.txt 2.txt 3.log user@remote-server:upload-path