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

从pysftp转Fabric:如何用put方法递归上传目录?

用Fabric递归上传目录到远程服务器

要实现将本地/test目录递归上传到远程/backups目录下(最终得到远程/backups/test),你需要注意Fabric的put方法默认不处理目录递归上传,必须显式指定参数:

正确写法(Fabric v2+)

直接给put方法添加recursive=True参数即可,无需额外封装路径:

c.put(local_path="/test", remote_path="/backups", recursive=True)

关键说明

  • recursive=True是递归上传目录的核心参数,没有这个参数,Fabric只会尝试上传单个文件,遇到目录会报错或跳过
  • 本地路径填/test,远程路径填/backups,Fabric会自动将本地的/test目录完整复制到远程的/backups目录下,正好满足你要的/backups/test结构
  • 不需要用open()或Path()封装本地路径,直接传入字符串路径即可,Fabric会自动识别目录类型

前置检查

确保远程服务器的/backups目录已经存在,如果不存在,先执行创建命令:

c.run("mkdir -p /backups")

你之前尝试的问题

  • 所有写法都缺少recursive=True参数,无法触发递归上传逻辑
  • 使用open(/test)会报错,因为open()只能用于打开文件,不能操作目录
  • 传入Path对象但没加recursive=True,同样无法处理目录递归

内容的提问来源于stack exchange,提问作者David Capone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:12:34