我正在尝试将公共FTP镜像到本地目录。当我使用wget -m {url}
时,wget会很快跳过许多已经下载的文件(并且不存在更新的版本),当我使用lftp open -u user,pass {url}; mirror
时,lftp
会为每个文件发送MDTM
,然后再决定是否下载该文件。在50000多个目录中有200多万个文件,这非常慢,此外我还收到无法获得目录的MDTM的错误消息。
在手册中,它说使用set sync-mode off
将导致同时发送所有请求,这样lftp
就不会等待每个响应。当我这样做时,我会收到来自服务器的错误消息,说我的IP地址连接太多。
我试着先运行wget
,只下载较新的文件,但这并不能删除从FTP服务器上删除的文件,所以我用lftp
删除了旧文件,但lftp
仍然在每个文件上发送MDTM,这意味着这种方法没有优势。
如果我使用set ftp:use-mdtm off
,那么lftp
似乎只是再次下载所有文件。
有人能为具有大量目录/文件的lftp
建议正确的设置吗?(特别是,让它跳过未更新的目录,就像wget似乎做的那样)?
使用set ftp:use-mdtm off
和mirror --ignore-time
进行第一次调用,以避免重新下载所有文件。
您也可以尝试升级lftp和/或使用set ftp:use-mlsd on
,在这种情况下,lftp将从MLSD命令输出中获得精确的文件修改时间(前提是服务器支持该命令)。