Box

路径指定为 remote:path

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

Box 的初始设置需要从 Box 获取一个令牌,你可以在浏览器中完成,也可以使用从 Box 下载的 config.json 文件进行 JWT 身份验证。rclone config 会引导你完成这个过程。

配置

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

 rclone config

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

No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> remote
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Box
   \ "box"
[snip]
Storage> box
Box App Client Id - leave blank normally.
client_id> 
Box App Client Secret - leave blank normally.
client_secret>
Box App config.json location
Leave blank normally.
Enter a string value. Press Enter for the default ("").
box_config_file>
Box App Primary Access Token
Leave blank normally.
Enter a string value. Press Enter for the default ("").
access_token>

Enter a string value. Press Enter for the default ("user").
Choose a number from below, or type in your own value
 1 / Rclone should act on behalf of a user
   \ "user"
 2 / Rclone should act on behalf of a service account
   \ "enterprise"
box_sub_type>
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?state=XXXXXXXXXXXXXXXXXXXXXX
Log in and authorize rclone for access
Waiting for code...
Got code
Configuration complete.
Options:
- type: box
- client_id:
- client_secret:
- token: {"access_token":"XXX","token_type":"bearer","refresh_token":"XXX","expiry":"XXX"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

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

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

配置完成后,你可以像这样使用 rclone

列出 Box 顶级目录

rclone lsd remote:

列出 Box 中的所有文件

rclone ls remote:

将本地目录复制到 Box 中名为 backup 的目录

rclone copy /home/source remote:backup

使用 rclone 与支持单点登录 (SSO) 的企业账户

如果你拥有一个支持单点登录 (SSO) 的 Box “企业” 账户类型,你需要创建一个密码才能使用 rclone 连接 Box。你可以在企业 Box 账户中,通过进入 “设置” -> “账户” 标签页,然后在 “认证” 字段中设置密码。

完成此操作后,你可以使用刚刚设置的密码,按照上述详细步骤设置你的企业 Box 账户。

无效的刷新令牌

根据 Box 文档

每个刷新令牌在 60 天内仅可使用一次。

这意味着,如果你:

  • 60 天内未使用 Box 远程存储
  • 复制包含 Box 刷新令牌的配置文件,并在两个地方使用
  • 在刷新令牌时遇到错误

那么 rclone 将返回包含 Invalid refresh token(无效的刷新令牌)文本的错误信息。

要解决这个问题,你需要再次使用 OAuth2 来更新刷新令牌。你可以使用 远程设置文档 中的方法,但请记住,如果你使用复制配置文件的方法,请勿在进行认证的计算机上使用该远程存储。

以下是具体操作方法:

$ rclone config
Current remotes:

Name                 Type
====                 ====
remote               box

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> e
Choose a number from below, or type in an existing value
 1 > remote
remote> remote
Configuration complete.
Options:
- type: box
- token: {"access_token":"XXX","token_type":"bearer","refresh_token":"XXX","expiry":"2017-07-08T23:40:08.059167677+01:00"}
Keep this "remote" remote?
Edit remote
Value "client_id" = ""
Edit? (y/n)>
y) Yes
n) No
y/n> n
Value "client_secret" = ""
Edit? (y/n)>
y) Yes
n) No
y/n> n
Remote config
Already have a token - refresh?
y) Yes
n) No
y/n> y
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
Configuration complete.
Options:
- type: box
- token: {"access_token":"YYY","token_type":"bearer","refresh_token":"YYY","expiry":"2017-07-23T12:22:29.259137901+01:00"}
Keep this "remote" remote?
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

修改时间和哈希值

Box 允许将对象的修改时间精确设置到 1 秒。这些时间将用于检测对象是否需要同步。

Box 支持 SHA1 类型的哈希,因此你可以使用 --checksum 标志。

受限文件名中的字符

除了默认受限字符集之外,以下字符也会被替换:

字符 编码值 替换字符
\ 0x5C

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

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

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

传输

对于大于 50 MiB 的文件,rclone 将使用分块传输。rclone 会同时上传最多 --transfers 个块(所有多部分上传共享)。块会被缓冲在内存中,通常为 8 MiB,因此增加 --transfers 会增加内存使用。

删除文件

根据你的企业用户设置,项目可能会从 Box 中实际删除,或者被移动到回收站。

rclone 的清理命令支持清空回收站,但它会逐个删除每个被删除的文件和文件夹,因此可能需要很长时间。通过 WebUI 清空回收站没有这个限制,因此建议通过 WebUI 清空回收站。

根文件夹 ID

你可以为 rclone 设置 root_folder_id。这是 rclone 视为你的 Box 驱动器根目录的目录(由其 文件夹 ID 标识)。

