从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
相关产品推荐
相关产品推荐

