我需要创建一个可以将文件从一个远程服务器复制到另一个远程服务器的服务。我可以在子shell中运行它:
scp user@host1:/path/to/file/video.mp4 user@host2:/path/to/file
但这似乎不像使用fabric的put命令那样好,它只将本地文件复制到远程机器上。我还需要使用ssh键完全运行,没有密码提示。
答案 0 :(得分:4)
您可以使用get
从host1获取文件,然后使用put
将其推送到host2。
对于密钥,如果私钥不在默认位置,您可以使用-i
标记specify it,例如:
fab -i /path/to/priv/key
或将其放入fabfile:
from fabric import env
env.key_filename = '/path/to/priv/key'
答案 1 :(得分:3)
还有可能使用agent forwarding(从结构1.10开始,带选项-A)。在这种情况下,您只需从host1
运行以下命令即可scp /path/to/file/video.mp4 user@host2:/path/to/file
或来自host2:
scp user@host1:/path/to/file/video.mp4 /path/to/file