如何在任何点上恢复ftp下载?(使用shell脚本,wget选项)

9
我想从FTP服务器上分块下载一个巨大的文件,每个块的大小为50-100MB。在每个点上,我希望能够设置我想要的块的“起始”点和长度。我不会将“之前”的块保存在本地(即我不能要求程序“恢复”下载)。
最好的方法是什么?我主要使用wget,但是否有其他更好的选择?

我真的对预先构建/内置函数比使用库来实现此目的更感兴趣...由于wget/ftp(我认为)允许恢复下载,所以我不认为会有问题...(但我无法从所有选项中找出答案!)


我不想在本地保存整个巨大的文件,只想分块处理... 告诉大家一声 - 我正在研究 重新连接后继续FTP下载,看起来很有趣...


我强烈推荐使用Python的ftplib库,它是一个内置库,用于管理FTP连接。如果我以后有更多时间,我会留下答案。(http://docs.python.org/library/ftplib.html) - msemelman
3个回答

21

使用wget命令时,请加上-c选项

-c选项说明

从man手册中提取的内容如下:

-c / --continue

继续获取已经部分下载的文件。当你想要完成由之前的Wget实例或其他程序开始的下载时,这非常有用。例如:

               wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
如果当前目录中有一个名为ls-lR.Z的文件,Wget会假定它是远程文件的第一部分,并要求服务器从等于本地文件长度的偏移处继续检索。

2
太棒了!我有一个35GB的Windows镜像FTP下载,在33GB时被中断,但这个工具成功地恢复了它!如果你需要指定网站认证,可以使用“--ftp-user=<user> --ftp-password=<passwd>”。 - sxc731

4

如果您想使用命令行curl,那么请看下面:

curl -u user:passwd -C - -o <partial_downloaded_file> ftp://<ftp_path>

(在匿名访问时,请忽略-u user:pass参数)


1

我建议您使用libcurl与您选择的编程语言进行接口交互。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接