gpt4 book ai didi

curl - "Curl : (33) HTTP server doesn' t 似乎支持字节范围。无法恢复。”

转载 作者:行者123 更新时间:2023-12-05 00:25:51 35 4
gpt4 key购买 nike

给定一个在线文件我可以通过我的网络浏览器下载。

我运行 curl 在它上面,与

mkdir -p ./data
curl -L -C - 'http://www.ngdc.noaa.gov/mgg/global/relief/ETOPO1/data/ice_surface/grid_registe‌​red/netcdf/readme_etopo1_netcdf.txt' -o ./data/countries.zip

我选择以下错误消息:

curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume.



如何解决? 欢迎其他下载工具。

笔记:
  • -L : 跟随重定向
  • -C - : 继续之前未完成的下载


  • 编辑:下载文件时出现此错误消息 已经存在并且已经完成 .它还会停止正在进行的脚本。我的要求是:
  • 如果文件不存在,则下载。
  • 如果文件确实存在但不完整,请继续下载它停止的地方。
  • 如果文件确实存在并且完整,静默传递给下一个命令 . (没有失败)

  • 我怎么能这样做?

    最佳答案

    我尝试运行此命令两次:

    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

    所以,看起来“简历”工作正常。自从您在 5 月份发布了这个问题以来,cURL 完全有可能修复了他们的错误,或者有问题的网络服务器已经更新了他们对 HTTP 范围请求的支持。

    正如您在评论中指出的那样,ngdc.noaa.gov 网站仍然存在该错误。我检查了我的 curl ,它也在做同样的事情。因此,该错误仍处于 curl 状态。

    使用 Wireshark,我检查了 HTTP 协议(protocol)中发生了什么。基本上,当 curl 请求恢复已完成的文件时,服务器会发回 HTTP 416 错误(“Requested Range Not Satisfiable”)。对于 naturalearthdata.com,他们使用的 CDN 添加了一个 Content-Range header ,指定了文件的确切长度。 ngdc.noaa.gov 不添加此 header 。请注意,根据 RFC 2616,在 HTTP 416 响应中添加 Content-Range 是可选的。

    curl 使用 Content-Range 来确定下载是否完成。如果缺少 header ,curl 会假定服务器不支持范围下载并吐出该错误消息。

    我已将此作为错误报告给 libcurl 邮件列表。我们会看看他们怎么说。同时,这里有两种可能的解决方法:
  • 使用不同的下载器。我用 aria2c通常,这是一个非常好的命令行下载实用程序,支持多个连接和恢复下载。通过利用更多的连接(假设服务器支持它),它可以使您的下载更快,并且我已经检查过 aria2c 不会遭受与 curl 相同的错误。
  • 使用curl -I <URL> | grep Content-Length | cut -d' ' -f 2在运行 curl 之前获取文件的长度,并根据下载的文件大小检查它.
  • 关于curl - "Curl : (33) HTTP server doesn' t 似乎支持字节范围。无法恢复。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586214/

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