连接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服务器:

  1. 为PyFilesysytem2安装S3扩展:
pip3 install fs-s3fs
  1. 在所需的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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在java中调用Paint组件方法   多层次POM中的java覆盖依赖项/插件管理   java模式识别   JavaSpringMVC+Log4j2定义了Log4j2。未标识非类路径位置中的属性文件   java我们如何将IntelliJ IDEA中的maven和gradle项目与源代码浏览支持集成?   Maven mvn exec:java在Windows上工作,但不是Ubuntu 20   java在Jaxb2Marshaller上使用带有packagesToScan属性的JAXBElement时没有端点适配器   java删除方法和节点   java如何为某些场景创建正则表达式模式   java如何通过gridView中的intent()传递ArrayList数据。setOnItemClickListener()   java UnsupportedClassVersionError 1.7/1.5   java为什么JVM参数是http。tomcat servlet没有使用proxyHost?   java将ArrayList从字母顺序排序到最频繁/最不频繁   java动态字段列表迭代   java如何将字节转换为位?   hadoop java。mapreduce作业中的lang.NullPointerException   javasocketIO无法与Android中的LocationListener一起使用   java在卸载时清除内部存储   java池回收错误2个精灵同时碰撞到一个精灵