我正在尝试通过 SSH 将以下命令发送到我的所有客户端服务器。我的目的是将文件从主主机的 /home 复制到客户端服务器。文件“myservers”包含我的客户端服务器的完整限定主机名
for i in $(cat myservers);do echo;echo "$i";ssh -i id.sshkey root@"$i"; rsync -avzrph --progress -e "ssh -i /root/.ssh/id.key" root@MASTER_HOST:/home/ /home/;done
但上述命令在我的本地机器上失败了。它确实成功地通过 SSH 连接到客户端主机,但无法运行 rsync 部分。请分享您的想法。
答案1
我不会使用 rsync 路线,而是选择 scp。第一步尝试一下
scp [email protected]:/dir1/dir2/file.ext [email protected]:/dir2/dir2/dir2/
当你确认操作时,你可以使用-C添加压缩以提高性能。
如果您对此感到满意,您可以将其添加到您的 for 循环中。
答案2
我找到了解决方案。
for i in $(cat myservers);do echo "";echo "$i";cat rsync.sh | ssh -i id.sshkey root@"$i";done
rsync.sh 包含的内容。
➤ cat rsync.sh
#!/bin/bash
rsync -avzrph --progress -e 'ssh -o StrictHostKeyChecking=no -i /root/.ssh/id.key' root@MASTER_HOST:/home/ /home/