AutoRclone配置

发布于 / 归档 / 0 条评论

本文写于博主折腾Google Drive无限量空间期间,然而,GoogleDrive从2022年7月起取消无限空间,,原无限容量订阅也被限制,无法再上传文件,故AutoRclone已经失去折腾的意义,本文仅作为归档保存于此

1.将代码复制到您的 VPS 或本地计算机

在完成所有操作之前,先安装 python3。因为我们使用python作为我们的编程语言

对于 Linux 系统:安装screen最新的Rclone。 如果在 Debian/Ubuntu 中,直接使用此命令

sudo apt-get install screen git && 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。 然后在我们的项目文件夹中运行此命令(在cmd命令窗口或PowerShell窗口中键入)

2.生成服务帐户

2.1创建GoogleAPI,获取credentials.json文件

启用 API

在使用 Google API 之前,您需要先在 Google Cloud 项目中启用这些 API。您可以在单个 Google Cloud 项目中启用一个或多个 API。

在 Google Cloud 控制台中,启用 Google Drive API

如果您使用新的 Google Cloud 项目完成本快速入门,请配置 OAuth 权限请求页面,并将您自己添加为测试用户。如果您为 Cloud 项目完成了此步骤,请跳到下一部分。

(1).在 Google Cloud 控制台中,依次转到“菜单”图标 menu > API 和服务 > OAuth 同意屏幕

(2).选择应用的用户类型,然后点击 Create

(3).填写应用注册表单,然后点击保存并继续

(4).如果您选择外部作为用户类型,请添加测试用户:

a.在测试用户下,点击添加用户

b.输入您的电子邮件地址和任何其他已获授权的测试用户,然后点击保存并继续

(5).查看您的应用注册摘要。若要进行更改,请点击修改。如果应用注册看起来没有问题,请点击 Back to Dashboard(返回信息中心)。

为桌面应用授权凭据

如需作为最终用户进行身份验证并访问应用中的用户数据,您需要创建一个或多个 OAuth 2.0 客户端 ID。客户端 ID 用于向 Google 的 OAuth 服务器识别单个应用。如果您的应用在多个平台上运行,您必须为每个平台创建单独的客户端 ID。

(1).在 Google Cloud 控制台中,依次转到“菜单”图标 menu > API 和服务 > 凭据

(2).依次点击创建凭据 > OAuth 客户端 ID

(3).依次点击应用类型 > 桌面应用

(4).在名称字段中,输入凭据名称。此名称仅在 Google Cloud Console 中显示。

(5).点击创建。系统随即会显示 OAuth 客户端创建的屏幕,其中会显示新的客户端 ID 和客户端密钥。

(6).点击 OK。新创建的凭据会显示在 OAuth 2.0 客户端 ID 下方。

(7).将下载的 JSON 文件另存为 credentials.json,并将其移至工作目录。

安装 Google 客户端库

  • 安装 Python 版 Google 客户端库:
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

2.2生成服务账户

快速方法(不推荐,有时会出现 bug):

如果您的帐户中没有任何项目,那么

  • 创建 1 个项目
  • 启用所需的服务
  • 创建 100(1 个项目,每个项目有 100 个)服务帐户
  • 并将其凭据下载到名为accounts
Note: 1 service account can copy around 750gb a day, 1 project makes 100 service accounts so thats 75tb a day, for most users this should easily suffice. 

该命令看起来像将“1”替换为所需的项目数python gen_sa_accounts.py --quick-setup 1

如果您已经有 N 个项目,并且只想在新创建的项目中创建服务帐户,

  • 创建额外的 1 个项目(项目 N+1 到项目 N+2)
  • 启用所需的服务
  • 创建 100(1 个项目,包含 100 个)服务帐户
  • 并将其凭据下载到名为accounts

运行

