You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fabric v2中如何使用get方法从多主机获取文件?

解决Fabric v2多主机下载文件覆盖问题

当然支持啦!你遇到的问题是因为默认情况下,ctx.get() 会把所有主机的文件都下载到本地同一个路径,后面主机的文件会直接覆盖前面的。要保留每台主机的独立文件,只需要在下载时给文件加上对应主机的标识即可。

修改你的fabfile代码如下:

from invoke import task

@task
def getresult(ctx):
    # 用当前主机名重命名本地文件,避免多主机文件互相覆盖
    local_filename = f'result_{ctx.host}.txt'
    ctx.get('result.txt', local=local_filename)

执行原命令 fab -H host1 host2 host3 getresult 之后,本地就会生成 result_host1.txt、result_host2.txt、result_host3.txt 三个独立文件,分别对应每台主机的结果文件。

Fabric v2确实没有在基础API里自动处理多主机文件的重命名逻辑,它更偏向让开发者灵活控制文件路径;而Fabric v1可能默认会将文件下载到以主机名命名的子目录中,或者有类似的自动区分机制。不过v2通过ctx.host就能轻松获取当前执行任务的主机名,手动实现区分也很简单。

内容的提问来源于stack exchange,提问作者Tom Cornebize

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:15:13