连接FTP和云存储
fstp的Python项目详细描述
FsTPy公司
连接FTP服务器和云存储。在
FsTPy将pyftpdlib(https://github.com/giampaolo/pyftpdlib)的功能和可伸缩性与PyFilesystem2(https://github.com/PyFilesystem/pyfilesystem2)提供的灵活性和抽象性结合在一起。在
它允许在抽象文件系统(本地或云,如S3、Dropbox或googledrive)上构建自定义FTP和FTPS服务器
安装
使用pip从pypi安装:
pip3 install FsTPy
独立服务器
该软件包附带一个可执行服务器,可作为自定义解决方案的起点。脚本要求在包含三个文件的文件夹中执行
- 在凭证.txt包含登录信息的文件
- 在服务器.keySSL服务器的密钥
- 在服务器.crt服务器证书
可以按照指南https://httpd.apache.org/docs/2.4/ssl/ssl_faq.html#selfcert或任何类似的过程生成服务器密钥和证书。在
凭证文件凭证.txt格式如下
在凭证.txt
此文件包含一个以列分隔的列表,其中包括用户名、md5密码哈希、根目录、用户权限权限和可选的登录和注销消息。 可以定义不同的行来定义不同的用户凭证。在
以下示例凭证.txt定义两个具有相同密码(12345)但权限不同的用户。在
^{pr2}$用户权限
权限参数是引用用户的 权限说明如下:
读取权限:
- “e”=更改目录(CWD命令)
- “l”=列表文件(list、NLST、STAT、MLSD、MLST、SIZE、MDTM命令)
- “r”=从服务器检索文件(RETR命令)
写入权限:
- “a”=将数据追加到现有文件(APPE命令)
- “d”=删除文件或目录(DELE、RMD命令)
- “f”=重命名文件或目录(RNFR、RNTO命令)
- “m”=创建目录(MKD命令)
- “w”=将文件存储到服务器(STOR、STOU命令)
- “M”=更改文件模式(SITE CHMOD命令)
- “T”=更新文件上次修改时间(MFMT命令)
运行服务器
安装后,只需提供所需文件系统的pyfilesystem2url就可以运行服务器。在
服务器绑定到0.0.0.0:2121。请参阅“帮助”以更改地址和端口参数:
fstpyd --help
运行S3支持的服务器
要在bucket my bucket上启动S3支持的FTPS服务器:
- 为PyFilesysytem2安装S3扩展:
pip3 install fs-s3fs
- 在所需的S3存储桶上运行服务器:
fstpyd 's3://AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY@my-bucket/'
在本地存储上运行服务器
在给定的根目录上运行服务器:
fstpyd 'osfs://path/to/rootdir/'
原料药
这个API非常简单。它扩展了pyftpdlib库(https://github.com/giampaolo/pyftpdlib)的一些类。fstpyd脚本(https://github.com/desmoteo/FsTPy/blob/main/scripts/fstpyd)可以用来理解基本用法,结合pyftpdlib(https://pyftpdlib.readthedocs.io/en/latest/index.html)和PyFilesystem2(https://docs.pyfilesystem.org/en/latest/index.html)的丰富文档
与最初的pyftpdlib相比,只有几个不同之处。在
授权人
授权人来自fstpy.授权人,DummyAuthorizer和MD5Authorizer重新计算pyftpdlib的相应配置类。 它们接受两个参数,PyFilesystem2格式的文件系统URL和凭证文件的路径。在
DummyAuthorizer需要具有纯密码的凭据文件。 MD5Authorizer需要一个包含MD5密码哈希的凭据文件。在
fromfstpy.authorizersimportMD5Authorizerauthorizer=MD5Authorizer('s3://my-bucket','credentials.txt')
Abstraced文件系统
FsTPy抽象文件系统fstpy.filesystems文件系统应该替换pyftpdlib处理程序的本机抽象的\u fs
fromfstpy.filesystemsimportAbstractedFSfrompyftpdlib.handlersimportTLS_FTPHandlerhandler=TLS_FTPHandlerhandler.abstracted_fs=AbstractedFS
- 项目
标签: