学习是一种乐趣~
分享是一种美德~

AutoRclone:突破GoogleTeamDrive750G流量限制

GoogleDrive 每日流量限制为750G,AutoRclone 的功能在于通过谷歌开发者平台创建多个服务账户,实现达到750G流量限制后,自动切换账户。

同时,也可以配合Gclone、Fclone加速 Google Drive 账号之间、谷歌团队盘之间拷贝、传输学习资料。* 在使用过程中发现,长时间大流量使用G/Fclone,会加速诱发API限制。所以使用时需要注意。如果不是赶时间,没有必要使用G/Fclone。

 

准备工作

  • 一台 VPS服务器,当然在本地电脑 Windows 上也是可以的
  • 一个谷歌账号
  • 一个 Google Team Drive 账号

 

安装详细过程

步骤 1 下载安装代码

首先,配置环境

Ubuntu、Debian:

sudo apt-get -y update && sudo apt-get -y upgrade && sudo apt -y update && sudo apt -y upgrade && sudo apt install wget curl python3 python3-pip git unzip screen fuse -y

Centos:

yum -y update
yum install epel-release -y
yum install wget curl python3 python3-pip git screen unzip sudo fuse fuse-devel -y

安装完成后,试试输 python3 -V 和 pip3 -V 是否正确显示版本号,如果是则说明 python 配置正确,请继续下一步;如果不是,请自行配置 python 环境。

接着,安装Rclone、AutoRclone及相关Python依赖包

Ubuntu、Debian、Centos:

curl https://rclone.org/install.sh | sudo bash
sudo git clone https://github.com/xyou365/AutoRclone && cd AutoRclone && sudo pip3 install -r requirements.txt

Windows: 安装最新的Rclone,直接从Github下载AutoRclone后在Windows的cmd或PowerShell中切换到AutoRclone的目录,输入以下命令安装相关Python依赖包

pip3 install -r requirements.txt

至此,前期的安装过程结束。
以下所有步骤由于需要用到谷歌服务,请确保cmd或者vps能够翻墙

 

步骤 2 创建GCP项目

1. 浏览器打开: https://console.cloud.google.com/apis/library

 

2. 第一次进入这个界面会弹出如上图的欢迎界面,同意之后点击同意并继续。点击页面上方选择项目,点击新建项目并填写相关信息(根据图示一步一步来)

 

此时,已经创建好了一个全新的项目,我们继续。

3. 开启相关API

一般情况下需要开启如下5个API

Google Drive API
Identity and Access Management (IAM) API
Service Usage API
Cloud Resource Manager API
IAM Service Account Credentials API

我只示例Google Drive API开启具体步骤,其余API步骤相同:

在“搜索API和服务”框内输入 drive,点击Google Drive API。

 

点击 启用,稍等片刻,Google Drive API就启动成功了。

然后点击左上角三条横线,找到 API与服务-库 搜索其余4个API并开启。(有的默认开启的就不用管了)

操作完成后,我们检验一下是否全部开启成功:点击左上角三条横线,找到 API与服务-信息中心,在这里我们可以看到我们成功开启的所有API(除了刚刚开启的5个,其余的是默认开启的,不需要管)。

 

确认5个API开启后,我们进行下一步。

4. 配置OAuth同意屏幕并创建客户端(按照图示一步一步来),

 

点击外部-创建:应用名称、用户支持电子邮件、开发者联系信息随便填

 

填好后保存并继续。添加此应用可以访问的API范围,直接全选

 

所有都勾选,点击更新来保存。

接着添加测试用户,测试用户填写自己gmail邮箱地址

 

刚刚创建的应用是测试版,测试版需要添加测试用户而且客户端ID和密码只有7天有效期,之前可以发布应用来解决,但现在谷歌修改政策,启用权限较高的API的应用必须通过谷歌验证才能正常使用。

AutoRclone项目使用的一些API权限较高,所以发布的应用必须经过谷歌验证,通常这一过程较难实现。若发布应用请求了较高应用权限而未通过验证,则会返回:您无法登录此应用,因为它不符合 Google 为保障应用安全而制定的 OAuth 2.0 政策的规定。

