本文讲解如何通过wget或者curl命令下载Google Drive上的文件。出发点是我的一个曲线上传数据集的任务,如果我用VPN翻墙再通过校园网VPN连接上计算机集群,上传速度大概是100-200k/s(11小时),如果单纯使用校园网VPN连接,上传速度更低(约20k/s),然而直接上传Google Drive的时间只有1.5小时,所以我决定,先将数据集上传至谷歌开车,再通过操作计算机集群资源下载数据集。脚本代码。
分享链接
将文件设置为公开,当前版本的谷歌开车生成的分享链接的格式是:
https://drive.google.com/file/d/<fileid>/view
在后续过程中,除了fileid
这个变量,还有用filename
表示文件名。举个例子,对于文件epichands_anchors.zip
,分享链接为:
https://drive.google.com/file/d/1MJZAlgRi1TjrUcqn4SuMNPccrZrxgyLD/view?usp=sharing
那么,
|
|
wget命令
小文件下载
1
wget --no-check-certificate "https://drive.google.com/uc?export=download&id=${fileid}" -O ${filename}
大文件下载
1
wget --load-cookies /tmp/cookies.txt "https://drive.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://drive.google.com/uc?export=download&id=${fileid}' -O- | sed -rn 's/.confirm=([0-9A-Za-z_]+)./\1\n/p')&id=${fileid}" -O ${filename} && rm -rf /tmp/cookies.txt
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#!/bin/bash # cd scratch place cd scratch/ # Download zip dataset from Google Drive filename='epichands_anchors.zip' fileid='1MJZAlgRi1TjrUcqn4SuMNPccrZrxgyLD' wget --no-check-certificate "https://drive.google.com/uc?export=download&id=${fileid}" -O ${filename} # Unzip unzip -q ${filename} rm ${filename} # cd out cd
curl命令下载
小文件 < 40MB
1
curl -L -o ${filename} "https://drive.google.com/uc?export=download&id=${fileid}"
大文件 > 40MB
1 2 3
curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} rm ./cookie
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/bin/bash # cd scratch place cd scratch/ # Download zip dataset from Google Drive filename="coco2014labels.zip" fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo" curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} rm ./cookie # Unzip unzip -q ${filename} rm ${filename} # cd out cd