使用 AutoRclone 转存 Google Drive 资源
AutoRclone介绍
AutoRclone是一个用Python写的小程序的集合,有以下功能:
- 利用service accounts来替代普通Google账号进行拷贝/上传(借鉴folderclone);
- 通过rclone rc来做到对Rclone任务的监、控;
- 可以用Google Groups的形式对成百上千的service accounts进行管理。
可以实现以下资源转存:
- 从本地到 Team Drive,
- 从公共分享目录到 Team Drive,
- 从 Team Drive 到 Team Drive。
下载安装程序
对于Windows和Linux分别用以下方式安装相关脚本
windows下安装
软件都建议安装最新版
首先安装Python
再安装Rclone,win版的需要解压,并添加解压目录到系统环境变量(我的电脑右键—属性—高级系统设置—环境变量—添加解压目录到系统环境变量列表里的Path里面—保存ok)。
然后下载AutoRclone并解压,进入cmd或PowerShell中切换到AutoRclone的目录,输入以下命令安装相关Python依赖包:
|
|
Linux下安装
由于本教程是在 CentOS7 下进行测试,部分命令对其他系统并不完全通用,如果是Debian/Ubuntu下,请将
yum
命令改成apt-get
命令
安装Python
检查是否安装Python
|
|
如果未安装或者版本过低建议安装Python3.8
Python有提供各个版本的源代码下载,我这边用的是 Python3.8 版本
|
|
设置python3为默认版本
|
|
安装pip
|
|
下载安装程序
安装screen,git和最新的Rclone
|
|
然后从Github下载代码并安装相关Python依赖包
|
|
proxifier全局代理(可选)
如果会使用代理此步骤可跳过
需要自备梯子,然后安装proxifier
添加proxifier的Proxy server
- 操作路径:菜单栏 -> Profile -> proxy servers -> add
- Server 填写127.0.0.1
- Port 填写代理的端口号
- Protocol 选择SOCKS Version5
- 以上信息填写完毕后,点击 Check,如果成功点击OK保存
配置Proxification Rules
- 操作路径:菜单栏 -> Profile -> Proxification Rules
- Name 任意填写
- Enabled 要勾选上
- Applications 填写需要代理的进程名,如powershell.exe,多个之间用分号分割。
- Action 选择刚才我们创建的 Proxy SOCKS5 127.0.0.1
- 点击OK保存即可
- 如果你要代理所有网络,可以直接在 Proxification Rules 列表上修改 Default Rules 的 Action
生成service accounts
以下步骤如果输入python3没有反应,请改成python或者py3
开启Drive API(点击Enable the Drive API——DOWNLOAD CLIENT CONFIGURATION)将下载的credentials.json保存到AutoRclone目录下面
注意:开启Drive API会创建一个名为Quickstart的项目,请勿删除。
现需要创建新的项目并在新的项目中创建service accounts,直接运行(自己需要几个项目就把数字2改成几,每个账号创建项目数量是有上限的)
|
|
- 如果你已经有N个项目会额外创建2个项目(项目N+1到项目N+2)
- 开启相关的服务
- 创建200个service accounts(2个项目,每个项目100个)
- 将200个service accounts的授权文件下载到accounts文件夹下面
顺利完成后,AutoRclone文件下面的accounts文件夹下会有对应数量的json文件。
将service accounts加入到Team Drive
将service accounts加入到源Team Drive
|
|
将service accounts加入到目标Team Drive
|
|
另外一种方法
这个方法对于G Suite管理员账号非常方便,由于本人是普通Google账号所以并未尝试,所以以下均为照搬
可以先将service accounts加入Google Groups,然后将Google Groups加入到Team Drive,这样子可以方便管理service accounts,也可以让Team Drive容纳更多的service accounts
对于G Suite管理员
- 按照官方步骤开启Directory API,将生成的json文件保存到credentials文件下。
- 在控制面版里面创建一个群组,创建好你会获得一个类似域名邮箱的地址sa@yourdomain.com
- 利用API将service accounts加入Google Groups python3 add_to_google_group.py -g sa@yourdomain.com
如果想看参数的具体含义,直接运行python3 add_to_google_group.py -h
对于普通Google账号
直接创建一个Google Group然后手动地将service accounts对应的邮箱地址(可以在json认证文件中找到)挨个加进去。但每次只能加10个,每24小时只能加100个。
然后直接将Google Groups地址sa@yourdomain.com或者sb@googlegroups.com加入你的源Team Drive(tdsrc)和目标Team Drive(tddst)
开始拷贝/上传
如果你以上的准备工作都做好了,那么以后你只需要将项目文件夹拷贝到任何地方,进行此拷贝/上传步骤就可以了
拷贝
|
|
- 如果想看参数的具体含义,直接运行
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
,并结合如下简单命令检查出原因
|
|
上传
|
|
每个service account的总的时间消耗是校验时间+拷贝时间,如果你的拷贝任务比较大的话建议将其(按文件夹)稍微拆分,挨个或者并行完成,这样能极大减小每次切换service accounts后不必要的校验时间。另外关于拷贝速度,API调用限制了每秒不超过10次调用,每次拷贝固定数量的文件数目,所以如果你的任务中的文件比较小的话,拷贝速度可能是每秒几百MB,文件都比较大的话,拷贝速度可能是几十GB/s。
如果你想检查是否拷贝完全?或者发现丢文件了?可以做以下检查:
|
|
如果发现目标盘比源盘体积还要大,那么对目标盘进行去重;如果发现目标盘比源盘少文件了,那么再拷贝一次;如果还是少,那么就是源盘里面的有重复文件了,直接对其进行去重复。去重命令:
|
|
参考文章
[1]. AutoRclone-github仓库
[2]. Rclone 750G自动换号– AutoRclone使用教程
[4]. 通过proxifier实现全局代理