无法使用curl命令下载github项目

时间:2013-04-28 08:36:36

标签: bash curl github download command

我使用“curl -sO”命令从这个GitHub项目链接下载项目文件: http://github.com/ziyaddin/xampp/archive/master.zip

但是,我无法下载。发生错误并说:

Archive:  /home/ziyaddin/Desktop/master.zip
[/home/ziyaddin/Desktop/master.zip]   End-of-central-directory
signature not found.  Either this file is not   a zipfile, or it
constitutes one disk of a multi-part archive.  In the   latter case
the central directory and zipfile comment will be found on   the last
disk(s) of this archive. zipinfo:  cannot find zipfile directory in
one of /home/ziyaddin/Desktop/master.zip or
          /home/ziyaddin/Desktop/master.zip.zip, and cannot find 
/home/ziyaddin/Desktop/master.zip.ZIP, period.

但我可以使用curl命令下载此链接: http://cloud.github.com/downloads/pivotal/jasmine/jasmine-standalone-1.3.1.zip

我认为这是因为它位于cloud.github.com。我想知道如何从第一个链接下载curl命令?

4 个答案:

答案 0 :(得分:50)

$ curl -LOk https://github.com/ziyaddin/xampp/archive/master.zip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   119  100   119    0     0    375      0 --:--:-- --:--:-- --:--:--   388
  0     0    0  1706    0     0   1382      0 --:--:--  0:00:01 --:--:--  333k
  • 您必须使用https://
  • 您必须使用-L来关注重定向
  • 如果缺少证书文件,则必须使用-k

答案 1 :(得分:5)

您还可以下载tarball * .tar.gz ):

curl -LkSs https://api.github.com/repos/ziyaddin/xampp/tarball -o master.tar.gz

或者如果你使用-O你可以省略文件名,但是你保存的“.tar.gz”文件默认命名为“tarball”,所以你必须重命名它并添加“ .tar.gz“filetype postfix。所以使用上面的(小写)-o。其余的:

  • Ss - 使用静音模式,但显示错误(如果有)
  • k - 使用不安全的 SSL连接,而不检查TLS证书。

答案 2 :(得分:2)

$ curl -I http://github.com/ziyaddin/xampp/archive/master.zip
HTTP/1.1 301 Moved Permanently
Server: GitHub.com
Date: Sun, 28 Apr 2013 09:24:53 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: https://github.com/ziyaddin/xampp/archive/master.zip
Vary: Accept-Encoding

...如果您想要关注HTTP重定向,则需要使用-L。或者只是阅读Steven Penny的回答......

答案 3 :(得分:1)

curl -JLO "https://github.com/tada/pljava/archive/V1_6_2.zip"

-J, --remote-header-name 使用标头提供的文件名 (H)。
-L, --location 跟随重定向 (H).
-O, --remote-name 将输出写入名为远程文件的文件。

要点Reference