AutoRclone可以干什么?
可以方便快捷地把文件(夹):
- 从Google Drive到Team Drive(需贡献者以上权限)
- 从Team Drive到Google Drive(未测试,理论上需要内容管理者以上的权限)
- 从本地到 Team Drive,
- 从公共分享目录到 Team Drive,
- 再或者从 Team Drive 到 Team Drive。(未测试,但管理员权限可以)
换句话说,就是实现 Team Drive,Google Drive,本地之间的互拷,以及把分享的文件复制到,或者说真正地转存到自己想要的地方。
说明
- 本篇文章大量参考甚至复制了很多Great Panoan的文章内容,只是在其基础上补充完善了很多小细节。
- 文章具有时效性,如果你下载的软件版本不同,可能就需要改变下面教程中的些许参数(比如环境变量)。
- 若你想无脑安装,最好所有设置都跟我一样。路径、文件名什么的都不要改。这样的话,下面有的内容你就可以直接复制粘贴使用。
- 创建好Google groups邮箱的朋友可以私聊我加SCU大学的团队盘。
前提
- 一个能够开启API的谷歌账号(不能开启请放弃或更换账号)
- 一台windows电脑(我仅在win10测试)
- 能够路由器fq或者单独自行设置给PowerShell配置代理
- 会简单的操作电脑
不满足以上条件者请放弃
1. 安装所需软件
1.1 安装Python 3.8.1
下载好之后按下图进行安装
1.2 安装AutoRclone
autorclone下载好自行选择解压路径。比如我就是D:\AutoRclone-master。若你想无脑安装,最好所有设置都跟我一样。路径、文件名什么的都不要改。这样的话,下面有的内容你就可以直接复制粘贴使用。
解压好后应该长这样。
1.3 安装Rclone
直接将下载的Rclone压缩包解压至`D盘。
1.4 添加环境变量
鼠标右键点击我的电脑,依次选择属性-高级系统设置-环境变量。
点击Path并选择编辑。
选择如下图所示的新建按钮,添加下图所示三个路径(D:\Python、D:\AutoRclone-master、D:\rclone-v1.51.0)。
2. 安装相关依赖
注意:
以下所有操作均需要让PowerShell运行在fq环境下。解决方法是拥有一个可以fq的路由器或者给PowerShell设置代理(自行谷歌)
在桌面空白处启动Power shell(shift+鼠标右键,选择在此处打开power shell窗口)
输入以下代码
cd D:\AutoRclone-master pip3 install -r requirements.txt
3. 启用Google API
首先开启 Drive API 并将下载好的 credentials.json 保存到D:\AutoRclone-master路径(AutoRclone 目录),如图所示
4. 生成并提取Service Account(服务账号,即SA)
4.1 准备工作
在AutoRclone-master目录(路径:D:\AutoRclone-master)下创建一个txt文档,并将以下代码复制到txt文档中。然后将txt文档重命名为1.py。
import re import sys import os,glob path = 'D://AutoRclone-master//accounts' fout = open("E://1.txt", 'w') os.chdir(path) for filename in os.listdir() : fs = open(filename, 'r+') for line in fs.readlines(): mylist_1 = line.split(":") if mylist_1[0] == " \"client_email\"" : mylist_2 = mylist_1[1].split("\"") fout.write(mylist_2[1] + '\n') fout.close()
4.2 创建&提取SA
4.2.1 创建SA账号命令参数详解
python gen_sa_accounts.py --quick-setup N # N指的是项目数,每个项目下都有100个SA。每个SA每天可以转存750G文件(实测大概有735G)。 # 运行此指令会创建N个项目(项目0-项目5)共100*N个Service Account,并将100*N个SA的授权文件添加至accounts文件 夹。 python gen_sa_accounts.py --quick-setup N --new-only # 此指令会在你账号原有项目的基础上再增加N个项目,并将所有的SA授权文件添加至accounts文件夹。 python gen_sa_accounts.py --quick-setup -1 # 此指令只会在你原有项目的基础上来创建SA(会覆盖掉原有SA,导致以前的Groups账号不可用),并将所有的SA授权文件添加 至accounts文件夹。
认真看完本段文字和命令参数详解再继续进行下一步操作!
- 项目数不宜过多,2-3个项目足以满足每天批量转存的需求。而且就算创建的多,后续将服务账号手动添加进google group也足以把你累得半死。
- 请不要乱创建项目,谷歌对于每个账户限制只能创建12个项目。如果账号中已有项目,请使用下面的用已有项目来创建服务账号指令。
- 项目被占用完如果想删除再创建需要等30天。比如我一个账户创建了12个项目(最大值),导致我删除后仍需要等待30天才可创建新项目。
由于我的原有账号已经被我乱操作创建了很多项目~所以我选择从已有项目创建SA。此处不再截图。(新账号不要跟我一样)
新账号可以直接在刚刚打开的power shell窗口中运行以下代码
python gen_sa_accounts.py --quick-setup 1 # 创建2个项目
然后弹出以下画面,将power shell中的链接复制到浏览器打开。链接如下图。
选择账号登陆并授权,或许会提示风险之类的,不用管,一直按确定和允许直到出现如下图所示的画面,然后将出现的代码复制到刚刚的窗口中并按回车键运行。
等运行完成后在power shell窗口中输入./1.py提取SA账号信息。至此,你已经创建了2个项目、200个SA账号,并将SA账号提取到了E盘的1.txt文件中。
5.将SA添加到Google Groups
接下来打开Google groups,按下图操作。
填入相关信息,点击CREATE
然后点击My groups中的Manage members,点击下图所示区域来添加SA账号(SA账号信息在E盘的1.txt文件中)。
接下来就是重复劳动了,每次最多添加10个账号,每天最多添加100个。每个group最多600个SA。添加完成后将Google Groups的账号添加进团队盘即可。图中绿圈就是Google Groups的账号。
6. 常见问题Q&A
Q1:每次拷贝完为什么会报错?
AutoRclone机制是这样的:每个账号切换后都会重新检查已有的文件,并且会自动跳过已有的文件,当连续三次检测,发现目标文件夹里已经完全拷贝好,就会自动输出 3 次 “fail”。连续三个账户,输出 9 次 fail,就会终止程序运行,认为你拷贝完成。
所以如果你 1~3 已经用满了,还 -b 1,那么三次报错就会终止!他以为你复制完全,而你实际上只是限额用满了!
Q2:我准备拷100个文件,才拷了50个就地震了,我爬出来之后再跑一遍原来的命令会怎么样呢?
每个账号切换后都会重新检查已有的文件,并且会自动跳过已有的文件,所以你再跑一遍会跳过已有的文件!
但你一定要注意,拷贝 50 个文件比如用满了前十个 SA,务必从 11 开始。
Q3:我老是fail,有什么常见的原因?
- 每次运行cmd均需重新设置代理
- 你有把你的服务账号全部添加到你的源和目标吗?
- 你一定要确保 group 能够看到你的文件!
- 如果你使用直接添加SA的方式,你就必须把SA全部添加到你的源文件的权限里(上传/公开分享的文件没有此限制),手动,是不是很累?所以我不推荐!
- 如果你使用group管理,请务必将源文件分享给group对应的邮箱。(一个邮箱,几百个SA,是不是很方便?)
Q4:如果我在某个团队盘里,我想把团队盘内容拷到自己账户里,怎么办?
那要看团队盘的管理员乐不乐意让你搬咯!如果乐意,请他把你的 group 的 email 加入团队盘即可。如果不乐意,那我也没办法。
Q5:创建项目的时候,为什么会出现错误?
我遇到了几个人出现这种错误,有一位大佬反馈回来说,是因为他的 python 没有加代理。至于 python 如何代理,请使用 Proxifier.
Q6:管理Service Account(非必须,可跳过)
你可以在 Google APIs 看到你的项目及 SA。
点击此处,你可以看到你所有项目。
有的人可能想问,怎么我只有两个项目200个SA,却有500个json?那是因为你浏览项目的时候需要点击“全部”。
7. 开始转存
GD转存到TD要确保你要转存的文件(夹)设置为所有人可见
TD转存到TD、TD转存到GD要确保你的转存账号拥有相关团队盘权限。
命令参数详解
python rclone_sa_magic.py -s SourceID -d DestinationID -dp A -b 1 -e 600 # SourceID:源文件(夹)id # DestinationID:目标文件(夹)id # -dp DestinationPathName:在目标文件夹内创建一个叫A的文件夹。(可删除) # -b 1 -e 600:选择从第1个到第600和SA账号转存。
例如,共享文件夹/文件/TD的链接为https://drive.google.com/drive/u/0/folders/10y_9ucYQyvfxuexDKiOY2pp1CXlXy。
那么,它的id即为10y_9ucYQyvfxuexDKiOY2pp1CXlXy。如果出现形如 ?usp=sharing的后缀,请务必删除。
- 如果想看其他参数的具体含义,直接运行 python3 rclone_sa_magic.py -h
- 如果我今天已经把前十个SA的限额用满了,那我 -b 11 即可。
- 每个服务账号的限额在二十四小时后重置。
- 特别地,如果想多开,请用 - p 参数给不同的复制任务指定不同的端口。
- 其他指令自行探索。