&引用;Curl:(33)HTTP服务器不';t似乎不支持字节范围。无法恢复。”;
提供一个在线文件,我可以通过web浏览器下载该文件 我用&引用;Curl:(33)HTTP服务器不';t似乎不支持字节范围。无法恢复。”;,curl,gis,wget,web-crawler,Curl,Gis,Wget,Web Crawler,提供一个在线文件,我可以通过web浏览器下载该文件 我用 mkdir -p ./data curl -L -C - 'http://www.ngdc.noaa.gov/mgg/global/relief/ETOPO1/data/ice_surface/grid_registered/netcdf/readme_etopo1_netcdf.txt' -o ./data/countries.zip 我选择了以下错误消息: curl:(33)HTTP服务器似乎不支持字节范围。不能 恢复 如何解
mkdir -p ./data
curl -L -C - 'http://www.ngdc.noaa.gov/mgg/global/relief/ETOPO1/data/ice_surface/grid_registered/netcdf/readme_etopo1_netcdf.txt' -o ./data/countries.zip
我选择了以下错误消息:
curl:(33)HTTP服务器似乎不支持字节范围。不能
恢复
如何解决此问题?欢迎使用其他下载工具
注:
:遵循重定向-L
:继续先前未完成的下载-C-
编辑:当要下载的文件已存在且已完成时,将显示此错误消息。它还会停止正在进行的脚本。我的要求是:
- 如果文件不存在,请下载
- 如果文件确实存在但不完整,请在停止下载的位置继续下载
- 如果文件确实存在且已完成,以静默方式传递到下一个命令。(没有失败)
我怎么能这样做呢?如果web服务器不支持特定字节范围的请求,您就不能使用-C,而该主机似乎就是这样 如果尝试安装节点版本但安装失败,请确保从中删除节点下载
src (~/.nvm/src/)
或者,再次尝试重新安装时可能会出现错误,或者可能会出现如下错误:
curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.
一定要让我知道它是否有效,否则我会建议您做其他事情。我尝试运行此命令两次:
curl -L -C - 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_sovereignty.zip' -o countries.zip
并得到以下输出:
$ curl -L -C - 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_sovereignty.zip' -o countries.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 5225k 100 5225k 0 0 720k 0 0:00:07 0:00:07 --:--:-- 836k
$ curl -L -C - 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_sovereignty.zip' -o countries.zip
** Resuming transfer from byte position 5351381
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
$ echo $?
0
所以,看起来“简历”很好用。由于您在五月份发布了这个问题,所以完全有可能cURL已经修复了他们的bug,或者所讨论的web服务器已经更新了他们对HTTP范围请求的支持
正如您在评论中所指出的,ngdc.noaa.gov网站仍然存在该漏洞。我检查了我的卷发,它也在做同样的事情。因此,这只虫子仍然卷曲着 通过Wireshark,我检查了HTTP协议中发生了什么。基本上,当curl请求恢复完成的文件时,服务器会发回一个HTTP416错误(“请求的范围不可满足”)。在naturalearthdata.com中,他们使用的CDN添加了一个内容范围头,指定文件的确切长度。ngdc.noaa.gov不添加此标题。注意,根据RFC 2616,在HTTP 416响应中添加内容范围是可选的 curl使用contentrange来确定下载是否完成。如果缺少标头,curl会假定服务器不支持范围下载,并抛出该错误消息 我已经向libcurl邮件列表报告了这个bug。我们看看他们怎么说。同时,这里有两种可能的解决方法:
- 使用不同的下载程序。我经常使用
,这是一个非常好的命令行下载工具,支持多个连接和恢复下载。通过利用更多的连接(假设服务器支持),它可能会使您的下载速度更快,我已经检查过aria2c没有遭受与curl相同的错误aria2c
- 在运行
之前,使用curl
curl-I | grep Content Length | cut-d''-f2来获取文件的长度,并根据下载的文件大小检查该长度
**命令,并在没有下载任何内容的情况下成功退出。你的卷发可能过时了吗?我正在运行curl 7.37.0
@nneonneo:你能用这个命令再次尝试相同的命令(下载、停止、恢复、完成、重新下载)(bug回来了?)吗?这个bug出现在我的版本上,带有这个URL。所以,我更新了我的答案,并向curl报告了一个bug。现有文件不会告诉您是完整的还是不完整的,这是导致bug的原因。是的,这不是bug的解释,而是解决问题并继续的快速解决方法。