使用fabric.operations.put()创建远程目录

5 投票
1 回答
5555 浏览
提问于 2025-04-18 14:42

我需要把一些文件上传到一个远程的sftp服务器上,并且想要在服务器上创建一个新的文件夹来放这些文件。请问有没有办法用fabric来做到这一点?看起来Fabric.operations.put()这个方法好像不能直接在远程服务器上创建新的文件夹。

1 个回答

8

在调用 put() 之前,先运行 mkdir 命令:

run('mkdir -p /path/to/dir/')

put('/local/path/to/myfile', '/path/to/dir/')

-p 选项 可以处理创建嵌套目录的问题,具体如下:

-p, --parents

如果目录已经存在就不会报错,必要时会自动创建父目录


更新(适用于仅通过 sftp 访问的情况)。

使用 SFTP.mkdir()

from contextlib import closing
from fabric.sftp import SFTP

ftp = SFTP(env.host_string)
with closing(ftp) as ftp:
    ftp.mkdir('/path/to/dir/', use_sudo=False)

put('/local/path/to/myfile', '/path/to/dir/')

撰写回答