23

I am trying to download a .zip file from GitHub using the command line in Ubuntu. I am using wget command for it on a remote Ubuntu system.

I run wget <link> where <link> is the address bar link of the file which I want to download. It ends with archive.zip?ref=master.

Now, when I am executing the command, it is downloading a file with text/html type and not the .zip file which I want.

Please tell me how to get the link to be given as the parameter of wget. Right now, I am just copying the link address of the button (using right click) and writing that as a wget parameter.

12
  • can you tell the exact command you are pasting?
    – kashish
    Jul 26, 2017 at 5:10
  • 1
    Does your URL really ends with .zip?
    – kashish
    Jul 26, 2017 at 5:11
  • @kashish No the URL does not end with .zip . I am trying to download a project from github and it has a download button giving zip and other options. So, I'm trying from there. it ends with archive.zip?ref=master Jul 26, 2017 at 5:13
  • To download a github project, you can use git clone <projectlink.git>
    – kashish
    Jul 26, 2017 at 5:19
  • 2
    If I'm not mistaken it possible to download a repository as Zip-file using a following address: https://github.com/{user}/{repo}/archive/{branch}.zip Jul 26, 2017 at 8:22

4 Answers 4

22

It does work, if you use the correct URL.

For a GitHub repo, there's a zip at https://github.com/<user>/<repo>/archive/<branch>.zip, so you can download it with:

wget https://github.com/<user>/<repo>/archive/<branch>.zip

This downloads the zipped repo for a given branch. Note that you can also replace the branch by a commit hash.

Using cURL

curl -L -O https://github.com/<user>/<repo>/archive/<branch>.zip

cURL's -L flag follows redirects - it's a default in wget. -O is advised by Phil Gibbins in a comment.

Download a .tgz instead of .zip

You can also download a tarball with:

wget https://github.com/<user>/<repo>/archive/<branch>.tar.gz
1
  • 2
    curl -L -O <url> works on MacOS; (posting because it's all Unix related) thanks for adding the information about curl; I landed here when searching for the equivalent on MacOS, and albeit not hard to install it, wget isn't installed by default (my use case limits me from installing). You're advised to add -O as "Binary output can mess up your terminal" Jul 8, 2020 at 21:25
18

From the comments I saw you actually speak about GitHub.

It won't work like this because:

Downloading a project on GitHub causes the GitHub server to first pack your project as zip and than forwarding you to a temporary link where you get your zip ..

this link will only work for a certain time and than GitHub will delete your zip file from their servers..

So what you get with wget is just the html page which would forward you as soon as your zip file is generated.

As suggested use

git clone http://github.com/<yourRepoLink> <optional local path where to store>

to download the git repo ... If for some reason (e.g. for transfer it to others) you need it explicitly as zip you still could pack it after cloning is finished..

2
  • 2
    After cloning, do git archive -o output.zip, if a zip file is still needed
    – Ferrybig
    Jul 30, 2017 at 9:14
  • 1
    git clone works, naturally, but there are cases when it doesn't make sense to install git just to download a repo. May 7, 2020 at 20:25
1

2021 Update Download and unzip from GitHub Using wget

Will also expand and delete the archive. Just edit the REPLACE_ values and then copy/paste

zip

GH_USER=REPLACE_WITH_USER \
GH_REPO=REPLACE_WITH_REPO \
GH_BRANCH=REPLACE_WITH_BRANCH \
wget https://github.com/${GH_USER}/${GH_REPO}/archive/refs/tags/${GH_BRANCH}.zip \
-O "${GH_REPO}-${GH_BRANCH}.zip" && \ 
unzip ./"${GH_REPO}-${GH_BRANCH}.zip" && \
rm ./"${GH_REPO}-${GH_BRANCH}.zip"

tgz

GH_USER=REPLACE_WITH_USER \
GH_REPO=REPLACE_WITH_REPO \
GH_BRANCH=REPLACE_WITH_BRANCH \
wget https://github.com/${GH_USER}/${GH_REPO}/archive/refs/tags/${GH_BRANCH}.tar.gz \
-O "${GH_REPO}-${GH_BRANCH}.tar.gz" && \
tar -xzvf ./"${GH_REPO}-${GH_BRANCH}.tar.gz" && \
rm ./"${GH_REPO}-${GH_BRANCH}.tar.gz"
0

I just did it, but make sure you're using the correct link with URL end with *.zip like what @Robin Métral said above.

The exact steps I did:

  1. Open GitHub repository.
  2. Right click the Download Zip link, and copy the URL.
  3. Use that copied URL with wget in terminal.

I believe GitHub server will accept wget request and treat it as same as request with browser.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .