![如何将文件从一台服务器复制到两台不同的服务器](https://linux22.com/image/78121/%E5%A6%82%E4%BD%95%E5%B0%86%E6%96%87%E4%BB%B6%E4%BB%8E%E4%B8%80%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%8D%E5%88%B6%E5%88%B0%E4%B8%A4%E5%8F%B0%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我需要使用 shell 脚本为两个不同的服务器复制文件。我尝试使用 Scp 用户名、IP 地址和文件夹的目标路径
答案1
如上所述这里你可以写一个小shell脚本:
for dest in $(<destinations.txt); do
scp /path/to/the/file_to_copy.txt ${dest}:/remote/path/
done
您只需创建destinations.txt
要填写的文件在每一行目的地user@host
,如下所示:
[email protected]
[email protected]
请注意,目标路径 ( /remote/path/
) 是硬编码在脚本中的,这意味着该路径必须存在于两台服务器中。如果您希望为每个目的地设置专用路径,您可以编辑脚本,删除:/remote/path/
并为 中的每个条目设置它destinations.txt
。
否则你可以看看并行-scp
答案2
通过使用 RSA,您可以编写一个脚本来发送文件,而不会提示您输入密码,您的密码不必输入到脚本中。在您的计算机上运行:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
ssh-copy-id loginname@server1Ip
ssh-copy-id loginname@server2Ip
在你的脚本中:
scp file loginname@server1IP
scp file loginname@server2IP
如果您的登录名和本地用户名相同,您可以省略 loginname@ 部分