Google Drive 命令行下载文件完整指南
参考资料
前言
在进行深度学习或数据分析时,我们经常需要从 Google Drive 下载大型数据集和预训练模型。然而,直接通过浏览器下载存在以下问题:
- 下载速度慢,容易中断
 - 大文件下载不稳定
 - 无法在服务器端直接下载
 - 断点续传支持差
 
本文介绍两种在 Linux 命令行环境下高效下载 Google Drive 文件的方法,经过实践验证,均可稳定使用。
前置要求
⚠️ 重要提示:由于网络限制,访问 Google Drive 需要科学上网工具。确保你的服务器或本地环境已配置好代理。
配置代理(如果需要)
# 设置代理环境变量
export http_proxy=http://127.0.0.1:20171
export https_proxy=http://127.0.0.1:20171
export all_proxy=socks5://127.0.0.1:20170
方法一:使用 wget 下载文件
适用场景
- ✅ 下载单个文件
 - ❌ 不支持下载文件夹
 - ✅ 适合脚本自动化
 
获取文件 ID
首先需要从 Google Drive 分享链接中获取 fileid。
分享链接格式:
https://drive.google.com/file/d/FILE_ID/view?usp=sharing
其中 FILE_ID 就是我们需要的 fileid。
下载脚本
#!/bin/bash
# 切换到目标目录
cd data/
# 设置文件信息
filename='OfficeHomeDataset_10072016.zip'
fileid='0B81rNlvomiwed0V1YUxQdC1uOTg'
# 下载文件
wget --load-cookies /tmp/cookies.txt \
  "https://drive.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://drive.google.com/uc?export=download&id=${fileid}' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=${fileid}" \
  -O ${filename} && rm -rf /tmp/cookies.txt
# 解压文件
unzip -q ${filename}
# 删除压缩包
rm ${filename}
echo "下载完成!"
命令解析
# 1. 保存 cookies 到临时文件
--save-cookies /tmp/cookies.txt
# 2. 保持 session cookies
--keep-session-cookies
# 3. 不检查证书(避免 SSL 错误)
--no-check-certificate
# 4. 提取确认码
sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p'
# 5. 输出到指定文件
-O ${filename}
# 6. 清理临时 cookies
rm -rf /tmp/cookies.txt
示例:下载单个文件
# 替换为你的文件信息
filename='my_dataset.zip'
fileid='YOUR_FILE_ID_HERE'
wget --load-cookies /tmp/cookies.txt \
  "https://drive.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://drive.google.com/uc?export=download&id=${fileid}' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=${fileid}" \
  -O ${filename} && rm -rf /tmp/cookies.txt
方法二:使用 gdown 下载(推荐)
适用场景
- ✅ 下载单个文件
 - ✅ 下载整个文件夹
 - ✅ 使用简单,命令清晰
 - ✅ 支持断点续传
 
安装 gdown
# 使用 pip 安装
pip install gdown
# 或指定版本
pip install gdown==4.7.1
# 升级到最新版本
pip install --upgrade gdown
版本说明
重要:不同版本的 gdown 使用方式略有不同。
gdown 4.3.1 之前的版本
# 下载文件(使用 --id 参数)
gdown --no-check-certificate --id FILE_ID
# 下载文件夹
gdown --no-check-certificate --folder https://drive.google.com/drive/folders/FOLDER_ID
gdown 4.3.1 及之后的版本
从 4.3.1 版本开始,--id 参数被废弃,改用直接链接方式。
# 下载文件(推荐方式)
gdown 'https://drive.google.com/uc?id=FILE_ID'
# 或者使用完整链接
gdown 'https://drive.google.com/file/d/FILE_ID/view?usp=sharing'
# 下载文件夹
gdown --folder 'https://drive.google.com/drive/folders/FOLDER_ID'
# 下载文件夹(不检查证书)
gdown --folder --no-check-certificate 'https://drive.google.com/drive/folders/FOLDER_ID'
实际使用示例
示例 1:下载单个文件
# 方式 1:使用 uc 链接
gdown 'https://drive.google.com/uc?id=1A2B3C4D5E6F7G8H9I0J'
# 方式 2:使用分享链接(自动转换)
gdown 'https://drive.google.com/file/d/1A2B3C4D5E6F7G8H9I0J/view?usp=sharing'
# 指定输出文件名
gdown 'https://drive.google.com/uc?id=1A2B3C4D5E6F7G8H9I0J' -O my_model.pth
示例 2:下载整个文件夹
# 下载文件夹(保持目录结构)
gdown --folder 'https://drive.google.com/drive/folders/1A2B3C4D5E6F7G8H9I0J'
# 安静模式(不显示进度条)
gdown --folder --quiet 'https://drive.google.com/drive/folders/1A2B3C4D5E6F7G8H9I0J'
# 指定输出目录
gdown --folder 'https://drive.google.com/drive/folders/1A2B3C4D5E6F7G8H9I0J' -O ./datasets/
示例 3:下载大文件(处理病毒扫描警告)
对于大文件(>25MB),Google Drive 会提示病毒扫描警告,gdown 会自动处理:
# gdown 会自动绕过病毒扫描警告
gdown --fuzzy 'https://drive.google.com/file/d/LARGE_FILE_ID/view?usp=sharing'
常用参数说明
# 基本下载
gdown URL
# 常用参数
--no-check-certificate    # 不检查 SSL 证书
--folder                  # 下载文件夹
-O, --output FILE        # 指定输出文件名
--quiet                  # 安静模式,不显示进度
--fuzzy                  # 模糊匹配(处理大文件扫描警告)
--remaining-ok           # 允许部分下载失败
--proxy PROXY            # 指定代理服务器
实用脚本
批量下载脚本
#!/bin/bash
# 批量下载 Google Drive 文件
# 文件列表(格式:FILE_ID|文件名)
files=(
    "1A2B3C4D5E6F7G8H9I0J|dataset_part1.zip"
    "2B3C4D5E6F7G8H9I0J1K|dataset_part2.zip"
    "3C4D5E6F7G8H9I0J1K2L|pretrained_model.pth"
)
# 创建下载目录
mkdir -p downloads
cd downloads
# 遍历下载
for file in "${files[@]}"; do
    IFS='|' read -r file_id filename <<< "$file"
    echo "正在下载: $filename"
    gdown "https://drive.google.com/uc?id=$file_id" -O "$filename"
    
    if [ $? -eq 0 ]; then
        echo "✓ $filename 下载成功"
    else
        echo "✗ $filename 下载失败"
    fi
    echo "---"
