Google drive

Google drive

路径指定为 drive:path

Drive 路径可以按需设置深度,例如 drive:directory/subdirectory

配置

Drive 的初始设置需要从 Google Drive 获取一个令牌,你需要在浏览器中完成此操作。rclone config 会引导你完成整个过程。

以下是一个如何创建名为 remote 的远程存储的示例。首先运行:

 rclone config

这将引导你完成一个交互式的设置过程:

No remotes found, make a new one?
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
   \ "drive"
[snip]
Storage> drive
Google Application Client Id - leave blank normally.
client_id>
Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use web browser to automatically authenticate rclone with remote?
 * Say Y if the machine running rclone has a web browser you can use
 * Say N if running rclone on a (remote) machine without web browser access
If not sure try Y. If Y failed, try N.
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> n
Configuration complete.
Options:
type: drive
- client_id:
- client_secret:
- scope: drive
- root_folder_id:
- service_account_file:
- token: {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

请参阅远程设置文档,了解如何在没有互联网浏览器的机器上进行设置。

请注意,如果使用网络浏览器进行自动认证,rclone会在本地机器上运行一个Web服务器,用于收集Google返回的令牌。这个Web服务器仅在打开浏览器到获取验证码的时间段内运行。它的地址是 http://127.0.0.1:53682/,如果您运行了主机防火墙,可能需要临时解除对它的阻止,或者使用手动模式。

设置完成后,您可以按以下方式使用rclone:

列出您云端硬盘根目录下的所有目录

rclone lsd remote:

列出您云端硬盘中的所有文件

rclone ls remote:

将本地目录复制到云端硬盘中名为backup的目录

rclone copy /home/source remote:backup

权限范围

Rclone允许您选择rclone使用的权限范围。这会改变授予rclone的令牌类型。权限范围的定义在此处

允许使用逗号分隔的列表,例如 drive.readonly,drive.file

权限范围如下:

drive

这是默认的权限范围,允许对除应用数据文件夹(见下文)之外的所有文件进行完全访问。

如果您不确定该选哪个,建议选择此范围。

drive.readonly

此范围允许对所有文件进行只读访问。可以列出和下载文件,但不能上传、重命名或删除文件。

drive.file

使用此范围时,rclone只能读取、查看和修改它自己创建的文件和文件夹。

因此,如果您通过网页界面(或其他方式)将文件上传到云端硬盘,rclone将无法看到这些文件。

如果您使用rclone进行数据备份,并且希望确保云端硬盘上的机密数据对rclone不可见,那么此范围会很有用。

使用此范围创建的文件在网页界面中可见。

drive.appfolder

此范围为rclone提供了一个专用的私有区域来存储文件。rclone将无法看到您云端硬盘上的其他任何文件,您也无法从网页界面看到rclone存储的文件。

drive.metadata.readonly

此范围仅允许对文件名进行只读访问。它不允许rclone下载或上传数据,也不允许重命名或删除文件或目录。

根文件夹ID

此选项已移至高级设置部分。您可以为rclone设置 root_folder_id。这是rclone视为您云端硬盘根目录的文件夹(通过其 文件夹ID 来标识)。

通常情况下,您可以留空此选项,rclone会自行确定正确的根目录。

但是,您可以设置此选项,将rclone限制在特定的文件夹层次结构中,或者访问云端硬盘网页界面中“计算机”标签下的数据(Google备份和同步桌面程序的文件会存储在此处)。

要实现这一点,您需要找到希望rclone显示的文件夹的 文件夹ID。当您在云端硬盘网页界面中打开相关文件夹时,该ID将是URL的最后一段。

因此,如果您希望rclone使用的文件夹在浏览器中的URL类似于 https://drive.google.com/drive/folders/1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh,那么您可以在配置中使用 1XyfxxxxxxxxxxxxxxxxxxxxxxxxxKHCh 作为 root_folder_id

注意:使用rclone时,“计算机”标签下的文件夹似乎是只读的(云端硬盘会返回500错误)。

目前似乎没有API可以发现“计算机”标签下的文件夹ID - 如果您知道有这样的API,请联系我们!

另外,请注意,rclone目前还无法访问Google云端硬盘网页界面中“备份”标签下的任何数据。

服务账户支持

您可以以无人值守模式将rclone与Google云端硬盘进行设置,即不绑定到特定的最终用户Google账户。当您希望将文件同步到没有活跃登录用户的机器上时,例如构建服务器,这会很有用。

要使用服务账户而不是OAuth2令牌流程,请在 rclone config 过程中,在 service_account_file 提示处输入您的服务账户凭证文件的路径,这样rclone就不会使用基于浏览器的认证流程。如果您希望将凭证文件的内容直接放入rclone配置文件中,可以设置 service_account_credentials 为文件的实际内容,或者设置相应的环境变量。

使用场景 - Google Workspace账户和个人云端硬盘

假设您是Google Workspace的管理员。目标是读取或写入属于该域成员的个人云端硬盘账户中的数据。我们将该域称为 example.com,用户为 [email protected]

要实现这一目标,我们需要完成以下几个步骤:

1. 为example.com创建一个服务账户
  • 要创建服务账户并获取其凭证,请访问Google开发者控制台
  • 您必须有一个项目 - 如果没有,请创建一个,并确保您选择了该项目。
  • 然后转到“IAM与管理” -> “服务账户”。
  • 使用“创建服务账户”按钮。在“服务账户名称”和“服务账户ID”中填写能够标识您的客户端的信息。
  • 选择“创建并继续”。步骤2和3是可选的。
  • 点击新创建的服务账户
  • 点击“密钥”,然后点击“添加密钥”,再点击“创建新密钥”
  • 选择类型为“JSON”,然后点击创建
  • 这将下载一个小的JSON文件,rclone将使用该文件进行认证。

如果您需要撤销访问权限,只需按下“删除服务账户密钥”按钮。

2. 允许对example.com的Google云端硬盘进行API访问
  • 访问example.com的Workspace管理控制台
  • 进入“安全”(或使用搜索栏)
  • 选择“访问和数据控制”,然后选择“API控制”
  • 点击“管理全域名委派”
  • 点击“添加新项”
  • 在“客户端ID”字段中输入服务账户的“客户端ID” - 可以在开发者控制台的“IAM与管理” -> “服务账户”中找到,然后点击新创建的服务账户的“查看客户端ID”。 它是一个约21位的数字字符串。
  • 在下一个字段“OAuth权限范围”中,输入 https://www.googleapis.com/auth/drive 以专门授予对Google云端硬盘的读写访问权限。 您也可以使用 https://www.googleapis.com/auth/drive.readonly 进行只读访问。
  • 点击“授权”
3. 配置rclone,假设是全新安装
rclone config

n/s/q> n         # New
name>gdrive      # Gdrive is an example name
Storage>         # Type drive
client_id>       # Can be left blank
client_secret>   # Can be left blank
scope>           # Select the scope use used in step 2
root_folder_id>  # Can be left blank
service_account_file> /home/foo/myJSONfile.json # Path to the JSON file you downloaded in step 1.
y/n>             # Auto config, n
4. 验证配置是否生效
  • rclone -v --drive-impersonate [email protected] lsf gdrive:backup
  • 各参数的作用如下:
    • -v - 启用详细日志记录
    • --drive-impersonate [email protected] - 这是关键参数,它能让 rclone 模拟用户 foo 进行操作。
    • lsf - 以易于解析的方式列出文件
    • gdrive:backup - 使用名为 gdrive 的远程存储,并在名为 backup 的文件夹中进行操作。

注意:如果您在 gdrive 上配置了特定的根文件夹,并且在使用 --drive-impersonate 时 rclone 无法访问该文件夹的内容,请按以下步骤操作:

  • 在 Google Drive 网页界面中,将您的根文件夹共享给在步骤 1 中创建/选择的新服务账户的用户/邮箱。
  • 不指定 --drive-impersonate 选项来使用 rclone,示例如下: rclone -v lsf gdrive:backup

共享驱动器(团队驱动器)

如果您希望将远程存储配置为指向 Google 共享驱动器(以前称为团队驱动器),请在 是否将此配置为共享驱动器(团队驱动器)? 问题处回答 y

这将从 Google 获取共享驱动器列表,并允许您配置要使用的共享驱动器。如果您愿意,也可以直接输入共享驱动器的 ID。

例如:

Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> y
Fetching Shared Drive list...
Choose a number from below, or type in your own value
 1 / Rclone Test
   \ "xxxxxxxxxxxxxxxxxxxx"
 2 / Rclone Test 2
   \ "yyyyyyyyyyyyyyyyyyyy"
 3 / Rclone Test 3
   \ "zzzzzzzzzzzzzzzzzzzz"
Enter a Shared Drive ID> 1
Configuration complete.
Options:
- type: drive
- client_id:
- client_secret:
- token: {"AccessToken":"xxxx.x.xxxxx_xxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","RefreshToken":"1/xxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxx","Expiry":"2014-03-16T13:57:58.955387075Z","Extra":null}
- team_drive: xxxxxxxxxxxxxxxxxxxx
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

–fast-list

该远程程序支持"–fast-list",它允许你使用更少的 事务来换取更多内存。 详见 rclone 文档 了解更多详情。

它通过将多个 list 调用合并为一个 API 请求来实现这一功能。

它的工作原理是将多个 '%s' in parents 过滤器合并为一个表达式。 要列出目录 a、b 和 c 的内容,常规 List 函数将发送以下请求:

trashed=false and 'a' in parents
trashed=false and 'b' in parents
trashed=false and 'c' in parents

现在可以将这些请求合并为一个请求:

trashed=false and ('a' in parents or 'b' in parents or 'c' in parents)

ListR 的实现会将最多 50 个 parents 过滤器放入一个请求中。 它会使用 --checkers 参数的值来指定并行运行的请求数量。

在测试中,这些批量请求比常规方法快达 20 倍。 对不同大小的文件夹运行以下命令可得到:

rclone lsjson -vv -R --checkers=6 gdrive:folder

小文件夹(220 个目录,700 个文件):

  • 不使用 --fast-list:38 秒
  • 使用 --fast-list:10 秒

大文件夹(10600 个目录,39000 个文件):

  • 不使用 --fast-list:22 分 05 秒
  • 使用 --fast-list:58 秒

修改时间和哈希值

Google Drive 存储的修改时间精确到 1 毫秒。

支持 MD5、SHA1 和 SHA256 哈希算法。不过,有一小部分上传的文件可能没有 SHA1 或 SHA256 哈希值,特别是那些在 2018 年之前上传的文件。

受限文件名字符

只有无效的 UTF - 8 字节会被替换,因为它们不能用于 JSON 字符串。

与其他后端不同,/ 也可以在文件名中使用,... 也是有效的名称。

版本管理

Google Drive 会存储文件的版本。当你使用 rclone 将现有文件的更改上传到 Google Drive 时,它会为该文件创建一个新版本。

版本遵循 Google 的标准策略,在撰写本文时该策略如下:

  • 它们会在 30 天或达到 100 个版本后被删除(以先到者为准)。
  • 它们不计入用户的存储配额。

删除文件

默认情况下,rclone 在删除文件时会将所有文件发送到回收站。如果需要永久删除文件,请使用 --drive-use-trash=false 标志,或者设置相应的环境变量。

快捷方式

2020 年 3 月,Google 在 Google Drive 中引入了一项名为Drive 快捷方式的新功能(API)。到 2020 年 9 月,这些快捷方式将取代文件或文件夹同时存在于多个文件夹中的功能

快捷方式是指向 Google Drive 上其他文件的文件,有点像 Unix 中的符号链接,不同的是它们指向底层文件数据(例如,用 Unix 术语来说就是 inode),因此即使源文件被重命名或移动,它们也不会失效。

默认情况下,rclone 对快捷方式的处理如下:

指向文件的快捷方式:

  • 列出文件时,快捷方式显示为目标文件。
  • 下载时,下载的是目标文件的内容。
  • 用非快捷方式文件更新快捷方式文件时,会先移除快捷方式,然后在快捷方式的位置上传一个新文件。
  • 进行服务器端移动(重命名)时,重命名的是快捷方式,而不是目标文件。
  • 进行服务器端复制时,复制的是快捷方式,而不是快捷方式的内容。(除非使用了 --drive-copy-shortcut-content,在这种情况下,复制的是快捷方式的内容)
  • 删除时,删除的是快捷方式,而不是链接的文件。
  • 设置修改时间时,设置的是链接文件的修改时间。

指向文件夹的快捷方式:

  • 列出时,快捷方式显示为文件夹,并且该文件夹将包含链接文件夹的内容(包括任何子文件夹)。
  • 下载时,下载的是链接文件夹及其子文件夹的内容。
  • 上传到快捷方式文件夹时,文件将被放置在链接文件夹中。
  • 进行服务器端移动(重命名)时,重命名的是快捷方式,而不是目标文件夹。
  • 进行服务器端复制时,复制的是链接文件夹的内容,而不是快捷方式。
  • 使用 rclone rmdirrclone purge 删除时,删除的是快捷方式,而不是链接的文件夹。
  • 注意:使用 rclone removerclone mount 删除时,将删除链接文件夹的内容。

可以使用 rclone backend 命令来创建快捷方式。

可以使用 --drive-skip-shortcuts 标志或相应的 skip_shortcuts 配置设置完全忽略快捷方式。

如果你的驱动器中有导致无限递归的快捷方式(例如,一个快捷方式指向其父文件夹),可能必须设置 skip_shortcuts 才能复制该驱动器。

清空回收站

如果你想清空回收站,可以使用 rclone cleanup remote: 命令,该命令将永久删除所有已删除的文件。此命令不接受任何路径参数。

请注意,即使命令在几秒钟内返回,Google Drive 也需要一些时间(几分钟到几天)来清空回收站。不会有输出回显,因此即使使用 -v 或 -vv 也不会有确认信息。

配额信息

要查看当前配额,可以使用 rclone about remote: 命令,该命令将显示你的使用限制(配额)、Google Drive 中的使用情况、回收站中所有文件的大小以及其他 Google 服务(如 Gmail)使用的空间。此命令不接受任何路径参数。

Google 文档的导入/导出

Google 文档可以从 Google Drive 导出,也可以上传到 Google Drive。

当 rclone 下载 Google 文档时,它会根据 --drive-export-formats 设置选择一种格式进行下载。 默认情况下,导出格式为 docx,xlsx,pptx,svg,这是可编辑文档的合理默认设置。

选择格式时,rclone 会按提供的列表顺序进行查找,并选择文档可以从列表中导出的第一种文件格式。如果文件无法导出为列表中的格式,则 rclone 将从默认列表中选择一种格式。

如果你想要存档副本,可以使用 --drive-export-formats pdf;如果你更喜欢 OpenOffice/LibreOffice 格式,可以使用 --drive-export-formats ods,odt,odp

请注意,rclone 会为 Google 文档添加扩展名,因此如果它在 Google 文档中名为 My Spreadsheet,它将被导出为 My Spreadsheet.xlsxMy Spreadsheet.pdf 等。

将文件导入 Google Drive 时,rclone 会将 --drive-import-formats 中具有扩展名的所有文件转换为其关联的文档类型。 默认情况下,rclone 不会转换任何文件,因为转换是一个有损过程。

应用 --drive-export-formats 规则处理上传的文档时,转换结果的文件扩展名必须相同。

以下是一些允许和禁止转换的示例:

导出格式 导入格式 上传扩展名 文档扩展名 是否允许
odt odt odt odt
odt docx,odt odt odt
docx docx docx
odt odt docx
odt,docx docx,odt docx odt
docx,odt docx,odt docx docx
docx,odt docx,odt odt docx

可以通过指定 --drive-allow-import-name-change 来禁用此限制。 使用此标志时,rclone 可以同时将多种文件类型转换为同一种文档类型,例如,使用 --drive-import-formats docx,odt,txt 时,所有具有这些扩展名的文件都将转换为 docx 文件表示的文档。 这会带来覆盖文档的额外风险,如果多个文件具有相同的文件名主干。许多 rclone 操作不会以任何方式处理此名称更改。它们在复制文件时假设名称相同,并且在名称更改时可能会再次复制文件或删除它们。

以下是可能的导出扩展名及其对应的 MIME 类型。 其中大多数也可用于导入,但还有更多未列出的类型。其中一些额外的类型可能仅在操作系统提供正确的 MIME 类型条目时可用。

此列表可能会随时被 Google Drive 更改,可能无法代表当前可用的转换。

扩展名 MIME 类型 描述
bmp image/bmp Windows 位图格式
csv text/csv 电子表格的标准 CSV 格式
doc application/msword 经典 Word 文件
docx application/vnd.openxmlformats-officedocument.wordprocessingml.document Microsoft Office 文档
epub application/epub+zip 电子书格式
html text/html HTML 文档
jpg image/jpeg JPEG 图像文件
json application/vnd.google-apps.script+json Google Apps 脚本的 JSON 文本格式
md text/markdown Markdown 文本格式
odp application/vnd.oasis.opendocument.presentation OpenOffice 演示文稿
ods application/vnd.oasis.opendocument.spreadsheet OpenOffice 电子表格
ods application/x-vnd.oasis.opendocument.spreadsheet OpenOffice 电子表格
odt application/vnd.oasis.opendocument.text OpenOffice 文档
pdf application/pdf Adobe PDF 格式
pjpeg image/pjpeg 渐进式 JPEG 图像
png image/png PNG 图像格式
pptx application/vnd.openxmlformats-officedocument.presentationml.presentation Microsoft Office 幻灯片
rtf application/rtf 富文本格式
svg image/svg+xml 可缩放矢量图形格式
tsv text/tab-separated-values 电子表格的标准 TSV 格式
txt text/plain 纯文本
wmf application/x-msmetafile Windows 元文件
xls application/vnd.ms-excel 经典 Excel 文件
xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Microsoft Office 电子表格
zip application/zip HTML、图像、CSS 的 ZIP 文件

Google 文档也可以导出为链接文件。这些文件在打开时会为该文档的 Google Docs 网站打开一个浏览器窗口。链接文件的扩展名必须作为 --drive-export-formats 参数指定。它们将匹配所有可用的 Google 文档。

扩展名 描述 操作系统支持
desktop freedesktop.org 指定的桌面条目 Linux
link.html 带有重定向的 HTML 文档 所有
url INI 样式的链接文件 macOS、Windows
webloc macOS 特定的 XML 格式 macOS

标准选项

以下是 Google Drive 特有的标准选项。

–drive-client-id

Google 应用客户端 ID 建议设置自己的客户端 ID。 有关如何创建自己的客户端 ID,请参阅 https://rclone.cn/drive/#making-your-own-client-id。 如果留空,它将使用内部密钥,性能较低。

属性:

  • 配置项:client_id
  • 环境变量:RCLONE_DRIVE_CLIENT_ID
  • 类型:字符串
  • 是否必需:否

–drive-client-secret

OAuth 客户端密钥。 通常留空。

属性:

  • 配置项:client_secret
  • 环境变量:RCLONE_DRIVE_CLIENT_SECRET
  • 类型:字符串
  • 是否必需:否

–drive-scope

rclone 向 Google Drive 请求访问权限时应使用的权限范围,以逗号分隔的列表形式提供。

属性:

  • 配置项:scope
  • 环境变量:RCLONE_DRIVE_SCOPE
  • 类型:字符串
  • 是否必需:否
  • 示例:
    • “drive”
      • 对除应用数据文件夹之外的所有文件具有完全访问权限。
    • “drive.readonly”
      • 对文件元数据和文件内容具有只读访问权限。
    • “drive.file”
      • 仅对 rclone 创建的文件具有访问权限。
      • 这些文件在 Google Drive 网站上可见。
      • 用户撤销应用授权时,文件授权将被撤销。
    • “drive.appfolder”
      • 允许对应用数据文件夹进行读写访问。
      • 此文件夹在 Google Drive 网站上不可见。
    • “drive.metadata.readonly”
      • 允许对文件元数据进行只读访问,但
      • 不允许对文件内容进行任何读取或下载访问。

–drive-service-account-file

服务账户凭证 JSON 文件的路径。 通常留空。 仅在你想使用服务账户而不是交互式登录时才需要设置。

文件名中的前导 ~ 会被展开,环境变量(如 ${RCLONE_CONFIG_DIR})也会被展开。

属性:

  • 配置项:service_account_file
  • 环境变量:RCLONE_DRIVE_SERVICE_ACCOUNT_FILE
  • 类型:字符串
  • 是否必需:否

–drive-alternate-export

已弃用:不再需要。

属性:

  • 配置项:alternate_export
  • 环境变量:RCLONE_DRIVE_ALTERNATE_EXPORT
  • 类型:布尔值
  • 默认值:false

高级选项

以下是 Google Drive 特有的高级选项。

–drive-token

OAuth 访问令牌,以 JSON 字符串形式提供。

属性:

  • 配置项:token
  • 环境变量:RCLONE_DRIVE_TOKEN
  • 类型:字符串
  • 是否必需:否

–drive-auth-url

认证服务器 URL。 留空以使用提供商的默认值。

属性:

  • 配置项:auth_url
  • 环境变量:RCLONE_DRIVE_AUTH_URL
  • 类型:字符串
  • 是否必需:否

–drive-token-url

令牌服务器 URL。 留空以使用提供商的默认值。

属性:

  • 配置项:token_url
  • 环境变量:RCLONE_DRIVE_TOKEN_URL
  • 类型:字符串
  • 是否必需:否

–drive-client-credentials

使用客户端凭证 OAuth 流程。 这将使用 RFC 6749 中描述的 OAuth2 客户端凭证流程。

属性:

  • 配置项:client_credentials
  • 环境变量:RCLONE_DRIVE_CLIENT_CREDENTIALS
  • 类型:布尔值
  • 默认值:false

–drive-root-folder-id

根文件夹的 ID。 通常留空。 填写此选项可访问“计算机”文件夹(请参阅文档),或者让 rclone 使用非根文件夹作为其起始点。

属性:

  • 配置项:root_folder_id
  • 环境变量:RCLONE_DRIVE_ROOT_FOLDER_ID
  • 类型:字符串
  • 是否必需:否

–drive-service-account-credentials

服务账户凭证的 JSON 字符串。 通常留空。 仅在你想使用服务账户而不是交互式登录时才需要设置。

属性:

  • 配置项:service_account_credentials
  • 环境变量:RCLONE_DRIVE_SERVICE_ACCOUNT_CREDENTIALS
  • 类型:字符串
  • 是否必需:否

–drive-team-drive

共享驱动器(团队驱动器)的 ID。

属性:

  • 配置项:team_drive
  • 环境变量:RCLONE_DRIVE_TEAM_DRIVE
  • 类型:字符串
  • 是否必需:否

–drive-auth-owner-only

仅考虑经过身份验证的用户拥有的文件。

属性:

  • 配置项:auth_owner_only
  • 环境变量:RCLONE_DRIVE_AUTH_OWNER_ONLY
  • 类型:布尔值
  • 默认值:false

–drive-use-trash

将文件发送到回收站而不是永久删除。 默认值为 true,即文件将被发送到回收站。 使用 --drive-use-trash=false 可改为永久删除文件。

属性:

  • 配置项:use_trash
  • 环境变量:RCLONE_DRIVE_USE_TRASH
  • 类型:布尔值
  • 默认值:true

–drive-copy-shortcut-content

在服务器端复制快捷方式的内容而不是快捷方式本身。 在进行服务器端复制时,通常 rclone 会将快捷方式作为快捷方式进行复制。 如果使用此标志,rclone 在进行服务器端复制时将复制快捷方式的内容而不是快捷方式本身。

属性:

  • 配置项:copy_shortcut_content
  • 环境变量:RCLONE_DRIVE_COPY_SHORTCUT_CONTENT
  • 类型:布尔值
  • 默认值:false

–drive-skip-gdocs

在所有列表中跳过 Google 文档。 如果设置了此选项,Google 文档实际上对 rclone 来说是不可见的。

属性:

  • 配置项:skip_gdocs
  • 环境变量:RCLONE_DRIVE_SKIP_GDOCS
  • 类型:布尔值
  • 默认值:false

–drive-show-all-gdocs

在列表中显示所有 Google 文档,包括不可导出的文档。 如果在没有此标志的情况下尝试对 Google 表单进行服务器端复制,你将收到以下错误: 未找到 “application/vnd.google-apps.form” 的导出格式 但是,添加此标志将允许对表单进行服务器端复制。 请注意,在这种模式下,rclone 不会为 Google 文档的文件名添加扩展名。 请勿在尝试下载 Google 文档时使用此标志 - rclone 将无法下载它们。

属性:

  • 配置项:show_all_gdocs
  • 环境变量:RCLONE_DRIVE_SHOW_ALL_GDOCS
  • 类型:布尔值
  • 默认值:false

–drive-skip-checksum-gphotos

仅跳过 Google 照片和视频的校验和检查。 如果你在传输 Google 照片或视频时遇到校验和错误,请使用此选项。 设置此标志将使 Google 照片和视频返回空的校验和。 Google 照片通过位于“照片”空间来识别。 损坏的校验和是由于 Google 修改了图像/视频但未更新校验和导致的。

属性:

  • 配置项:skip_checksum_gphotos
  • 环境变量:RCLONE_DRIVE_SKIP_CHECKSUM_GPHOTOS
  • 类型:布尔值
  • 默认值:false

–drive-shared-with-me

仅显示与我共享的文件。 指示 rclone 在你的“与我共享”文件夹中进行操作(Google Drive 允许你在此访问他人与你共享的文件和文件夹)。 这适用于“列表”(lsd、lsl 等)和“复制”命令(copy、sync 等),以及所有其他命令。

属性:

  • 配置项:shared_with_me
  • 环境变量:RCLONE_DRIVE_SHARED_WITH_ME
  • 类型:布尔值
  • 默认值:false

–drive-trashed-only

仅显示回收站中的文件。 这将以原始目录结构显示已删除的文件。

属性:

  • 配置项:trashed_only
  • 环境变量:RCLONE_DRIVE_TRASHED_ONLY
  • 类型:布尔值
  • 默认值:false

–drive-starred-only

仅显示加星标的文件。

属性:

  • 配置项:starred_only
  • 环境变量:RCLONE_DRIVE_STARRED_ONLY
  • 类型:布尔值
  • 默认值:false

–drive-formats

已弃用:请参阅 export_formats。

属性:

  • 配置项:formats
  • 环境变量:RCLONE_DRIVE_FORMATS
  • 类型:字符串
  • 是否必需:否

–drive-export-formats

下载 Google 文档时首选格式的逗号分隔列表。

属性:

  • 配置项:export_formats
  • 环境变量:RCLONE_DRIVE_EXPORT_FORMATS
  • 类型:字符串
  • 默认值:“docx,xlsx,pptx,svg”

–drive-import-formats

上传 Google 文档时首选格式的逗号分隔列表。

属性:

  • 配置项:import_formats
  • 环境变量:RCLONE_DRIVE_IMPORT_FORMATS
  • 类型:字符串
  • 是否必需:否

–drive-allow-import-name-change

允许上传 Google 文档时更改文件类型。 例如,将 file.doc 转换为 file.docx。这会使同步过程混乱,并且每次都会重新上传。

属性:

  • 配置项:allow_import_name_change
  • 环境变量:RCLONE_DRIVE_ALLOW_IMPORT_NAME_CHANGE
  • 类型:布尔值
  • 默认值:false

–drive-use-created-date

使用文件创建日期而不是修改日期。 在下载数据时,如果你希望使用创建日期代替最后修改日期,此选项很有用。 警告:此标志可能会产生一些意外后果。 上传到你的驱动器时,所有文件都会被覆盖,除非它们自创建以来没有被修改过。下载时则相反。可以通过使用 “–checksum” 标志来避免这种副作用。 此功能是为了保留 Google 照片记录的照片拍摄日期而实现的。你首先需要在 Google Drive 设置中选中“创建 Google 照片文件夹”选项。然后,你可以将照片本地复制或移动,并将图像拍摄(创建)的日期设置为修改日期。

属性:

  • 配置项:use_created_date
  • 环境变量:RCLONE_DRIVE_USE_CREATED_DATE
  • 类型:布尔值
  • 默认值:false

–drive-use-shared-date

使用文件共享日期而不是修改日期。 请注意,与 “–drive-use-created-date” 一样,此标志在上传/下载文件时可能会产生意外后果。 如果同时设置了此标志和 “–drive-use-created-date”,则使用创建日期。

属性:

  • 配置项:use_shared_date
  • 环境变量:RCLONE_DRIVE_USE_SHARED_DATE
  • 类型:布尔值
  • 默认值:false

–drive-list-chunk

列表块的大小,范围为 100 - 1000,0 表示禁用。

属性:

  • 配置项:list_chunk
  • 环境变量:RCLONE_DRIVE_LIST_CHUNK
  • 类型:整数
  • 默认值:1000

–drive-impersonate

使用服务账户时模拟此用户。

属性:

  • 配置项:impersonate
  • 环境变量:RCLONE_DRIVE_IMPERSONATE
  • 类型:字符串
  • 是否必需:否

–drive-upload-cutoff

切换到分块上传的阈值。

属性:

  • 配置项:upload_cutoff
  • 环境变量:RCLONE_DRIVE_UPLOAD_CUTOFF
  • 类型:SizeSuffix
  • 默认值:8Mi

–drive-chunk-size

上传块的大小。 必须是 2 的幂且 >= 256k。 增大此值将提高性能,但请注意,每个块都会在内存中缓冲,每个传输一个块。 减小此值将减少内存使用,但会降低性能。

属性:

  • 配置项:chunk_size
  • 环境变量:RCLONE_DRIVE_CHUNK_SIZE
  • 类型:SizeSuffix
  • 默认值:8Mi

–drive-acknowledge-abuse

设置此选项以允许下载返回 cannotDownloadAbusiveFile 错误的文件。 如果下载文件时返回错误 “此文件已被识别为恶意软件或垃圾邮件,无法下载”,错误代码为 “cannotDownloadAbusiveFile”,则向 rclone 提供此标志以表明你承认下载该文件的风险,rclone 仍会下载该文件。 请注意,如果你使用的是服务账户,它需要具有管理员权限(而不是内容管理员权限)才能使此标志生效。如果服务账户没有正确的权限,Google 将忽略此标志。

属性:

  • 配置项:acknowledge_abuse
  • 环境变量:RCLONE_DRIVE_ACKNOWLEDGE_ABUSE
  • 类型:布尔值
  • 默认值:false

–drive-keep-revision-forever

永久保留每个文件的新版本。

属性:

  • 配置项:keep_revision_forever
  • 环境变量:RCLONE_DRIVE_KEEP_REVISION_FOREVER
  • 类型:布尔值
  • 默认值:false

–drive-size-as-quota

将文件大小显示为存储配额使用量,而不是实际大小。 将文件大小显示为存储配额使用量。这是当前版本加上所有已设置为永久保留的旧版本的大小。 警告:此标志可能会产生一些意外后果。 不建议在配置中设置此标志 - 建议的用法是在执行 rclone ls/lsl/lsf/lsjson 等命令时使用 –drive-size-as-quota 标志形式。 如果你确实使用此标志进行同步(不建议),则还需要使用 –ignore size。

属性:

  • 配置项:size_as_quota
  • 环境变量:RCLONE_DRIVE_SIZE_AS_QUOTA
  • 类型:布尔值
  • 默认值:false

–drive-v2-download-min-size

如果对象大于此大小,则使用 Drive v2 API 进行下载。

属性:

  • 配置项:v2_download_min_size
  • 环境变量:RCLONE_DRIVE_V2_DOWNLOAD_MIN_SIZE
  • 类型:SizeSuffix
  • 默认值:off

–drive-pacer-min-sleep

API 调用之间的最小睡眠时间。

属性:

  • 配置项:pacer_min_sleep
  • 环境变量:RCLONE_DRIVE_PACER_MIN_SLEEP
  • 类型:Duration
  • 默认值:100ms

–drive-pacer-burst

允许在不睡眠的情况下进行的 API 调用次数。

属性:

  • 配置项:pacer_burst
  • 环境变量:RCLONE_DRIVE_PACER_BURST
  • 类型:整数
  • 默认值:100

–drive-server-side-across-configs

已弃用:请使用 –server-side-across-configs 代替。 允许服务器端操作(例如复制)在不同的 Drive 配置之间工作。 如果你希望在两个不同的 Google Drive 之间进行服务器端复制,这可能会很有用。请注意,默认情况下不启用此功能,因为很难确定它是否适用于任意两个配置。

属性:

  • 配置项:server_side_across_configs
  • 环境变量:RCLONE_DRIVE_SERVER_SIDE_ACROSS_CONFIGS
  • 类型:布尔值
  • 默认值:false

–drive-disable-http2

禁用 Drive 使用 HTTP/2。 目前 Google Drive 后端与 HTTP/2 存在一个未解决的问题。因此,Drive 后端默认禁用 HTTP/2,但可以在此处重新启用。问题解决后,此标志将被移除。 请参阅:https://github.com/rclone/rclone/issues/3631

属性:

  • 配置项:disable_http2
  • 环境变量:RCLONE_DRIVE_DISABLE_HTTP2
  • 类型:布尔值
  • 默认值:true

–drive-stop-on-upload-limit

使上传限制错误成为致命错误。 在撰写本文时,每天只能向 Google Drive 上传 750 GiB 的数据(这是一个未记录的限制)。达到此限制时,Google Drive 会产生一个略有不同的错误消息。设置此标志会使这些错误成为致命错误,从而停止正在进行的同步。 请注意,此检测依赖于 Google 未记录的错误消息字符串,因此未来可能会失效。 请参阅:https://github.com/rclone/rclone/issues/3857

属性:

  • 配置项:stop_on_upload_limit
  • 环境变量:RCLONE_DRIVE_STOP_ON_UPLOAD_LIMIT
  • 类型:布尔值
  • 默认值:false

–drive-stop-on-download-limit

使下载限制错误成为致命错误。 在撰写本文时,每天只能从 Google Drive 下载 10 TiB 的数据(这是一个未记录的限制)。达到此限制时,Google Drive 会产生一个略有不同的错误消息。设置此标志会使这些错误成为致命错误,从而停止正在进行的同步。 请注意,此检测依赖于 Google 未记录的错误消息字符串,因此未来可能会失效。

属性:

  • 配置项:stop_on_download_limit
  • 环境变量:RCLONE_DRIVE_STOP_ON_DOWNLOAD_LIMIT
  • 类型:布尔值
  • 默认值:false

–drive-skip-shortcuts

如果设置,则跳过快捷方式文件。 通常,rclone 会解引用快捷方式文件,使它们看起来就像原始文件一样(请参阅快捷方式部分)。如果设置了此标志,rclone 将完全忽略快捷方式文件。

属性:

  • 配置项:skip_shortcuts
  • 环境变量:RCLONE_DRIVE_SKIP_SHORTCUTS
  • 类型:布尔值
  • 默认值:false

–drive-skip-dangling-shortcuts

如果设置,则跳过悬空的快捷方式文件。 如果设置了此选项,rclone 在列表中不会显示任何悬空的快捷方式。

属性:

  • 配置项:skip_dangling_shortcuts
  • 环境变量:RCLONE_DRIVE_SKIP_DANGLING_SHORTCUTS
  • 类型:布尔值
  • 默认值:false

–drive-resource-key

用于访问链接共享文件的资源密钥。 如果你需要访问通过如下链接共享的文件: https://drive.google.com/drive/folders/XXX?resourcekey=YYY&usp=sharing 那么你需要使用第一部分 “XXX” 作为 “root_folder_id”,第二部分 “YYY” 作为 “resource_key”,否则在尝试访问该目录时会收到 404 未找到错误。 请参阅:https://developers.google.com/drive/api/guides/resource-keys 此资源密钥要求仅适用于一部分旧文件。 另请注意,在网页界面中使用你已为 rclone 进行身份验证的用户打开一次该文件夹,似乎就足以使资源密钥不再需要。

属性:

  • 配置项:resource_key
  • 环境变量:RCLONE_DRIVE_RESOURCE_KEY
  • 类型:字符串
  • 是否必需:否

–drive-fast-list-bug-fix

解决 Google Drive 列表中的一个错误。 通常,rclone 在使用 –fast-list (ListR) 时会解决 Google Drive 中的一个错误,即搜索 “(A in parents) or (B in parents)” 有时会返回空结果。请参阅 #3114、#4289 和 https://issuetracker.google.com/issues/149522397 rclone 通过在列表中发现多个目录中没有项目来检测此问题,并将它们作为单个目录列表重新尝试。 这意味着如果你有很多空目录,rclone 最终会逐个列出它们,这可能会需要更多的 API 调用。 此标志允许禁用此解决方法。在正常使用中不建议这样做 - 仅在你遇到特定问题(例如有很多空目录)时使用。

属性:

  • 配置项:fast_list_bug_fix
  • 环境变量:RCLONE_DRIVE_FAST_LIST_BUG_FIX
  • 类型:布尔值
  • 默认值:true

–drive-metadata-owner

控制是否应在元数据中读取或写入所有者信息。 所有者是文件元数据的标准部分,因此很容易读取。但并不总是希望从元数据中设置所有者。 请注意,你不能在共享驱动器上设置所有者,并且设置所有权会向新所有者发送一封电子邮件(无法禁用此功能),并且你不能将所有权转移给组织外部的人员。

属性:

  • 配置项:metadata_owner
  • 环境变量:RCLONE_DRIVE_METADATA_OWNER
  • 类型:Bits
  • 默认值:read
  • 示例:
    • “off”
      • 不读取或写入该值
    • “read”
      • 仅读取该值
    • “write”
      • 仅写入该值
    • “failok”
      • 如果写入失败,仅记录错误,不使传输失败
    • “read,write”
      • 读取并写入该值

–drive-metadata-permissions

控制是否应在元数据中读取或写入权限信息。 从文件中读取权限元数据可以快速完成,但并不总是希望从元数据中设置权限。 请注意,rclone 会删除共享驱动器上的任何继承权限以及我的驱动器上的任何所有者权限,因为这些权限在所有者元数据中是重复的。

属性:

  • 配置项:metadata_permissions
  • 环境变量:RCLONE_DRIVE_METADATA_PERMISSIONS
  • 类型:Bits
  • 默认值:off
  • 示例:
    • “off”
      • 不读取或写入该值
    • “read”
      • 仅读取该值
    • “write”
      • 仅写入该值
    • “failok”
      • 如果写入失败,仅记录错误,不使传输失败
    • “read,write”
      • 读取并写入该值

–drive-metadata-labels

控制是否应在元数据中读取或写入标签信息。 从文件中读取标签元数据需要额外的 API 事务,并且会减慢列表操作的速度。并不总是希望从元数据中设置标签。 标签的格式在 Drive API 文档中有所说明,地址为 https://developers.google.com/drive/api/reference/rest/v3/Label - rclone 只是提供了这种格式的 JSON 转储。 设置标签时,标签和字段必须已经存在 - rclone 不会创建它们。这意味着如果你要从两个不同的账户传输标签,你必须提前创建标签,并使用元数据映射器在两个账户之间转换 ID。

属性:

  • 配置项:metadata_labels
  • 环境变量:RCLONE_DRIVE_METADATA_LABELS
  • 类型:Bits
  • 默认值:off
  • 示例:
    • “off”
      • 不读取或写入该值
    • “read”
      • 仅读取该值
    • “write”
      • 仅写入该值
    • “failok”
      • 如果写入失败,仅记录错误,不使传输失败
    • “read,write”
      • 读取并写入该值

–drive-encoding

后端的编码方式。 有关更多信息,请参阅概述中的编码部分

属性:

  • 配置项:encoding
  • 环境变量:RCLONE_DRIVE_ENCODING
  • 类型:Encoding
  • 默认值:InvalidUtf8

–drive-env-auth

从运行时(环境变量或实例元数据,如果没有环境变量)获取 IAM 凭证。 仅在 service_account_file 和 service_account_credentials 为空时适用。

属性:

  • 配置项:env_auth
  • 环境变量:RCLONE_DRIVE_ENV_AUTH
  • 类型:布尔值
  • 默认值:false
  • 示例:
    • “false”
      • 在下一步中输入凭证。
    • “true”
      • 从环境(环境变量或 IAM)中获取 GCP IAM 凭证。

–drive-description

远程存储的描述。

属性:

  • 配置项:description
  • 环境变量:RCLONE_DRIVE_DESCRIPTION
  • 类型:字符串
  • 是否必需:否

元数据

用户元数据存储在 Drive 对象的属性字段中。 文件和目录都支持元数据。

以下是 Drive 后端可能的系统元数据项:

名称 说明 类型 示例 是否只读
btime 文件创建时间,精确到毫秒。请注意,这仅在新上传时可写 - 更新时无法写入。 RFC 3339 2006-01-02T15:04:05.999Z07:00
content-type 文件的 MIME 类型。 字符串 text/plain
copy-requires-writer-permission 对于读者和评论者,是否应禁用复制、打印或下载此文件的选项。 布尔值 true
description 文件的简短描述。 字符串 待签署的合同
folder-color-rgb 文件夹或指向文件夹的快捷方式的颜色,以 RGB 十六进制字符串表示。 字符串 881133
labels 附加到此文件的标签,以 Google Drive 格式的 JSON 转储表示。使用 –drive-metadata-labels 启用。 JSON []
mtime 最后修改时间,精确到毫秒。 RFC 3339 2006-01-02T15:04:05.999Z07:00
owner 文件的所有者。通常是电子邮件地址。使用 –drive-metadata-owner 启用。 字符串 [email protected]
permissions 权限,以 Google Drive 格式的 JSON 转储表示。在共享驱动器上,只有当权限不是继承的时才会显示。使用 –drive-metadata-permissions 启用。 JSON {}
starred 用户是否已将文件加星标。 布尔值 false
viewed-by-me 文件是否已被此用户查看。 布尔值 true
writers-can-share 只有写入权限的用户是否可以修改文件的权限。对于共享驱动器中的项目,设置时不填充且忽略此选项。 布尔值 false

有关更多信息,请参阅元数据文档。

后端命令

以下是 Drive 后端特有的命令。

使用以下命令运行它们:

rclone backend COMMAND remote:

以下帮助信息将解释每个命令需要哪些参数。 有关如何传递选项和参数的更多信息,请参阅后端命令。

这些命令可以在运行的后端上使用 rc 命令 backend/command 执行。

get

用于获取 Drive 配置参数的 get 命令

rclone backend get remote: [options] [<arguments>+]

这是一个 get 命令,用于获取各种 Drive 配置参数。

使用示例:

rclone backend get drive: [-o service_account_file] [-o chunk_size]
rclone rc backend/command command=get fs=drive: [-o service_account_file] [-o chunk_size]

选项:

  • “chunk_size”: 显示当前的上传块大小
  • “service_account_file”: 显示当前的服务账户文件

set

用于更新 Drive 配置参数的 set 命令

rclone backend set remote: [options] [<arguments>+]

这是一个 set 命令,用于更新各种 Drive 配置参数。

使用示例:

rclone backend set drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]
rclone rc backend/command command=set fs=drive: [-o service_account_file=sa.json] [-o chunk_size=67108864]

