【问题标题】:Use FXP in Python在 Python 中使用 FXP
【发布时间】:2020-04-16 11:58:25
【问题描述】:

我创建了一个 Python 脚本,当某种情况发生时,它会将文件从 FTP ServerA 复制到另一个 FTP ServerB。

现在副本是这样工作的:

ServerA -> tmp (temporary folder in the script) -> ServerB

我想升级脚本并删除 tmp 文件夹,所以我想直接从 ServerA 复制到 ServerB。

我看到这个过程可以使用 FXP 协议完成,但我找不到关于在 Python 中使用它的好的指南或文档(我唯一找到的是这个:https://ftpext.readthedocs.io/en/latest/index.html)。

谁能帮我弄清楚它是如何工作的?或者,当然,有更好的方法来做到这一点。目标是不需要临时集结区。

【问题讨论】:

    标签: python ftp ftplib


    【解决方案1】:

    使用FTPExt 类,代码应该是这样的:

    source = FTPExt("source.example.com", 21, "source_user", "source_pass")
    target = FTP("target.example.com", "target_user", "target_pass")
    
    source.fxp_to("/source/path/file", target, "/target/path/file")
    

    虽然如果你不需要任何花哨的功能,你也不需要FTPExt,ftplib 中的ftpcpFTPExt.fxp_to 的作用相同:

    ftpcp(source, "/source/path/file", target, "/target/path/file")
    

    但是! – 大多数 FTP 服务器不支持 FXP。你知道你的两个服务器是否都这样做吗?您应该在尝试实施之前找出答案。 – 如果您的服务器不支持 FXP,您仍然可以通过从一个连接流式传输到另一个连接而无需中间文件。

    【讨论】:

    • 我正在使用两个用 Fauria (hub.docker.com/r/fauria/vsftpd) 的 docker 镜像创建的 vsftpd 服务器。我可能会在明天尝试您的解决方案,因为现在我正在研究另一种实现方式。无论如何,非常感谢您的回答!
    • 我认为我使用的 ftp 服务器不支持 FXP 但我没有花太多时间,因为我选择使用 SSH 实现不同的解决方案
    • 哦,是的,对不起,我忘了这样做:-)
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 2016-12-05
    • 2016-07-26
    • 1970-01-01
    • 2016-08-03
    • 2020-12-15
    • 2016-10-23
    • 2013-04-07
    相关资源
    最近更新 更多