将单个文件 scp 到多个位置

将单个文件 scp 到多个位置

您可以scp使用同一个命令将文件发送到多个位置吗?

例如:

scp file.txt [email protected]:, [email protected]:

或者创建一个包含所有主机的 bash 脚本并且只将文件作为参数是否更实用?

答案1

假设您有一个文件 ( destfile.txt) user@host,其中有 -values,每行一个。那么您可以这样做:

while IFS= read -r dest; do
  scp ourfile.txt "$dest:remote/path/"
done <destfile.txt

答案2

看起来像是 parallel-scp 的工作(名词)(吨)- 这实现了一组命令,允许 scp 命令同时在多个系统上运行。它将允许将文件并行复制到一组机器上。

答案3

cat file.txt | tee >(ssh [email protected] "cat > file.txt") \
                   >(ssh [email protected] "cat > file.txt")

tar cz file1 file2 file3 | tee >(ssh [email protected] "tar xz") \
                               >( ... )

答案4

另一种替代方法(也是一行代码)是使用 pdsh 连接到每个目标节点并从那里触发获取:

pdsh -w^destfile.txt scp hostname:/path/to/file /path/to/destfile

这当然需要更多信息(本地主机)和不同的用户权限,但您可以避免在 bash 中循环并使用间接读取文件。

相关内容