通过 Colab 下载 Google Driver 上的大文件到内网服务器

news2025/2/26 4:26:35

这里写自定义目录标题

    • 1. 将 Google Driver 上的大文件下载到 Colab
      • 1.1 获取文件唯一的 fileID
      • 1.2 查看文件的 MD5 值
      • 1.3 获取 API 的 Access Token
      • 1.4 下载文件到 Colab
    • 2. 将文件从 Colab 下载到公网服务器
    • 3. 将文件从公网服务器下载到内网服务器
    • 4. 参考链接

由于众所周知的原因,访问 Google Driver 不是那么地方便,尤其是在下载一些较大的数据集时,尽管可以通过 IDM 来实现断点续传,但下载速度也就只有几 M,对于几十个 G 的文件来说还是太慢了。

偶然间看到一篇使用 Colab 来下载大文件的方法,实验下来速度确实很快,虽然把数据弄到内网要费点周折,但已经算是一个不错的方法,特此记录一下。

1. 将 Google Driver 上的大文件下载到 Colab

访问 Colab 官网,每个人默认有大约 80G 左右的免费空间,如下图所示,这里我下载了一个 53 G 的大文件后,可用空间还有 31 G。

所以,我们可以从 Google Driver 上下载小于 80 G 的文件,如果文件更大的话,此方法可能不适用,或者要升级 Colab 获取更多的硬盘空间。

1.1 获取文件唯一的 fileID

假设我们要下载的文件地址是下面这个链接:

https://drive.google.com/file/d/1NyDrgI02ao18WmXyepgVkWGqtM3YS3_4/view

那么加粗部分即为文件唯一的 fileID,我们需要通过这个 fileID 来使用命令将文件下载到 Colab 上。

如果是 Google Driver 上的任意文件,我们可以通过右键->共享->复制链接来获得类似上面 URL 形式的一个文件地址。

比如,这个 trainval.json 的地址即为下面这个链接,同理,加粗部分为文件唯一的 fileID。

https://drive.google.com/file/d/1PiaK8BD3D_OyS9rcrGmn9HfLDxnP_MY-/view?usp=sharing

1.2 查看文件的 MD5 值

由于整个过程包括文件下载和跨服务器的传输,难免哪一步会出些差错,所以我们需要一个办法来保证每一步得到的文件都是没有问题的,通过 MD5 来验证文件的一致性是一个不错的方案。

所以,我们需要先拿到 Google Driver 上文件的 MD5 值,好在这可以通过 Google 的 API 来获取到。

首先,我们打开 Google Developers - OAuth 2.0 Playground 这个网址,然后,按照下图指示进行第一步操作。

点击完会跳出登录界面,我们用自己的 Google 账号认证然后允许即可。然后,继续按照下图指示进行第二步操作。

第三步,填入 Request URI,然后点击 Send the request,我们就可以在右边的 Response 中得到某一个文件的 MD5 值了。

知道文件的 fileID 后,替换下面加粗部分我们即可得到对应的 Request URI 。

