【问题标题】:Downloading file from the right Apache Mirror with wget使用 wget 从正确的 Apache Mirror 下载文件
【发布时间】:2016-11-30 05:51:22
【问题描述】:

举一个具体的例子,我想下载 Hadoop 2.7.2 的二进制版本。 web site 指向http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz,然后按位置指向最近的镜像。对我来说是http://xenia.sote.hu/ftp/mirrors/www.apache.org/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz

我想在一个 shell 脚本(具体来说是一个 Dockerfile)中实际下载它。我更喜欢使用与位置无关的 URL 进行下载,这样如果有人在世界的另一端运行脚本,他们就不会使用同一个镜像。

是否有可以与wgetcurl 一起使用的URL 动态重定向到最近的镜像?这个特定文件的 URL 是什么?

【问题讨论】:

标签: url download


【解决方案1】:

source code of closer.lua 实际上表明 actionfilename 查询参数可用于在自动选择的镜像而不是通常的 HTML 镜像选择页面上生成到请求文件的重定向。

所以你可以直接通过这个网址下载文件:https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz:

GET /dyn/mirrors/mirrors.cgi?action=download&filename=hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: www.apache.org



HTTP/1.1 302 Found
Cache-Control: max-age=3600
Connection: Keep-Alive
Content-Length: 0
Date: Mon, 13 Mar 2017 18:08:00 GMT
Expires: Mon, 13 Mar 2017 19:08:00 GMT
Keep-Alive: timeout=30, max=100
Location: http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
Server: Apache/2.4.7 (Ubuntu)

【讨论】:

  • 诀窍是使用 wget 在 url 周围使用引号:wget --trust-server-names "https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz"
  • 您首先参考closer.lua的源代码,然后您的示例使用mirrors.cgi。他们应该是同一件事吗?
  • mirrors.cgi 实际渲染closer.lua 并将渲染的内容发送给客户端。
  • 我最初尝试了答案中的链接 (hadoop-2.7.2),但没有成功。然后意识到该版本不再托管。请记住使用最新版本(在撰写本文时,2.7.7),它会工作。
猜你喜欢
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 2015-02-20
相关资源
最近更新 更多