使用许多目录加速 lftp 镜像

Speeding up lftp mirroring with many directories

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

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

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

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

有人可以为 lftp 和大量 directories/files 提出正确的设置吗(具体来说,它会跳过未更新的目录,就像 wget 似乎做的那样)?

首次调用时使用 set ftp:use-mdtm offmirror --ignore-time 以避免重新下载所有文件。

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