选项:

  • “chunk_size”: 更新当前的上传块大小
  • “service_account_file”: 更新当前的服务账户文件

shortcut

从文件或目录创建快捷方式

rclone backend shortcut remote: [options] [<arguments>+]

此命令用于从文件或目录创建快捷方式。

使用方法:

rclone backend shortcut drive: source_item destination_shortcut
rclone backend shortcut drive: source_item -o target=drive2: destination_shortcut

在第一个示例中,此命令从 “source_item”(可以是文件或目录)创建一个快捷方式到 “destination_shortcut”。“source_item” 和 “destination_shortcut” 应该是相对于 “drive:” 的相对路径。 在第二个示例中,此命令从相对于 “drive:” 的 “source_item” 创建一个快捷方式到相对于 “drive2:” 的 “destination_shortcut”。如果使用 “drive2:” 进行身份验证的用户无法从 “drive:” 读取文件,此操作可能会因权限错误而失败。

选项:

  • “target”: 快捷方式目标的可选目标远程存储

drives

列出此账户可用的共享驱动器

rclone backend drives remote: [options] [<arguments>+]

此命令列出此账户可用的共享驱动器(团队驱动器)。

使用方法:

rclone backend [-o config] drives drive:

这将返回一个 JSON 对象列表,如下所示

