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

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

准备工作

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

安装详细过程

步骤 1 下载安装代码

首先不管你是哪个操作系统,需要安装Python。

apt-get install git python3 python3-pip -y

对于Linux和Windows分别用以下方式安装相关脚本
Linux: 安装screen,git和最新的Rclone。如果是Debian/Ubuntu,直接输入以下命令

sudo apt-get install screen git && curl https://rclone.org/install.sh | sudo bash

安装AutoRclone及相关Python依赖包

sudo git clone https://github.com/xyou-365/AutoRclone && cd AutoRclone && sudo pip3 install -r requirements.txt

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

pip3 install -r requirements.txt

以下步骤如果输入python3没有反应,请输入python或者py3
以下所有步骤由于需要用到谷歌服务,请确保cmd或者vps能够翻墙

 

步骤 2 生成service accounts

打开链接:Drive API,点击 Enable the Drive API ,在弹出的窗口中,下载生成的 credentials.json,然后将你下载的 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 src-001:rclone --config rclone.conf size --disable ListR dst-001:

上传

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

不出意外应该就可以跑起来了。每个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 src-001:源路径
rclone --config rclone.conf size --disable ListR dst-001:目标路径

如果发现目标盘比源盘体积还要大,那么对目标盘进行去重;如果发现目标盘比源盘少文件了,那么再拷贝一次;如果还是少,那么就是源盘里面的有重复文件了,直接对其进行去重复。去重命令:

rclone --config rclone.conf dedupe src-001:源路径
rclone --config rclone.conf dedupe dst-001:目标路径