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管理员
- 按照官方步骤开启Directory API,将生成的json文件保存到credentials文件下。
- 在控制面版里面创建一个群组,创建好你会获得一个类似域名邮箱的地址[email protected]
- 利用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:目标路径