Dropbox

Dropbox

路径指定为 remote:path

Dropbox 的路径可以按需设置深度,例如: remote:directory/subdirectory

配置

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

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

 rclone config

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

n) New remote
d) Delete remote
q) Quit config
e/n/d/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Dropbox
   \ "dropbox"
[snip]
Storage> dropbox
Dropbox App Key - leave blank normally.
app_key>
Dropbox App Secret - leave blank normally.
app_secret>
Remote config
Please visit:
https://www.dropbox.com/1/oauth2/authorize?client_id=XXXXXXXXXXXXXXX&response_type=code
Enter the code: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXXXX
Configuration complete.
Options:
- type: dropbox
- app_key:
- app_secret:
- token: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX_XXXX_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

配置

可参考 远程设置文档 来了解如何在没有可用互联网浏览器的机器上进行设置。

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

设置完成后,你可以按以下方式使用它:

列出 Dropbox 顶级目录:

rclone lsd remote:

列出 Dropbox 中的所有文件:

rclone ls remote:

将本地目录复制到名为 backup 的 Dropbox 目录:

rclone copy /home/source remote:backup

商业版 Dropbox

rclone 支持商业版 Dropbox 和团队文件夹。

在使用商业版 Dropbox 时,remote:remote:path/to/file 会指向你的个人文件夹。

如果你想查看团队文件夹,必须在路径中使用前导 /,因此 rclone lsd remote:/ 会指向根目录,并显示所有团队文件夹和你的用户文件夹。

然后你可以像这样使用团队文件夹:remote:/TeamFolderremote:/TeamFolder/path/to/file

对于个人版 Dropbox 账户,前导 / 不会有任何作用,但会增加一次额外的 HTTP 事务,因此应避免使用。

修改时间和哈希值

Dropbox 支持修改时间,但设置修改时间的唯一方法是重新上传文件。

这意味着,如果你使用不支持 v2 API 和修改时间的旧版本 rclone 上传了数据,rclone 会决定上传所有旧数据以修复修改时间。如果你不希望发生这种情况,可以使用 --size-only--checksum 标志来阻止它。

Dropbox 支持 其自身的哈希类型,所有传输都会检查此哈希值。

受限文件名的字符

字符 编码值 替换字符
NUL 0x00
/ 0x2F
DEL 0x7F
\ 0x5C

文件名也不能以以下字符结尾。只有当这些字符是文件名的最后一个字符时才会被替换:

字符 编码值 替换字符
SP 0x20

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

批量模式上传

在使用 Dropbox API 时,使用批量模式上传对于性能非常重要。有关更多信息,请参阅 Dropbox 性能指南

rclone 可以使用 3 种模式进行上传。

–dropbox-batch-mode off

在此模式下,rclone 不会使用上传批量处理。这是 rclone v1.55 之前的默认模式。它的缺点是很可能会遇到 too_many_requests 错误,如下所示:

NOTICE: too_many_requests/.: Too many requests or write operations. Trying again in 15 seconds.

当 rclone 收到这些错误时,它必须等待 15 秒,有时甚至 300 秒才能继续,这会严重减慢传输速度。

特别是当 --transfers 参数设置得较大时,这种情况会更频繁发生,因此除非为了兼容性或排查问题,否则不建议使用此模式。

–dropbox-batch-mode sync

在此模式下,rclone 会将上传内容批量处理到 --dropbox-batch-size 指定的大小,然后一起提交。

使用此模式意味着你可以使用更高的 --transfers 参数(32 或 64 效果很好),而不会收到 too_many_requests 错误。

此模式可确保数据完全完整。

请注意,在使用此模式退出 rclone 时,可能会有一个暂停,因为 rclone 要完成最后一批上传。

–dropbox-batch-mode async

在此模式下,rclone 会将上传内容批量处理到 --dropbox-batch-size 指定的大小,然后一起提交。

但是,它不会等待批量处理的状态返回给调用者。这意味着 rclone 可以使用更大的批量大小(远大于 --transfers),但代价是无法检查上传状态。

这种模式尤其在处理大量小文件时能提供最大的上传速度,但 rclone 无法检查文件是否正确上传。

如果你使用此模式,建议在传输完成后使用 “rclone check”。或者你可以先使用 --dropbox-batch-mode async 进行初始传输,然后再使用 --dropbox-batch-mode sync(默认模式)进行最终传输。

请注意,在使用此模式退出 rclone 时,可能会有一个暂停,因为 rclone 要完成最后一批上传。

导出文件

Dropbox 中的某些文件是“可导出的”,例如 Dropbox Paper 文档。这些文件需要转换为另一种格式才能下载。通常有多种转换格式可供选择。

当 rclone 下载可导出文件时,它会根据 --dropbox-export-formats 设置选择要下载的格式。默认情况下,导出格式为 html,md,这对于 Dropbox Paper 来说是合理的默认设置。

rclone 会选择导出格式列表中 Dropbox 支持的第一个格式 ID。如果列表中没有可用的格式,rclone 将选择 Dropbox 建议的默认格式。

rclone 会更改文件扩展名以对应导出格式。以下是一些扩展名映射的示例:

文件类型 Dropbox 中的文件名 rclone 中的文件名
Paper mydoc.paper mydoc.html
Paper 模板 mydoc.papert mydoc.papert.html
其他 mydoc mydoc.html

rclone 目前尚不支持“导入”可导出文件。

以下是 rclone 已知的支持导出扩展名。请注意,rclone 目前不支持此列表之外的其他格式,即使 Dropbox 支持它们。此外,Dropbox 可能会随时更改支持的格式列表。

