最近有个需求,需要将本地目录上传到远程服务器,保持目录层级关系不变。
马上想到用过的Paramiko模块,但发现Paramiko只支持文件上传,而不支持目录上传。
Paramiko是一个用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
Paramiko支持Linux、Solaris、BSD、MacOS X、Windows等平台通过SSH从一个平台连接到另外一个平台。利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输。
一番尝试实现后,在此记录下,代码如下:
1 | # coding=utf-8 |
Note:
REMOTE_HOST如果设置为localhost,需要将本机公钥写入authorized_keys$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys否则会出现
paramiko.ssh_exception.BadAuthenticationType: ('Bad authentication type', ['publickey']) (allowed_types=['publickey'])错误,可通过$ ssh -v host查找具体原因。LOCAL_FOLDER、REMOTE_FOLDER路径结尾不需要斜杠/