done
echo "所有文件下载完成!"
带进度显示的下载脚本
#!/bin/bash
download_from_gdrive() {
    local url=$1
    local output=$2
    
    echo "=========================================="
    echo "开始下载: $output"
    echo "=========================================="
    
    gdown "$url" -O "$output"
    
    if [ $? -eq 0 ]; then
        echo "✓ 下载成功: $output"
        ls -lh "$output"
    else
        echo "✗ 下载失败: $output"
        return 1
    fi
}
# 使用示例
download_from_gdrive \
    'https://drive.google.com/uc?id=YOUR_FILE_ID' \
    'output_filename.zip'
常见问题及解决方案
问题 1:SSL 证书验证失败
错误信息:
SSL certificate problem: unable to get local issuer certificate
解决方案:
# wget 方式
wget --no-check-certificate URL
# gdown 方式
gdown --no-check-certificate URL
问题 2:文件过大,提示病毒扫描
错误信息:
Cannot retrieve the public link of the file. You may need to change the permission to 'Anyone with the link'
解决方案:
# 使用 --fuzzy 参数
gdown --fuzzy 'https://drive.google.com/file/d/FILE_ID/view'
问题 3:下载文件夹时权限不足
错误信息:
Permission denied
解决方案:
- 确保 Google Drive 分享设置为”任何拥有链接的人都可以查看”
 - 使用 
--no-check-certificate参数gdown --folder --no-check-certificate 'FOLDER_URL' 
问题 4:网络连接超时
解决方案:
# 使用代理
export http_proxy=http://proxy_server:port
export https_proxy=http://proxy_server:port
# 或在命令中指定
gdown --proxy http://proxy_server:port URL
问题 5:gdown 版本不兼容
解决方案:
# 卸载当前版本
pip uninstall gdown
# 安装指定版本
pip install gdown==4.7.1
# 查看版本
gdown --version
方法对比
| 特性 | wget 方式 | gdown 方式 | 
|---|---|---|
| 下载文件 | ✅ 支持 | ✅ 支持 | 
| 下载文件夹 | ❌ 不支持 | ✅ 支持 | 
| 命令复杂度 | 复杂 | 简单 | 
| 断点续传 | ❌ | ✅ | 
| 大文件处理 | 一般 | 优秀 | 
| 安装要求 | 系统自带 | 需要 pip | 
| 推荐指数 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | 
总结
本文介绍了两种从 Google Drive 命令行下载文件的方法:
- wget 方式:适合下载单个文件,命令较复杂,但无需额外安装
 - gdown 方式:功能更强大,支持文件和文件夹下载,使用简单,强烈推荐
 
推荐使用场景
- 简单下载:使用 gdown 的最新版本
 - 批量下载:编写脚本使用 gdown
 - 无法安装 pip:使用 wget 方式
 
最佳实践
# 1. 安装最新版 gdown
pip install --upgrade gdown
# 2. 配置代理(如需要)
export https_proxy=http://127.0.0.1:20171
# 3. 下载文件
gdown 'https://drive.google.com/uc?id=FILE_ID' -O output.zip
# 4. 下载文件夹
gdown --folder 'https://drive.google.com/drive/folders/FOLDER_ID'
希望本文能帮助你高效地从 Google Drive 下载所需资源!