【发布时间】:2014-07-25 10:44:57
【问题描述】:
我需要将一些文件放到远程 sftp 服务器上,创建一个新目录来放置它们。有没有办法使用结构来做到这一点? Fabric.operations.put() 看起来无法处理在远程端创建新目录。
【问题讨论】:
我需要将一些文件放到远程 sftp 服务器上,创建一个新目录来放置它们。有没有办法使用结构来做到这一点? Fabric.operations.put() 看起来无法处理在远程端创建新目录。
【问题讨论】:
在调用put()之前运行mkdir:
run('mkdir -p /path/to/dir/')
put('/local/path/to/myfile', '/path/to/dir/')
-p flag 处理创建嵌套目录,请参阅:
-p,--父母
如果存在则没有错误,根据需要创建父目录
更新(仅用于 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/')
【讨论】:
use_sudo=True 传递给put() 有帮助吗?当然不用打电话给run()。
closing() 上下文管理器。我实际上已经对其进行了测试,它对我有用。