今天在工作中遇到了一个挑战,在这里和大家分享一下我的解决过程。突然接到一个紧急需求,需要在服务器上部署一个模型文件,而这个文件存储在谷歌云盘里。摆在面前有两个选择:
  • 方案一:先在本地下载,然后再上传到服务器。
  • 方案二:直接在服务器上下载。
这个模型文件足足有 5 个 G,通过本地下载再上传到服务器,不仅要耗费大量的时间,还可能因为网络不稳定导致传输失败。所以,我果断选择了第二种方案。那么,我是如何成功在服务器上完成下载的呢?接下来就详细为大家介绍一下整个过程。
如果你也遇到过类似的问题,或者对从服务器直接下载谷歌云盘文件的方法感兴趣,就请继续关注我的后续内容吧!
 
这里以https://drive.google.com/drive/folders/1jI32B-2JX17seSGG0-MnZgUhCMHCEZlx内容为例进行演示:

要通过 wget 下载谷歌云盘中的大文件,你需要一些额外的步骤,因为 Google Drive 并不直接允许通过 wget 下载文件。通常,你需要使用 Google Drive 的共享链接,并处理一些重定向问题。以下是如何用 wget 下载 Google Drive 上的大文件的步骤:

  1. 获取文件的共享链接:首先,你需要确保文件在 Google Drive 中是共享的,并获取共享链接。链接通常看起来像这样:

    https://drive.google.com/file/d/FILE_ID/view?usp=sharing
    

    在这个链接中,FILE_ID 是文件的唯一标识符。

    这里获取到https://drive.google.com/file/d/1mjIqU-c5q3qMI74XZd3UrkZek0IDTUUh/view?usp=sharing,所以它的file_id=1mjIqU-c5q3qMI74XZd3UrkZek0IDTUUh

  2. 使用 wget 下载文件:你可以使用以下的命令来下载文件

    wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=FILE_ID' -O FILENAME
    

    FILE_ID 替换为文件的 ID,将 FILENAME 替换为你希望保存的文件名。

  3. 处理重定向问题:由于 Google Drive 的大文件下载会遇到额外的确认步骤(例如安全扫描),你可能需要绕过这一过程。如果文件较大(超过100MB),你可能需要通过 wget 先获取一个确认文件(通常是 confirm),然后才会继续下载。

    你可以使用下面的脚本来解决这一问题:

    #!/bin/bash
    
    # 设置文件ID和输出文件名
    FILE_ID="1mjIqU-c5q3qMI74XZd3UrkZek0IDTUUh" # 替换成实际文件ID
    OUTPUT="unet.pth" # 替换成你想保存的文件名 # 获取下载页面并保存响应
    RESPONSE=$(wget --quiet --save-cookies cookies.txt \
    --keep-session-cookies --no-check-certificate \
    "https://drive.google.com/uc?export=download&id=${FILE_ID}" \
    -O -) # 保存响应以供调试
    echo "$RESPONSE" > response.html # 提取完整的下载参数
    DOWNLOAD_URL="https://drive.usercontent.google.com/download"
    ID=$(echo "$RESPONSE" | grep -o 'name="id" value="[^"]*"' | cut -d'"' -f4)
    EXPORT=$(echo "$RESPONSE" | grep -o 'name="export" value="[^"]*"' | cut -d'"' -f4)
    CONFIRM=$(echo "$RESPONSE" | grep -o 'name="confirm" value="[^"]*"' | cut -d'"' -f4)
    UUID=$(echo "$RESPONSE" | grep -o 'name="uuid" value="[^"]*"' | cut -d'"' -f4) # 检查是否所有参数都已获取
    if [ -z "$ID" ] || [ -z "$EXPORT" ] || [ -z "$CONFIRM" ] || [ -z "$UUID" ]; then
    echo "无法提取所有必要的下载参数"
    echo "ID: $ID"
    echo "EXPORT: $EXPORT"
    echo "CONFIRM: $CONFIRM"
    echo "UUID: $UUID"
    exit 1
    fi # 构建完整的下载URL
    FULL_URL="${DOWNLOAD_URL}?id=${ID}&export=${EXPORT}&confirm=${CONFIRM}&uuid=${UUID}" echo "开始下载文件..."
    echo "使用URL: $FULL_URL" # 执行下载
    wget --load-cookies cookies.txt \
    --no-check-certificate \
    "$FULL_URL" \
    -O "$OUTPUT" # 检查下载是否成功
    if [ $? -eq 0 ]; then
    echo "文件下载成功:$OUTPUT"
    else
    echo "下载失败"
    exit 1
    fi # 清理临时文件
    rm -f cookies.txt exit 0

    4.使用方法

    1. 将脚本保存为文件(例如:download_gdrive.sh)
    2. 修改FILE_ID为你要下载的文件ID
    3. 修改OUTPUT为你想保存的文件名
    4. 给脚本添加执行权限:chmod +x download_gdrive.sh
    5. 运行脚本:./download_gdrive.sh

    这个脚本应该能够正确处理Google Drive的病毒扫描警告页面,并成功下载文件。

