最近有个需求,需要将本地目录上传到远程服务器,保持目录层级关系不变。
马上想到用过的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
路径结尾不需要斜杠/