精华内容
下载资源
问答
  • rclone 实现 GoogleDrive 同步至 OneDrive
    千次阅读
    2021-07-24 09:52:57

    安装 rclone 工具

    mkdir /root/rclone
    ➜ cd /root/rclone 
    
    # 安装 rclonecurl https://rclone.org/install.sh | sudo bash
    
    # fuse 用于挂载
    ➜ yum install -y fuse
    

    配置 rclone 连接 GoogleDrive

    配置 GoogleDrive

    ➜ rclone config
    2021/07/23 09:00:03 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
    
    No remotes found - make a new one
    n) New remote
    s) Set configuration password
    q) Quit config
    # 输入 n 新建连接
    n/s/q> n
    
    # 输入连接别名
    name> gd
    
    Type of storage to configure.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / 1Fichier
       \ "fichier"
    ...
    ...
    14 / Google Cloud Storage (this is not Google Drive)
       \ "google cloud storage"
    15 / Google Drive
       \ "drive"
    16 / Google Photos
       \ "google photos"
    ...
    ...
    42 / premiumize.me
       \ "premiumizeme"
    43 / seafile
       \ "seafile"
    # 输入存储类型的序号(15 Google Drive)
    Storage> 15 
    
    Google Application Client Id
    Setting your own is recommended.
    See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
    If you leave this blank, it will use an internal key which is low performance.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    client_id> 
    
    OAuth Client Secret
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    client_secret> 
    
    
    Scope that rclone should use when requesting access from drive.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / Full access all files, excluding Application Data Folder.
       \ "drive"
     2 / Read-only access to file metadata and file contents.
       \ "drive.readonly"
       / Access to files created by rclone only.
     3 | These are visible in the drive website.
       | File authorization is revoked when the user deauthorizes the app.
       \ "drive.file"
       / Allows read and write access to the Application Data folder.
     4 | This is not visible in the drive website.
       \ "drive.appfolder"
       / Allows read-only access to file metadata but
     5 | does not allow any access to read or download file content.
       \ "drive.metadata.readonly"
    # 设置访问权限
    scope> 1   
    
    ID of the root folder
    Leave blank normally.
    Fill in to access "Computers" folders (see docs), or for rclone to use
    a non root folder as its starting point.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    root_folder_id> 
    
    Service Account Credentials JSON file path 
    Leave blank normally.
    Needed only if you want use SA instead of interactive login.
    Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    service_account_file> 
    
    
    Edit advanced config?
    y) Yes
    n) No (default)
    # 直接回车
    y/n> 
    
    Use auto config?
     * Say Y if not sure
     * Say N if you are working on a remote or headless machine
    y) Yes (default)
    n) No
    # 输入 n(正通过远程机器连接)
    y/n> n
    
    
    Verification code
    Go to this URL, authenticate then paste the code here.
    # 将下述的 URL 粘贴至浏览器,进行授权获取授权码
    https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=2022...apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=...UnHng
    Enter a string value. Press Enter for the default ("").
    # 授权后粘贴授权码
    config_verification_code> 4/1AX4XfWjS23E..32hxY_oJ6bBMO8....LvlQf6g
    
    Configure this as a Shared Drive (Team Drive)?
    y) Yes
    n) No (default)
    # 直接回车
    y/n> 
    
    --------------------
    [gd]
    type = drive
    scope = drive
    token = {"access_token":"ya29.a0A.......Yig","token_type":"Bearer","refresh_token":"1//06WCE7nY.....ftuyiRGE9yiY","expiry":"2021-07-23T10:03:37.835469729-07:00"}
    team_drive = 
    --------------------
    y) Yes this is OK (default)
    e) Edit this remote
    d) Delete this remote
    # 直接回车
    y/e/d> 
    
    Current remotes:
    Name                 Type
    ====                 ====
    gd                   drive
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    # 输入 q 退出
    e/n/d/r/c/s/q> q
    

    挂载 GoogleDrive

    mkdir /root/rclone/google
    ➜  nohup rclone mount gd:/ /root/rclone/google --vfs-cache-mode writes &
    # 或 rclone mount gd:/ /root/rclone/google --daemon --vfs-cache-mode writesdf -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        2.0G     0  2.0G   0% /dev
    tmpfs           2.0G  201M  1.8G  11% /run
    /dev/sda2        79G   35G   41G  46% /
    /dev/sda1       488M  240M  223M  52%
    gd:             1.0P     0  1.0P   0% /root/rclone/google
    

    配置 rclone 连接 OneDrive

    配置 OneDrive

    ➜  rclone config
    
    Current remotes:
    Name                 Type
    ====                 ====
    gd                   drive
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    # 输入 n 创建新的连接
    e/n/d/r/c/s/q> n
    
    # 输入连接的别名
    name> od
    
    Type of storage to configure.
    Enter a string value. Press Enter for the default ("").
    Choose a number from below, or type in your own value
     1 / 1Fichier
       \ "fichier"
     2 / Alias for an existing remote
       \ "alias"
    ...
    ...
    22 / Local Disk
       \ "local"
    23 / Mail.ru Cloud
       \ "mailru"
    24 / Mega
       \ "mega"
    25 / Microsoft Azure Blob Storage
       \ "azureblob"
    26 / Microsoft OneDrive
       \ "onedrive"
    27 / OpenDrive
       \ "opendrive"
    ...
    ...
    42 / premiumize.me
       \ "premiumizeme"
    43 / seafile
       \ "seafile"
    # 输入 OneDrive 的序号
    Storage> 26
    
    OAuth Client Id
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    client_id> 
    
    OAuth Client Secret
    Leave blank normally.
    Enter a string value. Press Enter for the default ("").
    # 直接回车
    client_secret> 
    
    Choose national cloud region for OneDrive.
    Enter a string value. Press Enter for the default ("global").
    Choose a number from below, or type in your own value
     1 / Microsoft Cloud Global
       \ "global"
     2 / Microsoft Cloud for US Government
       \ "us"
     3 / Microsoft Cloud Germany
       \ "de"
     4 / Azure and Office 365 operated by 21Vianet in China
       \ "cn"
    # 根据 OneDrive 情况选择(或者直接回车)
    region> 
    
    Edit advanced config?
    y) Yes
    n) No (default)
    # 直接回车
    y/n> 
    
    Use auto config?
     * Say Y if not sure
     * Say N if you are working on a remote or headless machine
    y) Yes (default)
    n) No
    # 输入 n(正通过远程连接)
    y/n> n
    
    For this to work, you will need rclone available on a machine that has
    a web browser available.
    For more help and alternate methods see: https://rclone.org/remote_setup/
    Execute the following on the machine with the web browser (same rclone
    version recommended):
            rclone authorize "onedrive"
    Then paste the result.
    Enter a string value. Press Enter for the default ("").
    # 1. 需要在本地电脑下载 rclone:https://rclone.org/downloads/
    # 2. 并在本地电脑运行 rclone authorize "onedrive",会打开浏览器引导授权
    # 3. 授权后电脑终端会显示授权码
    # 例:
    # $  ./rclone authorize "onedrive"
    # 2021/07/24 00:40:12 NOTICE: Config file "C:\\Users\\1\\.config\\rclone\\rclone.conf" not found - using defaults
    # If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=u...._3gM6pQ
    # Log in and authorize rclone for access
    # Waiting for code...
    # Got code
    # Paste the following into your remote machine --->
    # {"access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6InljXzJYVjJRV244alNIU096eTh3Ri1YY29TeHNmMjJSSXJHR0hCa1RMZnciLCJhbGciOiJSUzI1NiIsIng1dCI6....GU49MxSgHEpoQ","expiry":"2021-07-24T01:40:24.4490729+08:00"}
    # <---End paste
    
    # 粘贴授权码
    config_token{"access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6InljXzJYVjJRV244alNIU096eTh3Ri1YY29TeHNmMjJSSXJHR0hCa1RMZnciLCJhbGciOiJSUzI1NiIsIng1dCI6....GU49MxSgHEpoQ","expiry":"2021-07-24T01:40:24.4490729+08:00"}
    
    
    Type of connection
    Enter a string value. Press Enter for the default ("onedrive").
    Choose a number from below, or type in an existing value
     1 / OneDrive Personal or Business
       \ "onedrive"
     2 / Root Sharepoint site
       \ "sharepoint"
     3 / Sharepoint site name or URL (e.g. mysite or https://contoso.sharepoint.com/sites/mysite)
       \ "url"
     4 / Search for a Sharepoint site
       \ "search"
     5 / Type in driveID (advanced)
       \ "driveid"
     6 / Type in SiteID (advanced)
       \ "siteid"
     7 / Sharepoint server-relative path (advanced, e.g. /teams/hr)
       \ "path"
    # 输入 OneDrive 账户类型
    config_type> 1
    
    
    Drive OK?
    Found drive "root" of type "business"
    URL: https://igph-my.sharepoint.com/personal/xchenhao..._org/Documents
    y) Yes (default)
    n) No
    # 直接回车
    y/n> 
    
    
    --------------------
    [od]
    type = onedrive
    token = {"access_token":"eyJ0eXAiOiJKV1QiLCJub25jZS.......29TeHNmMjJSSXJHR0hCa1RMZnciLCJhbGciOiJSUzI1NiIsIng1dCI....oXm8Bb7WEv-o0EoA","token_type":"Bearer","refresh_token":"0.AV0Ar4aOTlX1...HEpoQ","expiry":"2021-07-24T01:40:24.4490729+08:00"}
    drive_id = b!AudODz2rqU2jDfDk3eplbwK4HpsTVc5fOqAcTp
    drive_type = business
    --------------------
    y) Yes this is OK (default)
    e) Edit this remote
    d) Delete this remote
    # 直接回车
    y/e/d> 
    
    
    Current remotes:
    Name                 Type
    ====                 ====
    gd                   drive
    od                   onedrive
    
    e) Edit existing remote
    n) New remote
    d) Delete remote
    r) Rename remote
    c) Copy remote
    s) Set configuration password
    q) Quit config
    # 退出
    e/n/d/r/c/s/q> q
    

    挂载 OneDrive

    mkdir /root/rclone/one
    ➜  nohup rclone mount od:/ /root/rclone/one --vfs-cache-mode writes &
    # rclone mount od:/ /root/rclone/one --daemon --vfs-cache-mode writesdf -h
    Filesystem      Size  Used Avail Use% Mounted on
    devtmpfs        2.0G     0  2.0G   0% /dev
    tmpfs           2.0G  201M  1.8G  11% /run
    /dev/sda2        79G   35G   41G  46% /
    /dev/sda1       488M  240M  223M  52%
    od:             5.0T  1.7M  5.0T   1% /root/rclone/one
    gd:             1.0P     0  1.0P   0% /root/rclone/google
    

    从 GoogleDrive 同步文件至 OneDrive

    ➜  yum install screen
    
    # 同步大量数据使用 screen 会话尽可能保护 rclone 执行不被中断screen -S syntask
    
    # 将 GoogleDrive 中的目录(如 rsc)同步至 OneDrive
    ➜  rclone copy gd:/rsc od:/rsc
    

    其它

    取消挂载

    # 取消挂载 GoogleDrive
    fusermount -qzu  /root/rclone/google 
    # 取消挂载 OneDrive
    fusermount -qzu  /root/rclone/one
    

    参考

    • https://rclone.org/ Rclone
    • https://cyhour.com/825/ 参考使用 rclone 将 Google Drive 文件同步至 OneDrive
    • https://shikey.com/2020/04/10/rclone-google-drive-v15.html 利用 Rclone 挂载 Google Drive/OneDrive
    • https://blog.csdn.net/hzlarm/article/details/107127717 Rclone 连接 Google Drive
    • https://www.jianshu.com/p/4f9cd009f590 rclone 挂载 Onedrive
    • https://streamelody.github.io/2018/09/rclone-gdrive-baidupcs/ GCP 上使用 rclone 挂载 GoogleDrive+百度盘下载
    • https://blog.6yfz.cn/tutorial/mover-onedrive.html 网盘转存-将文件转存到 OneDrive
    更多相关内容
  • 通过Nextcloud,WebDAV或Google Drive在浏览器之间同步书签 :open_file_folder: 将任何本地书签文件夹同步到任何服务器端文件夹 :atom_symbol: 使用任何与Web扩展API兼容的浏览器 :briefcase: 根据需要创建任意...
  • Google Drive打不开怎么办.docx
  • 将文件从OneDrive传输到Google Drive,Dropbox,Box和许多其他云驱动器,反之亦然。 MultCloud是一个基于Web的免费工具,可让您轻松地将文件从一个云传输,迁移,备份,同步或移动到另一个云,并只需一次登录即可...
  • 打开Google Drive容易 打开Goog​​le应用,例如Google云端硬盘,Google文档,Google幻灯片,并且更轻松,更快捷 支持语言:English (United States)
  • Web 应用程序可简化公共 Google Drive 文件的复制并绕过下载配额。 还可以在保留文件夹结构的同时复制文件夹。 使用 React、Flask 和 Docker 构建。 为什么要在浏览器UI上使用它? 过去,当下载流行的公共 Google ...
  • [Google Drive Shell扩展]( )项目当前使用它在Windows资源管理器和Google Drive之间提供透明的界面。 支持的操作系统 Windows 7 32位和64位 Windows 8 Windows服务器 思杰服务器 内容 捆绑的Visual Studio解决...
  • googledrive

    2021-02-18 00:28:53
    Google云端硬盘上传器电报机器人 一个电报自动程序,可将文件从电报或直接链接上传到Google云端硬盘。 在电报上找到它作为 特征 电报文件支持。 直接链接支持。...cd google-drive-telegram-bot 使用pip3安装
  • google drive frozen 2这是一种使用多功能框搜索来快速搜索Google云端硬盘文件的方法。 avengers endgame google drive首先,请安装软件扩展。您可以开始使用此扩展名,方法是转到浏览器地址栏,键入“:drive
  • 同步 Google Drive 客户端远程同步 用法 安装 JRE 使用命令运行:$java -jar rsync.jar path-to-file 复制链接(在控制台中)并粘贴到浏览器 获取验证码并粘贴到控制台 => 等待进程
  • 让您可以在Google Drive:trade_mark:中快速搜索文件,并使用地址栏获取结果 使您可以使用多功能栏从Google Drive:trade_mark:快速获得结果。只需在地址栏中输入“ drive”,然后输入查询即可。这将列出匹配的条目。...
  • 一个基于ElasticSearch的Google Drive搜索引擎,快速,高效,关键:可直接下载 开发背景 由于gd现在转存储蓄削减于1.5T限制,大家都在摸索一个新的资源分享方式; 本搜索引擎,可搜索,可下载,虽然不能解决收藏的...
  • Google Drive 网页ui redesign .xd素材下载
  • Google Drive 文件链接 [PDF、DOC、XLS、图像、Zip] 转换为可下载的链接。 路线 将 PDF、DOC、XLS 文件上传到您的 Google Drive,右键单击并选择共享->共享,如果您找不到可共享的链接,则单击右上角的“获取可...
  • Google 个人/共享云端硬盘索引 支持我的和团队/共享驱动器。 应该部署的代码 演示站点 截图 如何 打开并获取您的授权代码,并 在 更改 演示在 如果要部署主驱动器,请保留选项 ROOT 原样。 如果要部署团队驱动器/...
  • 从Dropbox、OneDrive、Box和其他云驱动器传输文件到谷歌硬盘,反之亦然。 MultCloud是一个基于Web的免费工具,可让您轻松地将文件从一个云传输,迁移,备份,同步或移动到另一个云,并只需一次登录即可访问不同云上...
  • 判断和google drive的链接状态 downloading资源 MD5检查文件 linux 服务器自动下载google drive的内容,验证文件的正确性后执行下载文件的程序 比从本地上传速度快几倍
  • 简单的 Go 应用程序将您的 MySql 数据库转储到 Google Drive 帮助 go run go-mysql-dump-to-gdrive --help 参数 -db="": 数据库名称 -db-host="localhost":MySql 转储主机的名称 -db-user="": 你的 MySql dump ...
  • 用户登录 允许访问 Google Drive 的 GAS 网络应用程序 包括登录表单和简单的数据库搜索
  • GoogleDrive Windows版

    2019-01-03 10:21:49
    Google Drive的桌面版,可以直接在Google Drive官方进行下载
  • google-drive-ftp-adapter,通过ftp协议连接到google drivegoogle drive ftp适配器.zip
  • Gdrive沿用了Google Docs的风格,使用了简洁的图标代替了文字操作。Gdrive和Dropbox整体的界面风格属于清新、简洁类型,也是极简主义设计趋势。 1、Gdrive的hover态: 注:hover时高亮,帮助用户定位和聚焦当前行...
  • Google云端硬盘KODI插件 播放Google云端硬盘中的所有媒体,包括视频,音乐和图片(包括Google相册)。 无限账户 团队精神支持 Google相册支持 播放音乐和视频。 带有缩略图的视频列表。 使用Google云端硬盘作为...
  • 要使用Google Drive API来下载/流式传输视频 要利用Google云端硬盘功能强大的CDN 为了绕过Google云端硬盘文件的下载限制,该应用会将文件复制到用户的Google云端硬盘帐户中。 影片示范 试试看 Windows--解压缩并...
  • Google Drive、SkyDrive、Dropbox详细对比.docx
  • 该项目与rclone,google-drive-ocamlfuse或node-gdrive-fuse等项目相当,但是optimi Plexdrive允许您将Google Drive帐户挂载为只读熔丝文件系统,并在文件系统上具有直接删除选项。 该项目与rclone,google-drive-...
  • 您可以编辑,然后将其另存为Google云端硬盘。 我們的應用程序是一個免費的在線應用程序來編輯和編輯數學公 您需要為下一課做準備,或者您需要為您的學習,考試和教學編寫數學公式 如果使用單詞或其他軟件太耗時而且...
  • 在AI、系统安全等研究领域,一项研究成果的产生需要大量的数据样本进行训练和分析,而很多国外作者会倾向于在Google Drive上分享自己的数据集。但是,Google Drive只会为每个下载链接保留一小时的有效期,即你会在...

    本文将对「如何下载Google Drive中的超大型文件?」这一问题展开探索和解决。

    太长不看:直接看这里

    情景与问题

    在AI、系统安全等研究领域,一项研究成果的产生需要大量的数据样本进行训练和分析,而很多国外作者会倾向于在Google Drive上分享自己的数据集。但是,Google Drive只会为每个下载链接保留一小时的有效期,即你会在Google Drive上的下载链接中会发现一个token字段,而这个字段的有效期是1小时。这一机制使得你必须在1小时内下载好你的文件,否则时机一到,token刷新,当前下载会话就会失效。如果无法有效实现断点续传的话,你就得从头下载了。

    那么,在国内的网络环境下,是否有方案可以帮助我们有效实现从Google Drive上下载几十GB乃至更大的文件呢?

    候选解决方案

    解决上述问题的核心点在于:要么具有下载带宽足够的网络服务,要么可以实现对Google Drive的有效断点续传。因此,可以有以下候选的解决方案:

    • 浏览器直接下载
    • Google Drive Desktop 客户端下载
    • 第三方下载软件(如IDM、CyberDuck等)
    • 用国外服务器下载后作为中转,设法下载到国内本地

    以上候选解决方案我都试了一遍,在面对70GB大文件时,只有最后一个方法是奏效的。而在介绍这种方法之前,首先介绍前三种方法在目前Google Drive下载机制及国内网络环境下失败的原因。

    浏览器直接下载

     直接用Chrome下载(开启硬件加速、多线程),如下图所示。

    在这里插入图片描述

    此时,下载速度将主要取决于你的代理服务器带宽、Chrome下载策略等i因素,而我这个速度对于下载70GB的大文件而言是远远不够的。

    因此,一个小时后,下载失败了。

    Google Drive Desktop 客户端

    在我寻找其他解决方法时,发现有人提到使用  Back up & Sync 这款软件可以实现Google Drive下载的断点续传。而在2021年这款软件已经正式成为了Google Drive Desktop。下载并安装完后,这款Google Drive的客户端似乎是一个半成品,在本地你甚至无法直接浏览云端存储的内容,如下图所示。

    在这里插入图片描述

    整个软件只有一个空荡荡的下载状态(所谓的同步状态),你想下载Drive中的某个文件时,只能使用搜索功能查找你想要的文件。这甚至都不如国内的一些云盘客户端的体验。总之,在搜索到我想“同步”到本地的大文件后,点击文件名自动开始下载。

    在这里插入图片描述

    令人惊喜的是,客户端的下载速度平均可以达到8MB/s(虽然有些不稳定)。然而,一个小时后,下载再一次的失效了,此时我本以为重新点击文件就能实现断点续传,可惜客户端还是从头给我下载。翻阅了产品文档和他人经验后,我依然没能找到断点续传的功能,不知这是我自己的原因,还是这个软件从Back up & Sync 改进而来后,居然不支持自家Drive的断点续传了?

    总之,Google Drive Desktop给我一种软件工业半成品的感觉,用户体验真的非常糟糕。

    第三方下载软件

    在很多多线程下载器、SFTP下载器等第三方下载软件中,我尝试了著名的IDM。当IDM接管Google Drive的下载链接时,也只能达到2-4MB/s的下载速度,如下图所示;不过没关系,选用IDM的原因之一就是据说它可以实现Google Drive的断点续传。

    在这里插入图片描述

    当下载一个小时后,IDM虽然同样会告诉用户当前下载链接已失效,但是当你尝试让IDM进行链接重定向时,它会要求你再在Drive中手动下载一下,如下图所示。这样一来,它就又可以接管新的下载链接了。而且惊喜的是,IDM的确可以实现对新下载链接的断点续传

    在这里插入图片描述

    但是在我测试IDM之时, 我已多次尝试下载该文件了。Google Drive以 此文件已超出下载限制的原因 拒绝让我重新下载。因此,尽管IDM在断点续传时能重定向链接并以一个不错的速度接管,但此时的我们不得不寻找一个新的方法。 

    有效的解决方案

    最终,我们只能寄希望于寻找具有足够带宽的国外主机,使用其下载大文件后,设法转移到国内本地。这种做法虽然有些繁琐,但只要文件能成功下载到我们能控制的主机中,想再对其进行各种操作就不会有限制了。

    申请Vultr主机

    Vultr主机的一大优势在于它的主机带宽据说非常不错,同时它支持支付宝缴费,而且扣费方式是按照小时收费的。因此,从你创建一个主机的docker实例,到结束任务销毁这个实例的过程中,通常只花费不到1$的价格就足够了,这便于我们在上面进行一些临时性的任务和实验。

    进入Vultr官网,登录后在Deploy中依次选择购买的主机地点、系统、存储空间等配置。此处要记得根据目标文件的大小选择一个空间充足的方案,这里我选择了160GB存储的配置,如下图所示。

    在这里插入图片描述

    在充值(无需充太多,$10即可)并启动之后,我们需要在当前这个主机实例中通过命令行的方式下载Google Drive中的文件。

    获取Oauth API Key

    Google作为一个API狂魔,自然也提供了Google Drive文件下载的Oauth API。可通过如下步骤实现Drive API的申请,并在命令行中进行文件的下载。

    Oauth 2.0中,选择Drive API v3下的 https://www.googleapis.com/auth/drive.readonly,如下图所示。

    在这里插入图片描述

    选择 Authorize API,并选择 Exchange authorization code for tokens 就可以申请到一个新的Drive API 下载用 Access Token,这一token的有效期同样为1小时。

    在这里插入图片描述

    记得将该 Access Token 复制保存出来,以便下一步使用。

    下载至Vultr主机

    下面我们使用curl在命令行中下载Drive中的文件。

    curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://www.googleapis.com/drive/v3/files/YOUR_FILE?alt=media -o OUTPUT_FILE
    

    其中有三个需要自己填写字段:

    • YOUR_ACCESS_TOKEN: 填写我们刚申请的token即可
    • YOUR_FILE: 在Drive右击要下载的文件, 选择 获取链接, 将链接的后半部分填入即可, 如下图所示.

    在这里插入图片描述

    • OUTPUT_FILE: 下载要输出的文件名, 随意填写即可; 如果是断点下载, 记得保持文件名一致.

    运行命令开始下载。可以看到,海外Vultr主机的直连Drive的带宽非常可观,平均速度居然可以达到100MB/s左右。这一速度下载70GB的文件也只需要十几分钟。

    在这里插入图片描述

    因此,使用国外主机是完全可以有效下载Google Drive中的大文件的,1小时的极限可以下载400GB左右的文件,而且可以使用curl -C实现断点续传,由此理论上能实现任意大文件的有效下载。

    下载至国内主机 

    在这里插入图片描述

    此时文件已成功下载至我们能控制的一个主机了,我们可设法将其二次下载至国内的本地服务器。而Vultr的主机带宽已经充分证明了它网络服务的可靠性。因此,可以在Vultr主机上架设nginx,并直接将该大文件使用http服务发布在公网上,通过nginx + http的文件下载服务,在国内本地主机上使用IDM等第三方软件加速下载。

    在Vultr上直接`apt install nginx` 来安装nginx,安装记得在Vultr主机上使用如下命令关闭防火墙。启动服务如下所示。

    sudo ufw app list
    sudo ufw allow 'Nginx Ful'
    

    在这里插入图片描述

    在设置之后,可以直接将我们的bodmas.zip这一大文件移动到Debian的nginx Web根目录(`/var/www/html`)下。之后,本地直接访问`http://my_vultr_ip/bodmas.zip`,让IDM接管下载,即可看到此时的下载速度基本也能达到70MB/s,而且不会有下载时间限制。

    在这里插入图片描述

    最终,这一70GB的数据集文件,几经转折终于抵达了我们自己的电脑中。而我们Vultr主机也可以直接destroy掉,此时只花了1$不到,余额可以先放着以备他用。

    遗留问题

    Google Drive Desktop的使用:这个软件的用户体验实在是太差了,但它毕竟是Google Drive的官方客户端,因此上文中我的失败经验有没有可能只是我的打开方式不对,但软件本身其实是支持断点续传的?

    CyberDuck的断点续传:CyberDuck也是一款非常出名的第三方下载软件,它可以连接许多产品的文件下载服务。但由于在没有license的条件下,是无法连接至Google Drive的。因此CyberDuck是否能做到比IDM更强大、更高效的断点续传?这一结果可能需要他人来进一步测试了。

    总结

    以上成功的方案可以基本总结成下面的5步:

    1. 申请一个带宽可靠、存储足够的海外主机(推荐Vultr);
    2. 申请Google Drive的Oauth API Key (获得 Access Token);
    3. 使用curl -C 下载目标文件至海外主机;
    4. 在海外主机上架设nginx,设置防火墙,并将目标文件移动至根目录;
    5. 本地使用IDM等多线程下载工具,在海外主机的Web服务中接管目标文件的下载。

    诚然,直接使用IDM接管并断点续传这一方案在特定条件下也是可以成功的,但终究没有直接使用最后一种方法的下载速度快而且省心。在经过简单的配置之后,我们基本可以下载Google Drive中任意的超大型文件了。

    最后,感谢你的阅读,欢迎给出建议或者其他更高效的方法。以一句歌词作为结束:

    “即使只相隔着块纸,相亲必须同时同意” ——容祖儿《墙纸》

     

    展开全文
  • Google Drive for Unity3D 介绍 Google Drive for Unity3D插件。 您可以在Google云端硬盘存储空间上上传文件,浏览和下载。 该插件支持PC(Windows和Mac),Android和iOS。 Google云端硬盘支持只能由您的应用访问...
  • Google Drive FTP Adapter通过FTP协议连接到Google Drive

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,708
精华内容 10,283
关键字:

googledrive