[
    {
        "id": "0ABCDEF-01234567890",
        "kind": "drive#teamDrive",
        "name": "My Drive"
    },
    {
        "id": "0ABCDEFabcdefghijkl",
        "kind": "drive#teamDrive",
        "name": "Test Drive"
    }
]

使用 -o config 参数时,它将以适合添加到配置文件的格式输出列表,以便为所有找到的共享驱动器和一个组合驱动器创建别名。

[My Drive]
type = alias
remote = drive,team_drive=0ABCDEF-01234567890,root_folder_id=:

[Test Drive]
type = alias
remote = drive,team_drive=0ABCDEFabcdefghijkl,root_folder_id=:

[AllDrives]
type = combine
upstreams = "My Drive=My Drive:" "Test Drive=Test Drive:"

将这些内容添加到 rclone 配置文件后,就可以使用上述别名访问那些共享驱动器。任何非法字符都会被替换为 “_",重复的名称会添加数字后缀。它还会添加一个名为 AllDrives 的远程存储,将所有共享驱动器组合成一个目录树显示。

untrash

恢复文件和目录

rclone backend untrash remote: [options] [<arguments>+]

此命令会递归地恢复传入目录中的所有文件和目录。

使用方法:

可以选择传入一个要恢复的目录,这样通过 API 使用该命令会更方便。