但是我们创建SA项目只需使用一次,7天后授权文件过期不会影响已经生成的SA正常使用!所以无需发布应用,只需要在测试版添加自己的邮箱地址仅供自己使用即可!

 

至此,OAuth同意屏幕配置完成,接下来创建客户端ID和密码。

 

点击凭据,点击创建凭据-OAuth客户端 ID

 

应用类型选择桌面应用,名称随意,完成后点击创建

 

此时,客户端ID与密码创建完毕,可以记下来,以后使用方便,不想记也没事,以后还能看

 

点击下载授权文件,并改名为 credentials.json

这个文件和上面的客户端ID和密码只有七天有效期,若七天后,还想再生成SA,重新创一个新的客户端ID和密码,下载新的授权文件即可!(不影响已生成SA的使用!)

 

到此,我们成功获得了授权文件。

然后将你下载的 credentials.json 放到 AutoRclone 目录下。

在VPS上部署此文件,可以通过2种办法实现:

1.使用Xshell的,可以使用 rz 命令从本地电脑上传文件到 VPS

首先运行以下命令:

apt install lrzsz -y

然后进入 AutoRclone 目录:

cd AutoRclone

然后输入 rz 并按下回车键,此时会弹出文件窗口,找到你的 credentials.json ,点击然后打开就会上传即可。上传完毕后,输入 ls 可以看到。

2.通过GD盘共享文件进行下载到VPS

将 credentials.json 文件上传到GD任意位置,右键点击选择 获取链接 ,权限为 知道链接的任何人 ,复制链接到新建文本,完成 。文件链接形式为:

https://drive.google.com/drive/folders/[文件ID:一串字符]?usp=sharing

将该文件ID替换到下面命令中对应位置后,在VPS上运行以下命令:

wget https://drive.google.com/uc?id=[文件ID]&export=download

输入 ls  后可以看到有一个名为:’uc?id=[文件ID]’ 的文件,使用MV命令进行改名:

mv 'uc?id=[文件ID]' credentials.json

再次输入 ls  后可以看到这个文件名已经变了。

完成以上步骤后,下面分3种情况进行

1、如果你之前没创建过项目, 直接运行

python3 gen_sa_accounts.py --quick-setup 5
  • 创建6个项目(项目0到项目5) * 数字可以自定义,每个项目100个service accounts
  • 开启相关的服务
  • 创建600个service accounts(6个项目,每个项目100个)
  • 将600个service accounts的授权文件下载到accounts文件夹下面

运行 python3 gen_sa_accounts.py --quick-setup 5

命令后会返回一个链接,浏览器打开返回的链接,登录拥有 Team Drive 账号的谷歌账户,选择 允许,生成一段代码。将代码粘贴到命令对应位置,回车。

回车后可能仍会返回一段代码,原因是谷歌账号未开启 Service Usage API,复制提供的链接地址,到浏览器打开,注意是登录你刚刚授权的谷歌账户,然后点击启用,启用成功后,回到命令窗口,点击回车。命令开始继续运行。此时就需要耐心等待。

顺利完成后,AutoRclone文件下面的accounts文件夹下会有很多的json文件。

2.如果你已经有N个项目,现需要创建新的项目并在新的项目中创建service accounts,直接运行

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.如果你想用已有的项目来创建service accounts(不创建新的项目),直接运行

python3 gen_sa_accounts.py --quick-setup -1

注意这会覆盖掉已有的service accounts

注意:此处如果报错,详细分析,可能是因为某些Python依赖包版本较旧引起的。此时只需要更新出错的依赖包,然后重复上面的命令即可顺利完成。命令如下:

如果出错较多,可先试用下面命令升级pip3

python3 -m pip install --upgrade pip

查看所有可以升级的python库

pip3 list --outdated

如果出错库较少;或是通过运行上面命令后,出错库的版本仍然没有升级到要求版本的,可通过下面命令,对相应库进行升级

pip3 install --upgrade 库名

 

步骤 3 可选:将service accounts加入Google Groups

为了方便管理service accounts,也是为了让我们的Team Drive可以容纳更多的service accounts,我们这里用到了Google Groups。

Official limits to the members of Team Drive (Limit for individuals and groups directly added as members is 600).

