加速lftp镜像与许多目录

时间:2016-04-16 16:25:49

标签: ftp wget lftp

我正在尝试将公共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使用大量目录/文件的正确设置(具体来说,它会跳过未更新的目录,就像wget似乎那样)?

1 个答案:

答案 0 :(得分:3)

使用set ftp:use-mdtm offmirror --ignore-time进行第一次调用,以避免重新下载所有文件。

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