rclone backend untrash drive:directory
rclone backend --interactive untrash drive:directory subdir

使用 --interactive-i--dry-run 标志,可在恢复之前查看哪些内容将被恢复。

结果:

{
    "Untrashed": 17,
    "Errors": 0
}

copyid

通过 ID 复制文件

rclone backend copyid remote: [选项] [<参数>+]

此命令通过 ID 复制文件

用法:

rclone backend copyid drive: ID 路径
rclone backend copyid drive: ID1 路径1 ID2 路径2

它将给定 ID 的云端硬盘文件复制到指定路径(一个 rclone 路径,该路径将在内部传递给 rclone copyto)。ID 和路径对可以重复。

路径应以 / 结尾,以表示将文件按原名复制到此目录。如果路径不以 / 结尾,则路径的最后一部分将用作文件名。

如果目标是云端硬盘后端,则会尽可能尝试进行服务器端复制。

使用 --interactive/-i--dry-run 标志,可在复制前查看将复制的内容。

exportformats

出于调试目的转储导出格式

rclone backend exportformats remote: [选项] [<参数>+]

importformats

出于调试目的转储导入格式

rclone backend importformats remote: [选项] [<参数>+]

query

使用 Google 云端硬盘查询语言列出文件

rclone backend query remote: [选项] [<参数>+]

