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


13

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

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

Answers:


14

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

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

有关仅适用于某些文件的注意事项值得考虑。客户端依赖服务器来报告开始下载文件之前文件的大小。大多数(但不是全部)服务器报告了这一情况。


6
您可以将此与系统限制结合使用,以防止卷曲创建大于$n字节的文件:(ulimit -f $(($n/512)); curl --max-filesize $n …)curl如果文件大小超过$n/512512字节块,将以错误中止。
吉尔斯(Gilles)'所以

您也可以httrack。
六。

6

如果要使用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。

(该代码很丑陋,仅供参考)。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.