【问题标题】:Speeding up lftp mirroring with many directories使用多个目录加速 lftp 镜像
【发布时间】:2016-04-16 16:25:48
【问题描述】:

我正在尝试将公共 FTP 镜像到本地目录。当我使用wget -m {url} 时,wget 会很快跳过许多已经下载的文件(并且不存在更新的版本),当我使用lftp open -u user,pass {url}; mirror 时,lftp 在决定是否下载之前为每个文件发送MDTM文件与否。在 50,000+ 个目录中有 200 万+ 个文件,这非常慢,此外我收到无法获取目录 MDTM 的错误消息。

在手册中它说使用set sync-mode off 将导致一次发送所有请求,因此lftp 不会等待每个响应。当我这样做时,我从服务器收到错误消息,说来自我的 IP 地址的连接太多。

我尝试先运行 wget 以仅下载较新的文件,但这不会删除从 FTP 服务器中删除的文件,因此我跟进 lftp 删除旧文件,但是 lftp仍然在每个文件上发送 MDTM,这意味着这种方法没有任何优势。

如果我使用set ftp:use-mdtm off,那么lftp 似乎只是再次下载所有文件。

有人可以建议具有大量目录/文件的lftp 的正确设置(特别是这样它会跳过未更新的目录,就像 wget 似乎做的那样)?

【问题讨论】:

    标签: ftp wget lftp


    【解决方案1】:

    在第一次调用时使用set ftp:use-mdtm off 和mirror --ignore-time 以避免重新下载所有文件。

    您也可以尝试升级 lftp 和/或使用set ftp:use-mlsd on,在这种情况下,lftp 将从 MLSD 命令输出中获取精确的文件修改时间(前提是服务器支持该命令)。

    【讨论】:

    • 感谢您的评论。我正在使用 OSX,brew install lftp --upgrade 告诉我我有最新版本 4.6.5。我可以从lftp.yar.ru 看到 4.7 已经发布,所以我会等到它通过 brew 可用。
    • 用set ftp:use-mdtm off 和mirror --ignore-time 试过,程序很快检查了目录。您能否澄清一下,当您说“第一次调用”时,第二次调用的正确设置是什么?
    • 第二次及以后的调用将不需要--ignore-time 选项,因为时间戳已经对应于第一个镜像后显示的时间戳。
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多