对于G Suite管理员

  1. 按照官方步骤开启Directory API,将生成的json文件保存到credentials文件下。
  2. 控制面版里面创建一个群组,创建好你会获得一个类似域名邮箱的地址[email protected]
  3. 利用API将service accounts加入Google Groups
python3 add_to_google_group.py -g sa@yourdomain.com

如果想看参数的具体含义,直接运行python3 add_to_google_group.py -h

对于普通Google账号(个人账号 或是 非 G SUITE 管理员)
直接创建一个Google Group然后手动地将service accounts对应的邮箱地址加进去。普通账户每次只能加10个,每24小时只能加100个。

Service Accounts 邮箱提取,直接运行以下命令:

cd
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个邮箱账户就隔开一行,方便复制。

运行命令 ls 可以查看目录下已经有一个文件 email.txt。这里我们想将 email.txt 保存到电脑,那么运行 sz email.txt 回车即可。

 

步骤 4 将service accounts或者Google Groups加入到Team Drive

– 如果你没有Team Drive,那可以找朋友帮你开一个或者去买一个,实在不嫌弃也可以留言找博主开一个
– 如果你已经在完成了步骤2中的用Google Groups来管理service accounts,那么直接将Google Groups地址[email protected]或者[email protected]加入你的源Team Drive(tdsrc)和目标Team Drive(tddst)
– 如果你在步骤2中没有生成并保存credentials.json那么再做一遍

将service accounts加入到源Team Drive

python3 add_to_team_drive.py -d SharedTeamDriveSrcID

将service accounts加入到目标Team Drive

python3 add_to_team_drive.py -d SharedTeamDriveDstID

 

步骤 5 开始拷贝/上传

准备工作都做好了,以后你只需要将项目文件夹拷贝到任何地方,进行此拷贝/上传步骤就可以啦

拷贝

python3 rclone_sa_magic.py -s SourceID -d DestinationID -dp DestinationPathName -b 1 -e 600
  • 如果想看参数的具体含义,直接运行python3 rclone_sa_magic.py -h
  • 特别地,如果想多开,请用-p参数给不同的复制任务指定不同的端口
  • 如果发现拷贝内容明显少于源Team Drive里面的内容,那么你可能碰到Bug了,请给上运行参数再加上--disable_list_r
  • 如果你一开始就碰到了
    Failed to rc: connection failed: Post http://localhost:5572/core/stats: dial tcp :5572: connectex: No connection could be made because the target machine actively refused it.那么可能是权限或者路径导致Rclone任务都没跑起来,请观察日志文件log_rclone.txt,并结合如下简单命令检查出原因rclone --config rclone.conf size --disable ListR src001:rclone --config rclone.conf size --disable ListR dst001:

上传

python3 rclone_sa_magic.py -sp YourLocalPath -d DestinationID -dp DestinationPathName -b 1 -e 600

不出意外应该就可以跑起来了。每个service account的总的时间消耗是校验时间+拷贝时间,如果你的拷贝任务比较大的话建议将其(按文件夹)稍微拆分,挨个或者并行完成,这样能极大减小每次切换service accounts后不必要的校验时间。另外关于拷贝速度,API调用限制了每秒不超过10次调用,每次拷贝固定数量的文件数目,所以如果你的任务中的文件比较小的话,拷贝速度可能是每秒几百MB,文件都比较大的话,拷贝速度可能是几十GB/s。

 

配合Gclone、Frclone使用

gclone其实就是 rclone 的加强版,Fclone是更强的版本。均可以为Google Drive 操作增加自动切换账户和命令行根目录id操作支持,速度更快。其他功能与原版 rclone 相同。

这些将在下一篇做一介绍。有兴趣的可以关注。也可以善用搜索,自行学习。

 

一些 Q & A

Q. 怎么检查是否拷贝完全?发现丢文件了?
A. 拷贝完请做以下检查

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:目标路径

 

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
网站名称:CNBoy 四海部落
文章名称:《AutoRclone:突破GoogleTeamDrive750G流量限制》
文章链接:https://cnboy.org/898

本站资源仅供个人学习交流,不允许用于商业或违反国家法律法规之用途,否则法律问题自行承担。如有转载需注明文章来源。