Download Google Drive Files with wget or curl

UPDATE:
I now have a great Python script with many more features (eg. folder support)
You can read more about it here: https://github.com/matthuisman/gdrivedl


Often I find myself needing to download google drive files on a remote headless machine without a browser.

Below are the simple shell commands to do this using wget or curl.

Small file = less than 100MB
Large File = more than 100MB (more steps due to Googles 'unable to virus scan' warning)

The text in red is what needs changing for the particular file you want to download.

The fileid can be found in the google url of the file you want to download.
eg:
  • https://drive.google.com/open?id=1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_
  • https://drive.google.com/file/d/1yXsJq7TTMgUVXbOnCalyupESFN-tm2nc/view?usp=sharing
Set the filename to anything you like (most likely the origin files name).

Note: Make sure the file has been shared 'via link' as the script does not authenticate you.

Small File (less than 100MB)

cd ~

export fileid=1yXsJq7TTMgUVXbOnCalyupESFN-tm2nc
export filename=matthuisman.jpg

## WGET ##
wget -O $filename 'https://docs.google.com/uc?export=download&id='$fileid

## CURL ##
curl -L -o $filename 'https://docs.google.com/uc?export=download&id='$fileid

Large File (more than 100MB)

cd ~

export fileid=1sNhrr2u6n48vb5xuOe8P9pTayojQoOc_
export filename=combian.rar

## WGET ##
wget --save-cookies cookies.txt 'https://docs.google.com/uc?export=download&id='$fileid -O- \
     | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1/p' > confirm.txt

wget --load-cookies cookies.txt -O $filename \
     'https://docs.google.com/uc?export=download&id='$fileid'&confirm='$(<confirm.txt)

## CURL ##
curl -L -c cookies.txt 'https://docs.google.com/uc?export=download&id='$fileid \
     | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1/p' > confirm.txt

curl -L -b cookies.txt -o $filename \
     'https://docs.google.com/uc?export=download&id='$fileid'&confirm='$(<confirm.txt)

rm -f confirm.txt cookies.txt

Discussion

Support