此命令根据查询列出文件

用法:

rclone backend query drive: 查询语句

查询语法记录在 Google 云端硬盘搜索查询术语和运算符 中。

例如:

rclone backend query drive: "'0ABc9DEFGHIJKLMNop0QRatUVW3X' in parents and name contains 'foo'"

如果查询语句包含字面意义的 '\ 字符,则需要用 \ 字符进行转义。" 变为 \"\ 变为 \\,例如,要匹配名为 “foo ’ .txt” 的文件:

rclone backend query drive: "name = 'foo \' \\.txt'"

结果是一个匹配项的 JSON 数组,例如:

[
{
	"createdTime": "2017-06-29T19:58:28.537Z",
	"id": "0AxBe_CDEF4zkGHI4d0FjYko2QkD",
	"md5Checksum": "68518d16be0c6fbfab918be61d658032",
	"mimeType": "text/plain",
	"modifiedTime": "2024-02-02T10:40:02.874Z",
	"name": "foo ' \\.txt",
	"parents": [
		"0BxAe_BCDE4zkFGZpcWJGek0xbzC"
	],
	"resourceKey": "0-ABCDEFGHIXJQpIGqBJq3MC",
	"sha1Checksum": "8f284fa768bfb4e45d076a579ab3905ab6bfa893",
	"size": "311",
	"webViewLink": "https://drive.google.com/file/d/0AxBe_CDEF4zkGHI4d0FjYko2QkD/view?usp=drivesdk\u0026resourcekey=0-ABCDEFGHIXJQpIGqBJq3MC"
}
]

