使用fabric.operations.put()创建远程目录
我需要把一些文件上传到一个远程的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/')