一口气抓取多个文件-到一台目标服务器上的多个目的地?


9

我想将几个目录中的大约六个文件压缩到目标计算机上的相同目录中。

如果不使用ssh密钥,一次调用是否可行?

例如:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files

Answers:


8

在发送方压缩文件,然后在接收方解压缩文件。

tar -cf - /path/to/fileA /anoth/erpath/to/fileB /yet/more/files/* |
ssh -C destination 'cd / && tar -xf -'

您也可以编写一个sftp会话脚本,或将rsync与正确的过滤器一起使用。


如果您只有几个文件,则必须总共复制,而不是我所喜欢的scp -r解决方案。但更多的是更快。
xaedes

4

您可以从多个src复制到一个目标。scp -r src1 src2 ... dst 但不能到多个目的地。

一种选择是将所有目录复制到临时目标目录。然后将它们移回。


这和tar-ssh解决方案一样好。另外,它更容易键入/记住。它还可以为您提供反馈信息。但是,如果要复制tar-ssh的文件很少,则速度会快得多,因为它只需要传输一个大文件,而scp-r会单独复制每个文件,因此开销更大。
xaedes 2013年

1

pssh包装。它具有parallel-scp命令。-h选项允许您为文本文件提供多个主机作为目标主机(每行一个)。


每次A的文件转到B时,都需要输入密码来解决吗?
沃伦2010年

2
为此,我正在使用ssh-add。您一天开始时只键入一次凭据。然后,您将自动登录。
Casual Coder 2010年

0

我使用以下命令将多个文件复制到多个目标。

scp -r src {1,2,3}目标{1,2,3}

该命令的行为类似于以下命令集

scp -r src1 dest1

scp -r src1 dest2

scp -r src3 dest2

scp -r src3 dest3


当我尝试时不起作用。ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directory它希望目的地是目录。
sudo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.