如何限制 wget 中下载的文件大小?

如何限制 wget 中下载的文件大小?

我想使用wget(从 php 脚本)下载图像文件,但不想下载超过一定大小的文件。

我可以用 限制文件大小吗wget?如果没有,有什么更好的方法?

答案1

如果您正在编写下载脚本,则应该考虑使用curl。 Wget 可以解析输出并递归地获取整个站点,但curl 有更多与特定文件的实际下载相关的选项。这是手册页中的相关选项:

--max-filesize
指定要下载的文件的最大大小(以字节为单位)。如果请求的文件大于此值,传输将不会开始,curl 将返回退出代码 63。
注意:在下载之前并不总是知道文件大小,对于此类文件,此选项无效,即使该文件传输最终大于这个给定的限制。

关于这只适用于某些文件的注释值得考虑。客户端依赖服务器在开始下载之前报告文件有多大。大多数但肯定不是所有服务器都会报告此情况。

答案2

如果你想使用wget,这里有一个无需下载即可测试文件大小的方法:

wget --spider $URL 2>&1 | awk '/Length/ {print $2}'

$URL当然,哪里是您要下载的文件的 URL。

因此您可以根据输出调整脚本。例如:

{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big

用于将下载大小限制为 20 MB。

(代码很难看,仅供参考)。

答案3

是的,有一种合理的方法可以使用 wget 设置最大文件大小,问题是足够的理由。因此,在此链接中,有一个很棒的 wget 补丁,并且已经编译了 wget。我出于合理的原因使用了它,而且效果非常好。我希望他们将其添加到 Linux 存储库中的 de wget 中。

https://yurichev.com/wget.html

祝你好运。

答案4

wget 有一个-Q --quota选项,可以在给出多个 URL(递归或输入列表)时限制最大下载量。

https://www.gnu.org/software/wget/manual/html_node/Download-Options.html

https://stackoverflow.com/a/20318140/4364036

相关内容