gpt4 book ai didi

windows - 下载很多小文件

转载 作者:可可西里 更新时间:2023-11-01 09:32:46 27 4
gpt4 key购买 nike

我需要一种从文本文件中的 URL 列表下载大量(数百万)小文件的有效方法。我希望使用新名称(来自另一个文本文件或任何地方)保存文件,因为 URL 很长,动态生成的乱码,并且会导致最大文件名长度等问题。

我首先尝试了 wget 但受到以下事实的限制:您可以从文本文件中指定 URL 列表,例如:

wget.exe -i myURLlist.txt

或用新名称重命名单个下载的文件,例如:

wget.exe -O myfilename1.jpg http://www.foo.com/longgibberish976876....2131.jpg

但不是两者兼而有之。因此,我的脚本必须为每个文件单独执行 wget(使用第二种方法)。由于每次都重新启动 TCP 连接和其他开销,这非常慢(如果您在文本文件中传递 URL 列表,wget 会尝试重新使用连接,但我无法指定文件名)。

然后我尝试了 curl,它允许您通过命令行参数传递多个 URL 和文件名。例如:

curl.exe
-o myfilename1.jpg http://www.foo.com/longgibberish976876....2131.jpg
-o myfilename2.jpg http://www.foo.com/longgibberish324....32432.jpg
-o .....

这是一个速度改进,因为 curl 会尝试为传递给它的所有 URL 重新使用相同的连接。但是,在它开始跳过文件之前,我被限制在大约 20 个 URL 的批处理中。我没有确认为什么会这样,但怀疑可能超出了命令行中的最大长度。无论如何,这肯定不会扩展到一百万个左右的文件。我还没有找到以与使用 wget 相同的方式将文本文件传递给 curl 的选项。

还有哪些选择?我已经尝试过的 2 个程序是否有一些我不知道的语法,或者我需要一些其他工具?

最佳答案

延迟会让您陷入困境。在正常的顺序过程中,如果每个文件涉及 1-3 秒的延迟,您将支付所有费用,一个在其他并花费 1-3 百万秒下载一百万个文件。

诀窍是支付延迟并行 - 发出,比如说 64,并行请求并等待 1-3 秒让它们全部返回 - 而不是按顺序完成时的 180 秒。

我会向您推荐 GNU Parallel,它虽然起源于 Unix,但在 Cygwin 下运行。请查阅一些教程。

一次做 64 个 curl 的命令是这样的:

parallel -j 64 -a filelist.txt curl {}

关于windows - 下载很多小文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com