您可以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
答案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 中循环并使用间接读取文件。