rescue

恢复或删除任何孤立文件

rclone backend rescue remote: [选项] [<参数>+]

此命令用于恢复或删除任何孤立的文件或目录。

有时,Google Drive 中的文件可能会变成孤立文件。这意味着它们不再位于 Google Drive 的任何文件夹中。

此命令会查找这些文件,并将它们恢复到你指定的目录中,或者将它们删除。

用法:

此命令有三种使用方式。

第一种,列出所有孤立文件

rclone backend rescue drive:

第二种,将所有孤立文件恢复到指定目录

rclone backend rescue drive: "相对/路径/到/恢复/目录"

例如,将所有孤立文件恢复到顶级目录中名为 “Orphans” 的目录

rclone backend rescue drive: Orphans

第三种,将所有孤立文件移到回收站

rclone backend rescue drive: -o delete

限制

Drive 有相当多的速率限制。这导致 rclone 每秒只能传输大约 2 个文件。单个文件的传输速度可能会快得多,达到每秒数百兆字节,但大量小文件的传输可能需要很长时间。

服务器端复制也有单独的速率限制。如果你看到“用户速率限制已超出”的错误,请至少等待 24 小时后再重试。如果你愿意,可以使用 --disable copy 禁用服务器端复制,改为下载并上传文件。

Google 文档的限制

