AutoRclone 配合 Gclone 在 Google Drive 账号之间、谷歌团队盘之间快速拷贝、传输学习资料
将实现的功能
从本地服务器传输到 Google Team Drive
从他人分享的链接拷贝到 Google Team Drive
从一个 Google Team Drive 传输到另一个 Google Team Drive
以上都不受 750G 流量限制
如果没有团队盘,可以参考这里自助申请
本文以 ubuntu 为例,当然直接在本地 Windows 上也是可以的
安装 Python3
apt-get update |
若出现如下问题
Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-bx50pf21/progress/
You are using pip version 8.1.1, however version 20.1.1 is available.
You should consider upgrading via the ‘pip install –upgrade pip’ command.解决:更新 pip3
pip3 install --upgrade pip
安装 AutoRclone
git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && pip3 install -r requirements.txt |
生成 Service Accounts
打开链接:https://developers.google.com/drive/api/v3/quickstart/python
登陆 google 账号,点击 Enable the Drive API
,在弹出的页面中勾选 yes ,点击 NEXT,
稍等片刻,继续点击 CREATE,出现如下页面表示成功
点击 DOWNLOAD CLIENT CONFIGUTATION
按钮,下载 credentials.json
文件,然后将下载的 credentials.json
放到 AutoRclone 目录下
如果你用的是 Xshell 可以使用 rz 来上传文件
apt install lrzsz -y |
之后分三种情况
1、之前没有创建过项目
直接运行:
python3 gen_sa_accounts.py --quick-setup 5 |
以上命令含义:创建 6 个项目(项目0到项目5),开启相关的服务,创建 600 个 service accounts,将 600 个 service accounts 的授权文件下载到 accounts 文件夹下面
2、已有 N 个项目,需要创建新的
python3 gen_sa_accounts.py --quick-setup 2 --new-only |
以上命令含义:额外创建 2 个项目(项目 N+1 到项目 N+2),开启相关的服务,创建 200 个 service accounts(2 个项目,每个项目 100 个),将 200 个 service accounts 的授权文件下载到 accounts 文件夹下面
3、使用已有项目,不创建新的
python3 gen_sa_accounts.py --quick-setup -1 |
注意以上命令会覆盖掉已有的 service accounts
我这里是第一种情况,运行 python3 gen_sa_accounts.py --quick-setup 1
,创建两个项目
出现如下报错
/usr/local/lib/python3.5/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.13.1) or chardet (3.0.4) doesn't match a supported version!
解决方法,安装 requests 模块
sudo pip3 install requests
出现如下图
打开链接,并登陆你的 Google 账号(提示不安全,不用管,一路允许)
得到授权代码
复制生成的 code 到终端,回车
如上图所示,显示Press Enter to retry
, 原因是谷歌账号未开启 Service Usage API,复制提供的链接地址,到浏览器打开,开启 Service Usage API 服务
启用成功后回车,等待完成
接着,你就会发现你的 AutoRclone 文件下面的 accounts 文件夹下会有很多的 json 文件。
将 service accounts 加入 Google Groups
可以直接将 service accounts 加入到Team Drive
python3 add_to_team_drive.py -d SharedTeamDriveSrcID
为了便于管理 service accounts,我们创建 Google Group,将 Google Group 邮箱添加到 Team Drive
我们这一步需要将刚刚生成的数以百计的 Service Accounts 添加到 Google Group 中
创建 Google Group
打开链接:https://groups.google.com/ ,创建群组:
批量提取 Service Accounts
如果是 GSuite Admin 账号,可以使用如下方式直接添加进群组
- 将生成的json文件保存到 credentials 文件夹中
- 在管理控制台中为您的组织创建组。创建群组后,您将拥有一个例如的地址sa@yourdomain.com
- 运行
python3 add_to_google_group.py -g sa@yourdomain.com
对于普通账号,生成 Service Accounts 后,直接运行以下命令:
cat ~/AutoRclone/accounts/*.json | grep "client_email" | awk '{print $2}'| tr -d ',"' | sed 'N;N;N;N;N;N;N;N;N;/^$/d;G' > ~/email.txt |
运行后,会自动提取 Service Accounts 邮箱账户,并保存到 ~/email.txt 文件中,同时还很贴心地每 10 个邮箱账户就隔开一行,方便复制。
添加到 Google Group
将 email.txt 文件下载到本地
回到 Group 页面,右上角 管理成员:
左侧 直接添加成员,将 Service Accounts 邮箱复制粘贴 10 个,点击 添加:
(注意每次只能添加 10 个,每 24 小时只能添加 100 个)
重复以上步骤,将 100 个邮箱添加进去
将 Google Group 邮箱添加到 Team Drive
点击关于,找到群组邮箱:
复制下来,添加到 Google Team Drive 成员中
添加完成后,基本就完成所有设置了
如何使用
首先将 service accounts 加入到目标 Team Drive
cd ~/AutoRclone |
查看团队盘 ID:
打开你的团队盘,查看浏览器上的链接,比如:
https://drive.google.com/drive/u/2/folders/0AICYh4X7BkjVUk9PVA
以上链接中,0AICYh4X7BkjVUk9PVA 就是 ID
回车后,再次回车:
直接使用
先安装 rclone
rclone 安装教程可以参考 https://wqdy.top/1243.html
- Linux 环境
curl https://rclone.org/install.sh | sudo bash |
- Windows 环境
直接去 rclone 官网下载 rclone,然后最好将 rclone.exe 所在目录加入系统环境变量
如若将共享链接(https://drive.google.com/drive/u/2/folders/10zOvIf8yBmIuZgBfC3rcDKWHIlODZjXF)里的文件保存到自己的 Team Drive 中的 myfolder 文件夹中
则命令为
python3 rclone_sa_magic.py -s 10zOvIf8yBmIuZgBfC3rcDKWHIlODZjXF -d 0AICYh4X7BkjVUk9PVA -dp myfolder -b 1 -e 600 |
详细的使用命令可以看这里:https://github.com/xyou365/AutoRclone#step-5-start-your-task
配合 Gclone 使用
gclone 其实就是 rclone 的加强版,为 Google Drive 操作增加自动切换账户和命令行根目录 id 操作支持,其他功能与原版 rclone 相同
安装 gclone
bash <(wget -qO- https://git.io/gclone.sh) |
你可以选择将 gclone 重命名为 rclone,方便使用:cp /usr/bin/gclone /usr/bin/rclone
以下内容都是以没有重命名为例,如果你进行了重命名,将以下命令中出现的 gclone 改为 rclone
配置 gclone
首先需要先记下 /root/AutoRclone/accounts/ 中的其中一个文件:
ls /root/AutoRclone/accounts |
回车后会显示很多 .json 后缀的文件名,复制其中一个文件名,记下文件路径,比如:
/root/AutoRclone/accounts/0120894537c1c99c605fe240141af661b44d0c22.json
然后进行 gclone 的配置
gclone 在使用上跟 rclone 是一致的,配置过程也几乎一样,可以参考 https://rclone.org/drive/
运行以下命令进行配置:
gclone config |
配置过程中,需要注意的是,当出现 service_account_file 选项时,填入以上记下的 .json 文件
当出现 service_account_file_path 时,填入 /root/AutoRclone/accounts/
记住配置的 name:gdrive
之后就配置完成了
使用 gclone 复制文件
作者 Github 提供的文档:https://github.com/donwa/gclone/blob/master/README_zh.md
复制共享链接文件到团队盘
gclone copy gdrive:{目录id} gdrive:{目录id} --drive-server-side-across-configs -v |
以上命令中:
gdrive 是你配置 gclone 时设置的 name
目录 id 是共享链接中链接中的最后部分,比如:https://drive.google.com/drive/u/2/folders/1gVAP22Ug5fz0pSe4THZV10078UbNaTob,1gVAP22Ug5fz0pSe4THZV10078UbNaTob 就是目录 id
–drive-server-side-across-configs 用于谷歌盘之间传输时使用,不走服务器流量,传输速度也更快
-v 用于查看传输过程的 ERROR,NOTICE 和 INFO 消息
日志级别
-q - 仅生成 ERROR 消息。
-v - 生成 ERROR,NOTICE 和 INFO 消息,推荐此项。
-vv - 生成 ERROR,NOTICE,INFO和 DEBUG 消息。
–log-level LEVEL - 标志控制日志级别。输出日志到文件
使用 –log-file=FILE 将 Error,Info 和 Debug 消息以及标准错误重定向到 FILE,这里的 FILE 是你指定的日志文件路径。
命令使用示例:
gclone copy gdrive:{18SukoSc0ni0nyU779w82eoo_deLKfbZR} gdrive:{1j4z3UH1thdNB8dOhTUgb0uRHxQaDYL1T} --drive-server-side-across-configs -v |
目标位置除了使用 id 外,也可以直接使用目录,比如:
gclone copy gdrive:{18SukoSc0ni0nyU779w82eoo_deLKfbZR} gdrive:movie/电影合集 --drive-server-side-across-configs -v |
传输本地文件到团队盘
gclone copy /root/Downloads/xxx gdrive:movie/电影合集 -v |
常见报错
- 报错
Failed to copy: failed to make directory: googleapi: Error 404: File not found: 1n-Ya6sagIrGskenJIzWcmKE1ATjxeqYx., notFound
有可能是源日流量 10T 被榨干了
- 报错
googleapi: Error 403: The file limit for this shared drive has been exceeded., teamDriveFileLimitExceeded
团队盘有限制 40w 文件/文件夹,回收站中的文件也计算在 40w 之内,可以新增团队盘,或删除小文件并删除回收站
谷歌云端硬盘 API 不公开清空回收站的方法,但它有一个删除方法可以永久删除文件,而不经过回收站
https://developers.google.com/drive/v2/reference/files/delete |