用脚本采用wget方式直接下载谷歌云盘里面的文件实操的更多相关文章

  1. 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源

    前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...

  2. Xshell通过ssh方式连接Linux服务器,通过Xftp进行文件传输

    准备工作: 一.Linux服务器一台,并配置ssh(本文以腾讯云服务器为例). 1.生成秘钥 打开腾讯云控制台,依次选择:总览->云服务器->SSH秘钥 点击创建秘钥,输入秘钥名称,点击确 ...

  3. 使用wget下载百度云资源

    目录 使用wget下载百度云资源 一.材料准备: 二.步骤 三.总结 使用wget下载百度云资源 一.材料准备: [BaiduPan explorer]谷歌插件,可以加载文件的真实下载地址 [Chro ...

  4. 采用二进制文件方式安装loki和promtail

    1. 下载二进制文件 官方下载地址:https://github.com/grafana/loki/releases 下载如图所示的这俩文件,Grafana采用yum方式安装 cd /usr/loca ...

  5. [No00006B]方便的网络下载工具wget 可下载网站目录下的所有文件(可下载整个网站)

    wget是linux下命令行的下载工具,功能很强大,它能完成某些下载软件所不能做的,比如如果你想下载一个网页目录下的所有文件,如何做呢?网络用户有时候会遇到需要下载一批文件的情况,有时甚至需要把整个网 ...

  6. shell脚本的执行方式

    编写好的shell脚本(如:test),可以采取两种方式进行运行: 一. $ sh test 一般不采用这种调用方式,尤其不采用"sh<test"的调用方式,因为这种方式将禁 ...

  7. wget 下载百度网盘文件

    上传文件到服务器,有许多种方法,罗列一下我用过的 xftps之类的工具 rz tz命令 git 上传到码云 通过wget方式,上传文件到百度网盘,七牛云等只要支持wget方式下载即可 下面介绍一下怎么 ...

  8. 采用DoGet方式提交中文,乱码产生原因分析及解决办法

    前段时间某功能在测试机器上出现乱码,情况如下:   现象:           调试搜索功能时,通过doGet方法提交到后台的中文参数在本地和开发测试机器上为乱码(Action层),在测试人员测试机器 ...

  9. Ubuntu16.04采用FastCGI方式部署Flask web框架

    1    部署nginx 1.1    安装nginx服务 root@desktop:~# apt-get install nginx -y 1.2    验证nginx服务是否启动 root@des ...

  10. 在Linux环境下采用压缩包方式安装JDK 13

    本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11663731.html 可以,转载,出处,格式,懂?? 什么是JDK?? 好吧如果你不知道这个问题的话我 ...

随机推荐

  1. 21stUESTC

    数矩形 平面上有 \(n\) 个点,这 \(n\) 个点两两不重合.问这 \(n\) 个点可以组成多少个矩形 请注意:矩形的边不必平行于坐标轴. \(4 ≤ n ≤ 1000\) 保证这些点两两不重合 ...

  2. JavaWeb 入门到实战

    注:看狂神说做的笔记 1.基本概念 1.1 前言 web开发: web:网页的意思,www.baidu.com,就是一个web页面 静态web: 不与数据库进行交互,静态显示网页数据(你刚学 html ...

  3. ZCMU-1129

    数学公式题罢了 学长 1.斯特灵公式: 2.对数公式(因为以10为底,得到的是10^x,所以最后向下取整加上1): #include<cstdio> #include<cmath&g ...

  4. canvas(六)绘制带说明的饼图

    1.前言 将以下数据渲染成饼图,数据格式: var data = [ {value:"10",title:"16-22的年龄人数"}, {value:" ...

  5. Pwn2own 2023 Tesla 利用链摘要

    Pwn2own 2023 Tesla 利用链摘要 https://www.youtube.com/watch?v=6KddjKKKEL4 攻击链: 利用蓝牙协议栈自己实现的 BIP 子协议中的堆溢出, ...

  6. AFL分析与实战

    文章一开始发表在微信公众号 https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247486292&idx=1&sn= ...

  7. 【相邻不同型贪心】LeetCode767 重构字符串

    题解 通常直接思考最佳策略是十分困难的,我们不妨思考每一种情况需要如何处理: 整个字符串只有一种字符 若字符串长度为 \(1\),那么字符串本身即为答案: 若字符串长度大于等于 \(2\),那么不存在 ...

  8. 介绍 MSTest Runner - CLI, Visual Studio 等更多

    介绍 MSTest Runner - CLI, Visual Studio 等更多 https://devblogs.microsoft.com/dotnet/introducing-ms-test- ...

  9. 中电金信:数字经济时代,AI+金融技术应用与未来发展

  10. TensorFlow 中 conv2d 的确切含义

    在读: <TensorFlow:实战Google深度学习框架> 才云科技Caicloud, 郑泽宇, 顾思宇[摘要 书评 试读]图书https://www.amazon.cn/gp/pro ...