共计 4081 个字符,预计需要花费 11 分钟才能阅读完成。
AutoRclone 是一个用 Python 写的小程序的集合,
- 学习了 folderclone 利用 service accounts 来替代普通 Google 账号进行拷贝 / 上传;
- 通过 rclone rc 来做到对 Rclone 任务的监、控;
- 还可以用 Google Groups 的形式对成百上千的 service accounts 进行管理。
从而方便快速地
- 从本地到 Team Drive,
- 从公共分享目录到 Team Drive,
- 再或者从 Team Drive 到 Team Drive。
本文基于 Linux centos7 系统参照网上的教程实际操作的。
准备工作
1. 一个谷歌账号
2. 一个 Google Team Drive 帐户,网上很多。
1、安装相关依赖
检查 python3
如果未安装或者版本太低(3.4 及以下),先装好。
python3 -V
安装 pip3、依赖和 rclone
Centos:
sudo yum update
sudo yum install -y python3-pip screen git curl
curl https://rclone.org/install.sh | sudo bash
下载并安装 AutoRclone
sudo git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && sudo pip3 install -r requirements.txt
生成 SA
一个账户都有 750G 的限制,AutoRclone 目的在于当一个账号限额达到之后,自动切换至下一个
一般来说 一个项目 = 100 个 sa=750GB*100=75T,一天 75T 足够了
生成服务项目
首先开启 Drive API(https://developers.google.com/drive/api/v3/quickstart/python)
然后通过 ftp 工具或者宝塔将你下载的 credentials.json
文件上传到 AutoRclone 目录下。
接下来有三个方法:
1、之前没有创建过项目
直接运行:
python3 gen_sa_accounts.py --quick-setup 1
以上命令含义:
- 创建 1 个项目
- 开启相关的服务
- 创建 100 个 service accounts
- 将 100 个 service accounts 的授权文件下载到 accounts 文件夹下面
2、已有项目,需要创建新的
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
若第一次运行会让你开启权限
如下图,浏览器打开返回的链接:
登录拥有 Team Drive 账号的谷歌账户:
【高级】
【转至 Quickstart(不安全)】【允许】Quickstart
选择 允许:
复制返回的代码,粘贴
到 Xshell 会话窗口:
粘贴后回车:
如果回车后,你看到如上图的提示,原因是谷歌账号未开启 Service Usage API
复制打开提供的链接地址,到浏览器打开,注意是 登录你刚刚授权的谷歌账户,然后点击启用:
启用成功后,回到 Xshell 会话窗口,点击回车,之后就会显示类似下图内容:
接着 你就会发现你的 AutoRclone 文件下面的 accounts 文件夹下会有很多的 json 文件。
将 service accounts 加入 Google Groups
此为可选操作,但建议操作
算是整个过程里最麻烦的步骤了
这个步骤也分两种情况
- 你的账户是普通 Google 账户
- 你的账户是 G Suite 管理员
如果是管理员,这一个步骤还是比较快速的
但是如果你只是免费领取的 Google Team Drive 账户,那就比较麻烦
我们这一步需要将刚刚生成的数以百计的 Service Accounts 添加到 Google Group 中
而且,每次只能加 10 个,每 24 小时只能加 100 个
创建 Google Group
打开链接:https://groups.google.com/
创建群组:
填写群组信息:
你可以在 Google API(https://console.developers.google.com/apis/dashboard)
看到你的项目及 SA
点开全部 就能看到你 all 的 sa (当然你也可以不用看) 只是为了让你理解你的服务账号在哪 接下来 你就发现 每一个项目都有 100 个电子邮件。数百个账户一个个复制实在太慢,我们需要借助一个 Chrome 插件:
https://chrome.google.com/webstore/detail/email-extractor/jdianbbpnakhcmfkcckaboohfgnngfcc?hl=en-US
然后我们就可以通过刚刚安装的插件,批量获取到这些邮箱:
我们可以以 txt 格式下载这些邮箱,注意这里会将你自己的谷歌账户邮箱也提取出来
# 检查是不是 100 个 sa 口令 2 个项目 全部 copy 出来 删掉后面的几行
分 10 次添加 一共 100 个 免费用户每次只能添加 10 个 24 小时只能添加 100 个
回到 Group 页面,左侧 直接添加成员 ,将 Service Accounts 邮箱复制粘贴 10 个,点击 添加:
重复以上步骤,将 100 个邮箱添加进去:
找到群组邮箱:
将这个邮箱添加到你的 Google Team Drive 中:
添加完成后,基本就完成所有设置了
直接使用
首先将 service accounts 加入到目标 Team Drive,
没有这步操作会在转存的时候出现错误:找不到团队盘的 ID。
cd /root/AutoRclone
# 将以下 SharedTeamDriveDstID 替换为你团队盘 ID
python3 add_to_team_drive.py -d SharedTeamDriveDstID
查看团队盘 ID:
打开你的团队盘,查看浏览器上的链接,比如:
https://drive.google.com/drive/u/2/folders/0App-QeDCIy_mUk9PVA
以上链接中,0App-QeDCIy_mUk9PVA
就是 ID
那么就应该运行命令:
python3 add_to_team_drive.py -d 0App-QeDCIy_mUk9PVA
回车后,再次回车:
第一次运行
首先进入 AutoRclone
文件夹
cd AutoRclone
[可选] 开一个 screen,这样的好处是即使断开了 ssh 连接,脚本还能继续运行。
screen -S rclone
退出 screen:按住 alt,按 a,松开 a,按 d。
screen -ls # 列出所有 screen 和序号
screen -r id # id 为 -ls 展示的序号
命令行运行 AutoRclone,执行文件转存。举个例子:
python3 rclone_sa_magic.py -s 1N8NcDtwO8_OEXo9Cus2iednMdnZGv9Xy -d 0AOmwzTX-T1wbUk9PVA -dp tmp -b 1 -e 100
1N8NcDtwO8_OEXo9Cus2iednMdnZGv9Xy
为我想转存的别人的共享文件夹 id(注意不能是文件 id)
0AOmwzTX-T1wbUk9PVA
为我的共享盘(已经添加谷歌群组)的 id
tmp
为我的共享盘中即将存放该文件夹的路径,若不存在会自动创建。
原始
python3 rclone_sa_magic.py -s SourceID -d DestinationID -dp DestinationPathName -b 1 -e 600
更改
python rclone_sa_magic.py -s 1jqb6E0RUMb94ZdICGzta1jU0hAJSEmvE -d 0AHZBKsbi19RGUk9PVA -dp IDBD-765 原盘 -b 20 -e 30
#
-s 别人分享的 ID
-d 自己 TD 盘的 ID
-dp 要拷贝的文件夹名称
-b sa 开始的用户
-e sa 结束的用户
比如我今天已经把前十个的限额用满了,那我 -b 11 即可。
如果想看参数的具体含义,直接运行 python rclone_sa_magic.py -h
查看日志
如果报错了,注意查看日志文件。
tail -f log_rclone.txt # 实时
cat log_rclone.txt
如果发现拷贝内容明显少于源 Team Drive 里面的内容,那么你可能碰到 Bug 了,请给上运行参数再加上 –disable_list_r
如果你一开始就碰到了
rclone --config rclone.conf size --disable ListR src001: 源路径
rclone --config rclone.conf size --disable ListR dst001: 目标路径
如果发现目标盘比源盘体积还要大,那么对目标盘进行去重;如果发现目标盘比源盘少文件了,那么再拷贝一次;如果还是少,那么就
是源盘里面的有重复文件了,直接对其进行去重复。去重命令:
rclone --config rclone.conf dedupe src001: 源路径
rclone --config rclone.conf dedupe dst001: 目标路径
参考教程
https://www.uud.me/qiwenzalun/autorclone-gclone.html#%E7%94%9F%E6%88%90ServiceAccounts
https://zhuanlan.zhihu.com/p/124305044
https://kkdfxz.gitbook.io/fx/jiao-cheng-zhong-xin/drive750g#%E6%AD%A5%E9%AA%A4%E5%9B%9B-%E5%BC%80%E5%A7%8B%E8%BF%90%E8%A1%8C