[https://www.googleapis.com/drive/v3/files/1NyDrgI02ao18WmXyepgVkWGqtM3YS3_4?fields=md5Checksum,+originalFilename]

1.3 获取 API 的 Access Token

与 1.2 节一样,打开 Google Developers - OAuth 2.0 Playground 这个网址,这里第一步选取了另外的一个 API,然后进行认证。

第二步操作与 1.2 节一致,只不过这里操作完后需要把这个 Access token 复制保存下来,后面要用到。注意这里的 token 有效期为一个小时,超时后无法使用,不过在 Colab 下载的速度可以达到百兆每秒,一个小时可以说绰绰有余。

1.4 下载文件到 Colab

[!curl -H “Authorization: Bearer Access token” https://www.googleapis.com/drive/v3/files/fileID?alt=media -o filename]

替换上面命令加粗部分的 Access token、fileID 和 filename,就得到了在 Colab 中下载文件的命令,下面是一个示例。

!curl -H "Authorization: Bearer ya29.a0AVvZVsqLM6FcukNv8Co2wOornTU-mktbMSBkIhVQRvU7iHq47UyvXWXcKxV8_RT4Fybs6YmYUAj0EYeWe3CL2wa1T5COZwDb_Mq7w6CDFExvb4Og7tND8QaC3UaZ4FDR5yqwIS5bBJ1LJHeEcE7P6lsoz6LDaCgYKARESARESFQGbdwaIoVi4AMvpUGVnEPyiiFaj1w0163" https://www.googleapis.com/drive/v3/files/1NyDrgI02ao18WmXyepgVkWGqtM3YS3_4?alt=media -o planes_scannet_train.tfrecords

点击左边的执行按钮后,下载就开始了,速度飞起!

但是,我在下载的时候老是会中断,下个几 G 或者十几 G 就停掉了。好在 curl 命令可以从断点重启,修改为下面的命令,继续执行,重复几次后就可以完成下载了。

!curl -H "Authorization: Bearer ya29.a0AVvZVsqLM6FcukNv8Co2wOornTU-mktbMSBkIhVQRvU7iHq47UyvXWXcKxV8_RT4Fybs6YmYUAj0EYeWe3CL2wa1T5COZwDb_Mq7w6CDFExvb4Og7tND8QaC3UaZ4FDR5yqwIS5bBJ1LJHeEcE7P6lsoz6LDaCgYKARESARESFQGbdwaIoVi4AMvpUGVnEPyiiFaj1w0163"  -o planes_scannet_train.tfrecords -C - https://www.googleapis.com/drive/v3/files/1NyDrgI02ao18WmXyepgVkWGqtM3YS3_4?alt=media

下载完成后,验证一下 MD5 值,这里一致说明第一步的下载没有问题。

2. 将文件从 Colab 下载到公网服务器

由于 Colab 无法直接访问内网服务器,但是内网服务器可以访问公网,所以这里需要一个公网服务器作为中转,先把文件从 Colab 通过 scp 拷贝到公网服务器,然后在内网服务器上通过 scp 再把文件从公网服务器拷贝到内网服务器。

找一个按小时付费的云服务器,这里我用的是 AutoDL 平台,新用户注册送 10 元优惠券,最便宜的服务器大概 1 元一小时,够下载好几次了。

在 Colab 上生成 SSH-Key,拷贝到公网服务器上。

!ssh-keygen -t rsa               # 运行命令后一直回车即可生成 SSH-Key
!cp /root/.ssh/id_rsa.pub ./	 # 将公钥拷贝到当期目录

将文件 id_rsa.pub 下载下来,把其中的内容拷贝到服务器上这个文件中 ~/.ssh/authorized_keys2,一般情况下文件名应该是 authorized_keys,我这个服务器叫 authorized_keys2。

假设连接公网服务器的命令如下:

ssh -p 39624 root@region-41.seetacloud.com

那么,从 Colab 拷贝文件到公网服务器的命令为:

!rsync -avuzP -e "ssh -p 39624 -o StrictHostKeyChecking=no"  planes_scannet_train.tfrecords root@region-41.seetacloud.com:/root/autodl-tmp

我这里用的是 rsync 命令,实测速度会快一些,用 scp 命令也可以。

平均速度大概 30 M,拷贝一个 53 G 的文件用时 27 分。拷贝完成后,同样地,在公网服务器再次验证一下 MD5 值。

3. 将文件从公网服务器下载到内网服务器

登录内网服务器,直接运行以下命令:

rsync -avuzP -e "ssh -p 39624 -o StrictHostKeyChecking=no"   root@region-41.seetacloud.com:/root/autodl-tmp/planes_scannet_train.tfrecords ./

输入公网服务器的登录密码后开始拷贝,平均速度有 40 M,相当可以了。

最后,在内网服务器验证一下 MD5 值,如果一致的话就大功告成了。

4. 参考链接

如何快速下载google drive文件到本地?
Google Drive MD5 checksum for files

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【正点原子FPGA连载】第十章PS SYSMON测量温度电压实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十章PS SYSMON…

如何正确的在Flutter中添加webview

前言 为什么要在flutter中引入webview?这不是废话么,当然是为了加载一个网页,这不是移动端最基本的需求么,哈哈!说的真不错,接下来我要是告诉你我的用法,你可能要大吃一惊。我的用处很简单&…

【音视频处理】码率、帧率越高越清晰?分辨率、像素、dpi之间是什么关系?码率的真实作用,I帧、B帧、P帧是什么

大家好,欢迎来到停止重构的频道。本期我们介绍一下视频的一些基础概念,如帧率、码率、分辨率、像素、dpi、视频帧、I帧、P帧、gop等。会解释多少码率是清晰的,是否帧率越高越流畅等问题。这些概念是比较杂乱的,我们按这样的顺序介…

Seata源码学习(四)-数据源代理

Seata源码分析-数据源代理 上节课我们分析了整体的Seata-AT模式的2PC执行流程,那么这节课我们要分析的就是在AT模式中的关键点,数据源代理 AT模式的核心点: 获取全局锁、开启全局事务解析SQL并写入undolog 那么上节课其实我们已经把第一步…

【目标检测】K-means和K-means++计算anchors结果比较(附完整代码,全网最详细的手把手教程)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大努力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 一、介绍 YOLO系列目标检测算法中基于anchor的模型还是比较多的,例如YOLOv3、YOLOv4、YOLOv5等,我们可以随机初始化a…

简约精美电商小程序【源码好优多】

简介 一款开源的电商系统,包含微信小程序和H5端,为大中小企业提供移动电子商务优秀的解决方案。 后台采用Thinkphp5.1框架开发,执行效率、扩展性、稳定性值得信赖。并且Jshop小程序商城上手难度低,可大量节省定制化开发周期。 功…

设计模式(适配器模式)

设计模式(适配器模式) 第二章 设计模式之适配器模式(Adapter) 一、Adapter模式介绍 适配器模式位于实际情况和需求之间,填补两者之间的差距。 二、示例程序1(使用继承的适配器) 1.示例程序示…

操作系统(五):编译过程,静态链接,目标文件,动态链接

文章目录一、程序的编译过程二、静态链接三、目标文件四、动态链接一、程序的编译过程 在linux上编译一个c文件hello.c的命令为: g -o hello hello.c 整个过程大致要经过一下四步: 预处理 : 处理以#开头的预处理命令编译 : 翻译成汇编文件汇编 &…

HTTPS基础原理和配置-3

书接上文:HTTPS 基础原理和配置 - 2,接下来介绍: 配置 NGINX后端 HTTPS检查配置配置 HSTSOCSP Stapling 重要部分来了。如何使用这些选项并配置NGINX? 一、NGINX 的 HTTPS 配置 这里有一些基本的原语(或叫做指令)…

GEE学习笔记八十八:在自己的APP中使用绘制矢量(上)

在GEE中尤其是自己的APP中调用绘制的矢量图形方法之前没有合适的方法,但是现在可以通过ui.Map.DrawingTools(...)以及ui.Map.GeometryLayer(...)结合来做。具体的API如下图: 在这一篇中我先通过一个简单的例子来展示一下使用这些API后可以实现什么效果&a…

C#底层库--日期扩展类(上周、本周、明年、前年等)

系列文章 C#底层库–记录日志帮助类 本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709 C#底层库–数据库访问帮助类(MySQL版) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379 …

axios中的GET POST PUT PATCH,发送请求时params和data的区别

axios 中 get/post请求方式 1. 前言 最近突然发现post请求可以使用params方式传值,然后想总结一下其中的用法。 2.1 分类 经过查阅资料,get请求是可以通过body传输数据的,但是许多工具类并不支持此功能。 在postman中,选择get请…

以before为例 完成一个aop代理强化方法案例

观看本文 首先 您需要做好Spring aop的准备工作 具体可以参考我的文章 java Spring aop入门准备工作 首先 我们创建一个包 我这里叫 Aop 然后在Aop包下创建一个类 叫 User 参考代码如下 package Aop;public class User {public void add(){System.out.println("add....…

android kotlin 协程(三) 理解挂起,恢复以及job

android kotlin 协程(三) 理解挂起,恢复以及job 前言: 通过上两篇的基础入门,相信大家对协程api已经有了一个基本的影响,本篇开始尝试理解挂起于恢复. 本篇不涉及源码, 通过很多应用案例,来理解挂起于恢复! 协程执行流程理解 还是老套路,先来看原始效果 参考图1 在这里我们知…

电子技术——目录

电子技术——目录 第一章——信号与放大器 第二章——运算放大器 第三章——半导体器件 第四章——二极管 第五章——金属氧化物场效应晶体管 目录: MOS管的物理结构MOS管的CV特性MOS放大器基础MOS管的小信号模型基本MOS放大器配置MOS放大器的DC偏置分立MOS放…

传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧

传奇开服方法教程:传奇开服在哪些网站打广告?传奇发布站打广告技巧 纯分享经验以及方法:开传奇sf,成本最高的就是广告费用了,为了让服人气更高,主播和发布站相信你们都已经尝试了,上人效果如何你…

全网详解 .npmrc 配置文件:比如.npmrc的优先级、命令行,如何配置.npmrc以及npm常用命令等

文章目录1. 文章引言2. 简述.npmrc3. 配置.npmrc3.1 .npmrc配置文件的优先级3.2 .npmrc设置的命令行3.3 如何设置.npmrc4. 配置发布组件5. npm常用命令6. 重要备注6.1 yarn6.2 scope命名空间6.3 镜像出错1. 文章引言 今天在某低代码平台开发项目时,看到如下编译配置…

Java实现调用ChatGPT的相关接口(附详细思路)

目录1.0.简单版2.0.升级版2-1.call.timeout()怎么传入新的超时值2-2.timeout(10, TimeUnit.SECONDS)两个参数的意思,具体含义3.0.进阶版3-1.java.net.SocketTimeoutException: 超时如何解决4.0.终极版1.0.简单版 以下是一个使用 Java 实际请求 ChatGPT 的简单示例代…

EasyExcel详解-写Excel

一、注解使用注解很简单,只要在对应的实体类上面加上注解即可。ExcelProperty用于匹配excel和实体类的匹配,参数如下:名称默认值描述value空用于匹配excel中的头,必须全匹配,如果有多行头,会匹配最后一行头orderInteger.MAX_VALUE…

硬件系统工程师宝典(6)-----如何减小信号串扰?

各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。 上篇我们说到描述信号传输的过程的需要做好阻抗匹配,以减小信号的反射。今天我们来看看传输线之间的噪声干扰,那就是信号的…