rclone lsrclone ncdu 等命令中,Google 文档的大小将显示为 -1,而在使用 VFS 层的任何命令中,如 rclone mountrclone serve,其大小将显示为 0。在计算目录总大小时,例如在 rclone sizerclone ncdu 中,它们将被视为空文件。

这是因为 rclone 在不下载 Google 文档的情况下无法确定其大小。

使用 rclone syncrclone copy 等命令时,Google 文档将正确传输,因为 rclone 在传输时会忽略大小。

然而,这可能会导致一个不幸的后果,即你可能无法使用 rclone mount 下载 Google 文档。如果下载失败,你将得到一个大小为 0 的文件。再次尝试时,文档可能会显示正确的大小并可以下载。是否能成功下载取决于访问挂载点的应用程序和你运行的操作系统 - 你可以通过实验来确定是否对你有效!

重复文件

有时,我无法查明原因,Drive 会复制 rclone 上传的文件。与其他所有远程存储不同,Drive 可以存在重复文件。

重复文件会导致同步出现问题,你会在日志中看到关于重复文件的消息。

使用 rclone dedupe 来修复重复文件。

请注意,这不仅仅是 rclone 的问题,即使是 Android 上的 Google 相册有时也会在 Drive 上复制文件。

Rclone 似乎在重新复制不应复制的文件