python gen_sa_accounts.py --quick-setup 1 --new-only
  • 手动方法(推荐):
    1. 回到 SSH ,执行 python gen_sa_accounts.py --list-projects
      • 如果之前没有创建过项目的话返回值应该是空的,那么此时执行 python gen_sa_accounts.py --create-projects 1 来新建一个项目,之后再次 python gen_sa_accounts.py --list-projects,复制一下新建的项目名称,下一步要用到;
      • 如果已存在项目,且要使用已有项目来生成 SA(请确保你知道自己在做什么),那么复制一下想要生成 SA 的项目名称,否则参考上一条的步骤来新建一个项目;
    2. 执行 python gen_sa_accounts.py --enable-services ProjectName 为项目开启所需要的服务,ProjectName 为上一步复制的项目名称,开启方法参考上文【快速方法】中的描述;
    3. 执行 python gen_sa_accounts.py --create-sas ProjectName 为项目生成 SA;
    4. 执行 python gen_sa_accounts.py --download-keys ProjectName 下载项目中 SA 的授权文件,稍等片刻 ~/AutoRclone/accounts/ 目录下应该出现了一大堆 .json 后缀的 SA 授权文件。

3.将服务帐号添加到 Google Group(可选,但建议长期轻松使用)

考虑到团队云端硬盘成员的官方限制(直接添加为成员的个人和群组的上限:600),我们使用
Google 网上论坛来管理我们的服务帐号。

对于GSuite Admin

  1. 按照官方步骤打开目录 API(将生成的 json 文件保存到文件夹)。credentials
  2. 在管理控制台中为您的单位创建群组。例如,创建组后,您将拥有一个地址。sa@yourdomain.com
  3. 运行python add_to_google_group.py -g sa@yourdomain.com

有关上述标志的含义,请运行 python add_to_google_group.py -h

对于普通用户

创建 Google Group,然后手动将服务帐号添加为成员。 限制是一次 10 个,每天 100 个,但如果您阅读上面的警告和注释,您将拥有 1 个项目,因此很容易在您的范围内。

在此处:https://console.developers.google.com/apis/dashboard ,点击左侧的 凭据 可以看到创建好的项目及 SA ,自行想办法将 SA 的邮箱地址保存下来(快速提取 SA 的邮箱地址可以参考这篇文章:一行命令提取 SA 文件中 email 自动10行分组 – FXXKR LAB )。

4.将服务帐号或 Google Group添加到团队云端硬盘

如果您不使用团队云端硬盘,只需跳过即可。 警告:建议使用服务帐户将不在团队驱动器中的“到”文件夹,SA 最适合团队驱动器。

如果您已创建 Google 网上论坛(第 2 步)来管理您的服务帐号,请将群组地址或添加到您的源团队云端硬盘 (tdsrc) 和目标团队云端硬盘 (tddst)。sa@yourdomain.comsa@googlegroups.com

否则,请将服务帐号直接添加到团队云端硬盘中。

在 Python 快速入门中启用驱动器 API,如果尚未在步骤 2 中执行此操作,请将其保存到项目根路径中。credentials.json

  • 将服务帐号添加到源团队云端硬盘中:python add_to_team_drive.py -d SharedTeamDriveSrcID
  • 将服务帐号添加到目标团队云端硬盘中:python add_to_team_drive.py -d SharedTeamDriveDstID

5.开始您的任务

让我们使用服务帐户复制数百 TB 的资源。注意:讽刺,过度滥用这个(无论你使用什么克隆脚本)可能会让你被谷歌注意到,我们建议你不要贪吃,克隆重要的东西,而不是下载整个维基百科。

对于服务器端副本

  • 公开共享到团队云端硬盘的文件夹
  • 团队驱动器到团队驱动器
  • 公开共享文件夹到公开共享文件夹(具有写入权限)
  • 团队云端硬盘到公开共享文件夹
python rclone_sa_magic.py -s SourceID -d DestinationID -dp DestinationPathName -b 1 -e 600
  • 有关上述标志的含义,请运行 python3 rclone_sa_magic.py -h
  • 如果 rclone 无法读取公共共享文件夹的所有内容,则添加 –-disable_list_r
  • 请确保 Rclone 可以读取您的源目录和目标目录。使用 rclone 大小进行检查:
  1. rclone --config rclone.conf size --disable ListR src001:
  2. rclone --config rclone.conf size --disable ListR dst001:

对于本地到谷歌云端硬盘(需要一些测试)

  • 团队云端硬盘本地
  • 本地到专用文件夹
  • 私人文件夹到任何(认为服务帐户不能对私人文件夹执行任何操作)
python3 rclone_sa_magic.py -sp YourLocalPath -d DestinationID -dp DestinationPathName -b 1 -e 600
  • rclone日志保存在log_rclone.txt
Not Comment Found