首先使文件可公开共享,然后:-
我用于小文件下载
wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME
对于大文件
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.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
但是如何在不创建可公开共享的链接的情况下做到这一点?
注意:wget 对我来说不是必需的。如果您知道任何其他软件,请推荐我,但它必须包含以下功能:-
- 基于命令行
- 下载文件恢复功能
- 轻便易携(如果可能的话,这不是强制性的)
- 多线程下载和文件附加功能(如果可能的话,不是强制性的)
答案1
尝试看看rclone
https://rclone.org/
它具有非常完整的功能集,基于命令行(语法非常类似于rsync
),并且支持 Google Drive通过 OAuth。应该正是您要找的。
答案2
虽然许多以前的方法不再有效,但我发现以下方法仍然有效(至少在今天):
wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILE_ID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILE_ID" -O FILE_NAME && rm -rf /tmp/cookies.txt
(将 FILE_ID 和 FILE_NAME 替换为 Google Drive 下载链接中的文件 ID 以及您要下载的文件的名称)
(答案最初发现于https://silicondales.com/tutorials/g-suite/how-to-wget-files-from-google-drive/)
答案3
getgoogle
在 PATH 中的某处创建一个名为 bash 脚本,例如 /usr/local/bin 或 ~/bin (如果您已在环境中映射了它)
#!/bin/bash
if [[ $1 == *"id="* ]]; then
ID=${1##*'id='}
else
ID=$1
fi
echo "Retrieving Google drive item with ID $ID"
wget --no-check-certificate -r "https://docs.google.com/uc?export=download&id=$ID" -O $(curl -s "https://drive.google.com/file/d/$ID/
view?usp=sharing" | grep -o '<title>.*</title>' | cut -d'>' -f2 | awk -F ' - Goo' '{print $1}')
确保getgoogle
在保存脚本后通过运行以下命令更改脚本的权限:
chmod u+x getgoogle
用法:
getgoogle <URL|ID>
无论您有完整链接URL
还是仅有标识符,都会下载 Google Drive 项目ID
,并在下载时将其重命名为上传到 Google Drive 的文件的原始文件名。