最可能的原因是上述的重复文件问题 - 运行 rclone dedupe 并检查日志中是否有重复对象或目录的消息。

这也可能是由于 Google Drive 在比较目录列表时的延迟/缓存问题导致的。特别是在结合使用 --fast-list 时使用团队驱动器。使用 --fast-list 时,最近上传的文件可能不会出现在发送给 rclone 的目录列表中。

在尝试之间等待一段时间(估计约为 1 小时)和/或不使用 --fast-list 似乎都能有效防止这个问题。

SHA1 或 SHA256 哈希值可能缺失

所有文件都有 MD5 哈希值,但一小部分上传的文件可能没有 SHA1 或 SHA256 哈希值,特别是如果它们是在 2018 年之前上传的。

创建自己的 client_id

当你在默认配置下使用 rclone 与 Google Drive 配合使用时,你使用的是 rclone 的 client_id。这是所有 rclone 用户共享的。Google 为每个 client_id 设置了每秒查询次数的全局速率限制。rclone 已经有较高的配额,我会继续通过联系 Google 确保其配额足够高。

强烈建议使用你自己的客户端 ID,因为默认的 rclone ID 使用频率很高。如果你运行多个服务,建议为每个服务使用一个 API 密钥。Google 的默认配额是每秒 10 次事务,因此建议保持在这个数字以下,因为如果你使用的次数超过这个数字,会导致 rclone 进行速率限制,从而使操作变慢。

以下是如何为 rclone 创建自己的 Google Drive 客户端 ID:

  1. 使用你的 Google 账户登录 Google API 控制台。使用哪个 Google 账户并不重要。(不一定是你要访问的 Google Drive 所使用的账户)

  2. 选择一个项目或创建一个新项目。

  3. 在“启用 API 和服务”下搜索“Drive”,并启用“Google Drive API”。

  4. 点击左侧面板中的“凭证”(不是“创建凭证”,后者会打开向导)。

  5. 如果你已经配置了“OAuth 同意屏幕”,则跳过此步骤;如果没有,请点击右侧面板右上角附近的“配置同意屏幕”按钮,然后选择“外部”并点击“创建”;在下一个屏幕上,输入“应用名称”(“rclone” 即可);输入“用户支持电子邮件”(你自己的电子邮件即可);输入“开发者联系电子邮件”(你自己的电子邮件即可);然后点击“保存”(所有其他数据都是可选的)。你还需要添加 一些作用域,包括

  • https://www.googleapis.com/auth/docs
  • https://www.googleapis.com/auth/drive,以便能够使用 RClone 编辑、创建和删除文件。
  • https://www.googleapis.com/auth/drive.metadata.readonly,你可能也想添加这个作用域。
  • 如果你想一次性添加所有作用域,用逗号分隔就是 https://www.googleapis.com/auth/docs,https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/drive.metadata.readonly
  1. 添加作用域后,点击“保存并继续”以添加测试用户。确保将你自己的账户添加到测试用户中。将自己添加为测试用户并保存更改后,再次点击左侧面板中的“凭证”以返回“凭证”屏幕。

    (注意:如果你是 GSuite 用户,你也可以在上面选择“内部”,但这将限制 API 的使用仅限于你组织内的 Google Workspace 用户)。

  2. 点击屏幕顶部的“+ 创建凭证”按钮,然后选择“OAuth 客户端 ID”。

  3. 选择应用类型为“桌面应用”,然后点击“创建”。(默认名称即可)

  4. 它将显示你的客户端 ID 和客户端密钥。记下这些信息。

    (如果你在第 5 步选择了“外部”,请继续执行第 10 步。如果你选择了“内部”,则无需发布,可以直接跳到第 11 步,但你的目标驱动器必须是同一个 Google Workspace 的一部分)。

  5. 转到“OAuth 同意屏幕”,然后点击“发布应用”按钮并确认。你还需要将自己添加为测试用户。

  6. 将记录的客户端 ID 和客户端密钥提供给 rclone。

请注意,由于 Google 最近引入的“增强安全措施”,理论上你应该“提交你的应用进行验证”,然后等待几周(!)以获得他们的回复;实际上,你可以直接使用客户端 ID 和客户端密钥与 rclone 配合使用,唯一的问题是当你通过浏览器连接以使 rclone 能够获取其令牌 ID 时,会显示一个非常吓人的确认屏幕(但由于这只在远程配置期间发生,所以不是什么大问题)。将应用保持在“测试”状态也可以工作,但限制是任何授权将在一周后过期,这可能会很烦人,需要不断刷新。如果出于任何原因,短授权时间不是问题,那么将应用保持在测试模式也足够了。

(感谢 GitHub 上的 @balazer 提供这些说明。)

有时,在 Google API 控制台中创建 OAuth 同意屏幕会因错误消息“请求失败,因为不支持对资源的某个字段进行更改”而失败。作为一个方便的解决方法,可以在 Python 快速入门 页面上创建必要的 Google Drive API 密钥。只需点击“启用 Drive API”按钮即可获取客户端 ID 和密钥。请注意,它将在 API 控制台中自动创建一个新项目。