最近需要紧急分析某个AI引擎框架,需要用ImageNet动态调试下。一番搜索后发现度盘和GDrive的链接。由于杜甫环境在国外的机器上,所以选择了从GDrive下载。(虽然同时起了个screen下载度盘,四天过去了,还在70%卡住着)
目标
要下载的是这个
Title: ImageNet ILSVRC2012
Size: Train:138G+Val:6G
https://drive.google.com/drive/folders/1dU3PiW6RRQkxfQL9qAR16EhSbUcsofQ8
也就是如何在服务器上用命令行下载140GB的文件。
GDrive下载工具
这个我们能比较容易找到好几个,最后我用的这个go写的客户端 gdrive
鉴权
这是谷歌GCP的一个特色(去年公司出钱让考过一个professional cloud architect证书)。IAM权限管理,为特点某种资源分配特点某种权限的账户,这个账户可以随时随时编辑和审计。 专门为程序用的账户就是service_account,是密钥对,而不是密码之类的。其实就是一个json文件。
具体来说操作步骤如下:
1. 创建一个serice account,下载其密钥
可以参考 https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount
2. 把下载的密钥放到~/.gdrive
下面
可以改一个简单的名字,比如改成 ~/.gdrive/g.json
3. 运行测试命令
gdrive --service-account g.json about
如果能正常显示GDrive的空间大小那么直接下载就好了,如果报如下错误则继续
|
4. 网页打开上面报错的链接
https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=[PROJECT_ID]
首先启用 GDrive API
然后创建凭据 Create Credentials
需要创建一个OAuth Client ID凭据
等待大概几分钟,我大概是10分钟内再此尝试步骤3就好了。
5. 下载
首先用刚刚生成service account的账户打开要下载的GDrive链接,然后在要下载的文件上右键,选择 “获取共享链接”。 会得到一个如下的链接 https://drive.google.com/file/d/xxx/view?usp=sharing
那么下载命令就是如下了
|
速度大概可以稳定到10MB/s到30MB/s的样子,很快就下完了。
一些说明
从上面的流程可以看出,我们不需要把这种超大的文件储存到自己的空间然后下载,其次谷歌知道你在下载。所以谷歌也可以控制你滥用。这个其实是有额度的,具体看谷歌API limit方面的说明,理论上次数和流量应该都是有限额的,假如商用的也是有付费服务的。