【问题标题】:How to preserve file mtime when uploading with Python ftplib使用 Python ftplib 上传时如何保留文件 mtime
【发布时间】:2021-10-11 14:46:50
【问题描述】:

我正在开发一个 Python 工具来在我的本地机器和远程服务器之间同步文件。当我将文件上传到服务器时,服务器上该文件的修改时间属性设置为上传过程的时间,而不是我想保留的源文件的mtime。我正在使用 Python ftplib 中的 FTP.storbinary() 来执行上传。我的问题:有没有一种简单的方法可以在上传时保留mtime 或在上传后设置它?谢谢。

【问题讨论】:

    标签: python ftplib filemtime


    【解决方案1】:

    简短的回答:不。 Python ftplib 模块不提供传输文件时间的选项。此外,rfc-959 定义的 FTP 协议没有规定直接获取不设置文件的 mtime。通过SITE 命令在某些服务器上可能是可能的,但这取决于服务器。

    如果可能,您应该能够使用连接对象的sendcmd 方法传递站点命令。例如,如果服务器接受特殊的SITE SETDATE filename iso-8601-date-string,您可以使用:

    resp = ftp.sendcmd(f'SITE SETDATE {file_name} {date-string}')
    

    【讨论】:

    • ftplib.error_perm: 500 'SITE SETDATE' not understood :-(
    • @atarax42 SITE HELPHELP SITE 可以给出服务器可以理解的 SITE 命令列表。
    • 以下SITE命令被识别:QUOTA,以下SITE扩展被识别:RATIOHELPCHGRPCHMOD
    • @atarax42 那我怕你的服务器不支持获取或者设置文件的mtime...
    • 但是FEAT 命令显示了对MFMT(修改修改时间)命令的支持,这正是我所寻找的。我对其进行了测试,并且有效。方案:ftp.sendcmd(f'MFMT {date_string} {file_name}')
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2011-02-24
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多