今天在工作中遇到了一个挑战,在这里和大家分享一下我的解决过程。突然接到一个紧急需求,需要在服务器上部署一个模型文件,而这个文件存储在谷歌云盘里。摆在面前有两个选择:
  • 方案一:先在本地下载,然后再上传到服务器。
  • 方案二:直接在服务器上下载。
这个模型文件足足有 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. Linux只gz文件格式压缩与解压缩

    压缩成gz gzip * gzip file 具体参数可使用help查看 解压缩gz gunzip * gunzip file.gz 具体也是可以用help查看

  2. c# 添加系统右键菜单(Windows11以前)

    今天介绍一下在注册表中添加系统右键菜单实现在文件夹的右键菜单中添加,删除以及查找是否已经添加的方法. 注意这里的方法仅限于Windows11之前使用,Windows11默认的右键菜单已经改变,需要使用 ...

  3. javascript 实现参数重载

    1.概要 在java中,同一个函数签名,比如 getUser,我们可以根据参数的不同,调用不同功能的方法.这也就是参数重载,如何在javascript也实现参数重载呢? 2.实现方法 function ...

  4. Node.js 介绍和特点

    1.node.js是什么 node.js不是一门语言,而是一个开发平台,是一个基于 Chrome V8 引擎的 JavaScript 运行环境. 何为开发平台:有对应的语言和实现特定功能的api 2. ...

  5. 如何实现LLM的通用function-calling能力?

    众所周知,LLM的函数function-calling能力很强悍,解决了大模型与实际业务系统的交互问题.其本质就是函数调用. 从openai官网摘图: 简而言之: LLM起到决策的作用,告知业务系统应 ...

  6. arcgis技术文章索引

    1.Error:  The System Clock has been set back to the past. 点击打开链接 2.Error:  Error 1500. Another insta ...

  7. 【Amadeus原创】修改docker里面网站的port端口映射

    切记:以下顺序千万不能颠倒!否则不生效! 1. 查看需要修改的容器,记住container id docker ps -a 2. 停止容器 docker stop xxx 3. 修改容器的端口映射配置 ...

  8. 通过云主机调用API,一键训练部署商品问答模型

    本文分享自华为云社区<[开发者空间实践指导]CodeArts IDE调用API训练商品问答模型>,作者:开发者空间小蜜蜂. 一.案例介绍 在电子商务领域,售前和售后服务是确保客户满意度和提 ...

  9. 【Spring】作业记录:spring项目从创建、配置到功能实现、测试

    提前声明: 1.这只是文档一次作业记录,也许会有不太恰当的地方,所以仅供参考. 2.适合不知道怎么创建配置的参考.仅仅是参考,而不是抄代码. 目录 项目创建 配置pom.xml 连接数据库 快速创建实 ...

  10. IDEA批量实现CRLF转换成LF问题

    需要注意idea项目中右下角:选择LF,否则到时候部署到生产环境上会报错'\r\n'问题,之前的解决方案是 dos2unix 然后很多文件报这个问题,索性进行批量转换,但是很快拉去的新项目又会出现同样 ...