使用fabric将文件从一个远程服务器复制到另一个远程服务器?

时间:2013-11-19 20:40:26

标签: python ssh fabric

我需要创建一个可以将文件从一个远程服务器复制到另一个远程服务器的服务。我可以在子shell中运行它:

scp user@host1:/path/to/file/video.mp4 user@host2:/path/to/file

但这似乎不像使用fabric的put命令那样好,它只将本地文件复制到远程机器上。我还需要使用ssh键完全运行,没有密码提示。

2 个答案:

答案 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