使用scp将多个文件发送到多个位置

我需要发送多个文件到多个位置,但找不到正确的方法。

例如,我需要发送file1到位置1和文件2到位置2。 这就是我所做的:

scp file1 file2 root@192.168.1.114:/location1 /location2 

但是这不起作用。 任何build议?

使用单个scp命令无法发送到多个远程位置。 它可以容纳多个源文件,但只能有一个目的地。 只使用scp命令本身,它必须运行两次。

 scp file1 file2 user@192.168.1.114:/location1 scp file1 file2 user@192.168.1.114:/location2 

通过运行一个for循环可以把它变成一个“单线程”。 在bash中,例如:

 for REMOTE in "user@192.168.1.114:/location1" "user@192.168.1.114:/location2"; do scp file1 file2 $REMOTE; done 

scp仍然运行多次,但是循环需要处理迭代。 也就是说,我发现运行一次命令比较容易,点击向上箭头(在大多数环境中恢复原来的命令),只需要改变远程位置并重新发送即可。

你可以把你的scp命令放到.sh文件中,并用用户名和密码在一行中执行scp命令

vim〜/ fileForSCP.sh

 #!/bin/sh sshpass -p {password} scp file1 root@192.168.1.114:/location1 sshpass -p {password} scp file2 root@192.168.1.114:/location2 sshpass -p {password} scp file3 root@192.168.1.114:/location3 ... sshpass -p {password} scp file{n} root@192.168.1.114:/location{n} 

接着:

 chmod 777 ~/fileForSCP.sh ~/fileForSCP.sh 

你不能用单个scp命令来完成。 只需使用scp两次:

 scp file1 root@192.168.1.114:/location1 scp file2 root@192.168.1.114:/location2 

嗨有一个黑客去查询这个查询,因为SCP目标只有一个目标,但警告你这可能有点天真,但完成你的工作。 在两次SCP呼叫之间使用&&操作符

我这样使用它:

 scp fileTosend userName1@IPAddress_1:path/to/folder && scp fileToSend userName2@IPAddress_2:path/to/folder 

这将同时发送数据到两个目的地。

您可以使用sym链接构建所需的远程树结构

ln -s file1 target / location1 / file1 …等

在此之后,您可以使用取消引用副本来推送这些文件

rsync -rL target -e ssh user @ host:/ tmp