通常你可以留空,rclone 会自行确定要使用的正确根目录。

但是,你可以设置此选项以将 rclone 限制在特定的文件夹层次结构中。

为此,你需要找到你希望 rclone 显示的目录的 文件夹 ID。这将是你在 Box Web 界面中打开相关文件夹时 URL 的最后一段。

因此,如果浏览器中你希望 rclone 使用的文件夹的 URL 类似于 https://app.box.com/folder/11xxxxxxxxx8,那么你可以在配置中使用 11xxxxxxxxx8 作为 root_folder_id

标准选项

以下是 Box 存储服务特有的标准选项。

–box-client-id

OAuth 客户端 ID。

通常留空。

属性:

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

–box-client-secret

OAuth 客户端密钥。

通常留空。

属性:

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

–box-box-config-file

Box 应用的 config.json 文件位置

通常留空。

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

属性:

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

–box-access-token

Box 应用的主访问令牌

通常留空。

属性:

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

–box-box-sub-type

属性:

  • 配置项:box_sub_type
  • 环境变量:RCLONE_BOX_BOX_SUB_TYPE
  • 类型:字符串
  • 默认值:“user”
  • 示例:
    • “user”
      • rclone 应代表用户操作。
    • “enterprise”
      • rclone 应代表服务账户操作。

高级选项

以下是 Box 存储服务特有的高级选项。

–box-token

OAuth 访问令牌,以 JSON 格式存储。

属性:

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

–box-auth-url

认证服务器 URL。

留空则使用提供商的默认值。

属性:

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

–box-token-url

令牌服务器 URL。

留空则使用提供商的默认值。

属性:

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

–box-client-credentials

使用客户端凭证 OAuth 流程。

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

属性:

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

–box-root-folder-id

填写此项可让 rclone 使用非根文件夹作为起始点。

属性:

  • 配置项:root_folder_id
  • 环境变量:RCLONE_BOX_ROOT_FOLDER_ID
  • 类型:字符串
  • 默认值:“0”

–box-upload-cutoff

切换到多部分上传的阈值(>= 50 MiB)。

属性:

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

–box-commit-retries

尝试提交多部分文件的最大次数。

属性:

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

–box-list-chunk

列表块的大小,范围为 1 - 1000。

属性:

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

–box-owned-by

仅显示由传入的登录用户(电子邮件地址)拥有的项目。

属性:

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

–box-impersonate

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

设置此标志后,当使用 JWT 服务账户时,rclone 可以通过设置 as-user 标头来代表另一个用户操作。

用户 ID 是 Box 中用户的标识符。任何用户的用户 ID 都可以通过 GET /users 端点获取(仅管理员可用),或者通过使用经过身份验证的用户会话调用 GET /users/me 端点获取。

请参阅:https://developer.box.com/guides/authentication/jwt/as-user/

属性:

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

–box-encoding

后端的编码方式。

有关更多信息,请参阅概述中的编码部分

属性:

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

–box-description

远程存储的描述。

属性:

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

限制

请注意,Box 不区分大小写,因此你不能同时有一个名为 “Hello.doc” 的文件和一个名为 “hello.doc” 的文件。

Box 文件名中不能包含 \ 字符。rclone 会将其映射为一个看起来相同的 Unicode 字符 (U+FF3C 全角反斜杠)。

Box 仅支持长度不超过 255 个字符的文件名。

Box 有API 速率限制,有时会降低 rclone 的速度。

Box 后端不支持 rclone about 命令。没有此功能的后端无法确定 rclone 挂载点的可用空间,也不能在 rclone 联合远程存储中使用 mfs(最大可用空间)策略。

请参阅不支持 rclone about 的后端列表rclone about

获取你自己的 Box 应用 ID

以下是如何为 rclone 创建你自己的 Box 应用 ID:

  1. 访问 Box 开发者控制台 并登录,然后点击侧边栏中的 我的应用。点击 创建新应用 并选择 自定义应用

  2. 在弹出窗口的第一个屏幕中,你可以输入任何内容。应用名称 可以随意填写。对于 用途,选择自动化以避免填写其他内容。点击 下一步

  3. 在创建屏幕的第二个屏幕中,选择 用户认证 (OAuth 2.0)。然后点击 创建应用

  4. 你现在应该在新应用的 配置 选项卡上。如果不是,请点击网页顶部的该选项卡。复制 客户端 ID客户端密钥,rclone 需要这些信息。

  5. 在 “OAuth 2.0 重定向 URI” 下,添加 http://127.0.0.1:53682/

  6. 对于 应用权限范围,选择 读取存储在 Box 中的所有文件和文件夹写入存储在 Box 中的所有文件和文件夹(假设你想同时进行这两项操作)。其他选项保持未选中状态。点击右上角的 保存更改