格式 ID 名称 描述
html HTML HTML 文档
md Markdown Markdown 文本格式

标准选项

以下是 Dropbox 特有的标准选项。

–dropbox-client-id

OAuth 客户端 ID。 通常留空。

属性:

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

–dropbox-client-secret

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

属性:

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

高级选项

以下是 Dropbox 特有的高级选项。

–dropbox-token

OAuth 访问令牌,以 JSON 格式表示。

属性:

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

–dropbox-auth-url

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

属性:

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

–dropbox-token-url

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

属性:

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

–dropbox-client-credentials

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

属性:

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

–dropbox-chunk-size

上传块大小(< 150Mi)。 任何大于此大小的文件将以该大小的块进行上传。

请注意,块会在内存中进行缓冲(一次一个),以便 rclone 处理重试。将此值设置得更大将略微提高速度(在测试中,128 MiB 时最多可提高 10%),但会消耗更多内存。如果内存紧张,可以将其设置得更小。

属性:

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

–dropbox-impersonate

在使用商业账户时模拟此用户。 请注意,如果你想使用模拟功能,在运行 “rclone config” 时应确保设置此标志,因为这会使 rclone 请求 “members.read” 范围,而通常情况下不会请求该范围。这是将成员的电子邮件地址查找为 Dropbox 在 API 中使用的内部 ID 所必需的。

使用 “members.read” 范围需要 Dropbox 团队管理员在 OAuth 流程中进行批准。

你必须使用自己的应用程序(设置自己的 client_id 和 client_secret)才能使用此选项,因为目前 rclone 的默认权限集不包括 “members.read”。在 v1.55 或更高版本普及后,可以添加此权限。

属性:

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

–dropbox-shared-files

指示 rclone 处理单个共享文件。 在此模式下,rclone 的功能极为有限 - 此模式仅支持列表(ls、lsl 等)操作和读取操作(例如下载)。所有其他操作将被禁用。

属性:

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

–dropbox-shared-folders

指示 rclone 处理共享文件夹。 当使用此标志且不指定路径时,仅支持列表操作,并且将列出所有可用的共享文件夹。如果你指定了路径,第一部分将被解释为共享文件夹的名称。然后 rclone 将尝试将此共享文件夹挂载到根命名空间。挂载成功后,rclone 将正常处理。此时,共享文件夹就像一个普通文件夹,所有正常操作都支持。

请注意,之后我们不会卸载共享文件夹,因此在首次使用特定共享文件夹后,可以省略 --dropbox-shared-folders

另请参阅 --dropbox-root-namespace,了解处理共享文件夹的另一种方法。

属性:

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

–dropbox-pacer-min-sleep

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

属性:

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

–dropbox-encoding

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

属性:

  • 配置项:encoding
  • 环境变量:RCLONE_DROPBOX_ENCODING
  • 类型:Encoding
  • 默认值:Slash,BackSlash,Del,RightSpace,InvalidUtf8,Dot

–dropbox-root-namespace

指定一个不同的 Dropbox 命名空间 ID 作为所有路径的根。

属性:

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

–dropbox-batch-mode

上传文件批量处理模式:sync|async|off。 这设置了 rclone 使用的批量处理模式。 有关详细信息,请参阅 主文档。 此选项有 3 种可能的值:

  • off - 不进行批量处理
  • sync - 批量上传并检查完成情况(默认)
  • async - 批量上传但不检查完成情况

rclone 在退出时会关闭任何未完成的批量处理,这可能会导致退出时出现延迟。

属性:

  • 配置项:batch_mode
  • 环境变量:RCLONE_DROPBOX_BATCH_MODE
  • 类型:字符串
  • 默认值:“sync”

–dropbox-batch-size

上传批次中的最大文件数。 这设置了上传文件的批次大小。它必须小于 1000。 默认情况下,此值为 0,这意味着 rclone 将根据 batch_mode 的设置计算批次大小。

  • batch_mode: async - 默认批次大小为 100
  • batch_mode: sync - 默认批次大小与 --transfers 相同
  • batch_mode: off - 不使用

rclone 在退出时会关闭任何未完成的批量处理,这可能会导致退出时出现延迟。 如果你要上传大量小文件,设置此选项是个好主意,因为这将大大提高上传速度。你可以使用 --transfers 32 来最大化吞吐量。

属性:

  • 配置项:batch_size
  • 环境变量:RCLONE_DROPBOX_BATCH_SIZE
  • 类型:整数
  • 默认值:0

–dropbox-batch-timeout

允许上传批次空闲的最长时间,之后将进行上传。 如果上传批次空闲时间超过此设置,则将进行上传。 默认值为 0,这意味着 rclone 将根据使用的 batch_mode 选择一个合理的默认值。

  • batch_mode: async - 默认批次超时时间为 10 秒
  • batch_mode: sync - 默认批次超时时间为 500 毫秒
  • batch_mode: off - 不使用

属性:

  • 配置项:batch_timeout
  • 环境变量:RCLONE_DROPBOX_BATCH_TIMEOUT
  • 类型:Duration
  • 默认值:0s

–dropbox-batch-commit-timeout

等待批次完成提交的最长时间。

属性:

  • 配置项:batch_commit_timeout
  • 环境变量:RCLONE_DROPBOX_BATCH_COMMIT_TIMEOUT
  • 类型:Duration
  • 默认值:10 分 0 秒

–dropbox-description

远程存储的描述。

属性:

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