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管理员
- 按照官方步骤开启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 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
不出意外应该就可以跑起来了。每个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:目标路径
要发表评论,您必须先登录。