rclone
概述
rclone 是一个管理云存储上文件的命令行程序,也是云供应商 Web 存储接口的一个功能丰富的替代方案。超过 70 种云存储产品支持 rclone,包括百度智能云对象存储(BOS)、企业和消费者文件存储服务以及标准传输协议。rclone 在 Linux、Windows 和 Mac 上广泛使用,第三方开发人员可以使用 rclone 命令行或 API 创建备份、恢复和业务流程解决方案。
前提条件
- 已准备可执行命令行操作的 Linux、Windows 或 Mac 环境。
- 已获取百度智能云账号的 Access Key 和 Secret Key。可在 访问密钥管理页面 查询。
- 已确认需要使用的 BOS S3 兼容协议 Endpoint。不同 Endpoint 对应不同的 S3 域名,详见 BOS S3 Endpoint 文档。
- 执行 bucket 或 object 管理操作前,请确认当前 Access Key 和 Secret Key 具备对应的读取、写入或删除权限。## 安装
操作入口:浏览器访问 rclone 安装页面。
操作步骤
步骤 1:打开 rclone 安装页面
访问 这里,根据当前操作系统选择对应的安装方式。页面提供 Quickstart、Linux、macOS、Windows、Package manager、Docker、Snap 等安装入口。

步骤 2:安装 rclone
根据安装页面中对应操作系统的说明完成安装。安装完成后,可在命令行执行以下命令确认 rclone 可用:
1rclone version
用法
配置
操作入口:命令行终端。
在命令行输入以下命令,进入 rclone 配置向导:
1rclone config
按提示完成配置,配置过程如下:
1No remotes found, make a new one?
2n) New remote
3s) Set configuration password
4q) Quit config
5n/s/q> n
6
7Enter name for new remote.
8name> <remote_name>
9
10Storage> <Amazon S3 Compliant Storage Providers 对应序号>
11provider> <Any other S3 compatible provider 对应序号>
12env_auth> 1
13
14access_key_id> <AccessKey>
15secret_access_key> <SecretKey>
16
17region> <使用 V4 signature 的选项序号>
18endpoint> <BOS S3 Endpoint>
19location_constraint>
20acl> <ACL 权限模式对应序号>
21
22Edit advanced config?
23y) Yes
24n) No (default)
25y/n> n
26
27Current remotes:
28Name Type
29==== ====
30<remote_name> s3
31
32e) Edit existing remote
33n) New remote
34d) Delete remote
35r) Rename remote
36c) Copy remote
37s) Set configuration password
38q) Quit config
39e/n/d/r/c/s/q> q
配置时请注意:
<remote_name>为新的远程连接名称,后续命令中通过该名称访问 BOS。Storage选择以 Amazon S3 Compliant Storage Providers 开头的选项,具体序号可能随 rclone 版本变化。provider选择 Any other S3 compatible provider(Other),具体序号可能随 rclone 版本变化。access_key_id填写账号的 Access Key,secret_access_key填写账号的 Secret Key。region请务必选择使用 V4 signature 的选项。endpoint填写兼容 S3 协议的 BOS 服务域名,不同 Endpoint 对应不同的 S3 域名,详见 BOS S3 Endpoint 文档。location_constraint如不确定可直接按 Enter 跳过。acl选择需要的权限模式,默认可选择 private。- 如输入确认无误,最后选择
q退出配置。
其中的配置信息可以根据个人需要进行改动,配置之后可根据提示退出。
指定访问方式
查看配置文件位置
操作入口:命令行终端。
执行以下命令查看 rclone 配置文件路径:
1rclone config file
返回结果中的路径即为 rclone 将使用的配置文件位置。
指定访问方式为 Virtual-hosted-style
打开 rclone 配置文件:
1vi <rclone_config_file>
在配置文件中新增或修改以下配置项,将访问方式指定为 Virtual-hosted-style:
1force_path_style = false
保存配置后,rclone 使用 BOS S3 兼容访问时将采用 Virtual-hosted-style 访问方式。
通用 flag
--help或-h:查看帮助。-v:显示执行时更详细的步骤信息。-vv:显示 debug log,用于定位错误。--interactive或-i:执行前询问。
bucket
操作入口:命令行终端。
-
查看所有 bucket:
Bash1rclone lsd <remote_name>: -
创建 bucket:
Bash1rclone mkdir <remote_name>:<bucket_name> -
删除空 bucket:
Bash1rclone rmdir <remote_name>:<bucket_name> -
强制删除 bucket:
Bash1rclone purge <remote_name>:<bucket_name>注意:
rclone purge会删除 bucket 及其中的文件,请确认目标 bucket 不再需要后再执行。
自定义 bucket 名称须满足 BOS 的 bucket 名称定义规则:
- 只能包含小写字母、数字和
-。 - 开头和结尾为小写字母或数字。
- 长度在 4-63 之间。
- 不同 bucket 之间名称不能重复。
bucket ACL 权限设置:
- 在
rclone config最后的 advanced config 中选择yes进行设置。 - 所有新建的 bucket 会自动按照 bucket ACL 的权限生成,其他 bucket 不受任何影响。
object
操作入口:命令行终端。
列出 object
列出指定 bucket 下所有 object:
1rclone ls <remote_name>:<bucket_name>
上传文件
使用 rclone copyto src dest 上传本地文件到 BOS。其中,src 为需上传的文件的本地地址,dest 为目标 BOS 位置。
1rclone copyto <local_file_path> <remote_name>:<bucket_name>/<object_name>
如需从 URL 地址直接上传至云,可使用 rclone copyurl:
1rclone copyurl <url> <remote_name>:<bucket_name>/<object_name>
下载文件
使用 rclone copyto src dest 下载 BOS object 到本地。其中,src 为需下载的目标 BOS 位置,dest 为目标保存地址。
1rclone copyto <remote_name>:<bucket_name>/<object_name> <local_file_path>
删除文件
删除指定 object:
1rclone delete <remote_name>:<bucket_name>/<object_name>
注意: 删除 object 后无法通过 rclone 命令直接恢复,请确认目标文件不再需要后再执行。
文件夹同步至 bucket
操作入口:命令行终端。
文件夹同步命令为 rclone sync src dest,src 表示同步的源,dest 为目标云存储位置。
1rclone sync <local_directory> <remote_name>:<bucket_name>/<prefix>
注意: rclone sync 会让目标位置与源目录保持一致,目标位置中源目录不存在的文件可能会被删除,请确认同步方向和目标路径后再执行。
可按需使用以下 flag 调整同步规则:
--size-only:仅当源文件与目标文件大小不同时更改目标文件,无额外事务。--checksum:仅当源文件与目标文件的大小或 MD5 校验和不同时更改,无额外事务。--update --use-server-modtime:不使用额外事务,修改时间变为对象上传时间,适用于许多操作,但可能错过时间戳在过去创建的文件。
清理未完成的分部上传文件
操作入口:命令行终端。
-
清理 24 小时前的未完成的分部上传文件:
Bash1rclone cleanup <remote_name>:<bucket_name> -
清理指定时间前未完成的分部上传文件,时间可调:
Bash1rclone backend cleanup <remote_name>:<bucket_name> -o max-age=<duration>
注意: 清理未完成的分部上传文件会删除指定 bucket 中满足时间条件的未完成分部上传任务,请确认业务侧不再依赖这些上传任务后再执行。
多线程 flag
以下 flag 用于具体命令调整。如需永久设置,可在 rclone config 中进入 advanced config,选择 yes 后进行永久设置。
-
--multi-thread-write-buffer-size=SIZE设置 buffer size 为
SIZE,默认 128 KiB。受磁盘读写限制可调整,推荐使用 16 KiB 的倍数。 -
--multi-thread-chunk-size=SizeSuffix用于多线程传输的分块大小通常由后端设置。对于本地和 SMB 等后端(实现了 OpenWriterAt 但未实现 OpenChunkWriter),没有自然分块大小,此时使用该选项设置的值,默认 64 MiB。
-
--multi-thread-cutoff=SIZErclone 在传输大于指定
SIZE的文件时会使用多线程,默认 5 GiB。该选项只适用于作为目标的受支持后端,但将适用于作为源的任何后端。 -
--multi-thread-streams=N该指令设定多线程传输时使用的流数。设为
0则禁用多线程传输。rclone 默认值为4,BOS 推荐设置为10。
更多用法
详见 https://rclone.org/commands/。
常见问题
region步骤如选择非 V4 签名,可能会出现中文名称文件无法在云端找到的报错。region一旦选择非 V4,重新使用rclone config修改可能无法将修改保存进 config 文件。此时需使用rclone config file查询具体 config 文件位置,并直接修改 config 文件。- 如果遇到只能下载无法上传的情况,可能原因为使用的 Access Key 和 Secret Key 权限为只读,建议检查 Access Key 和 Secret Key 是否具有写入权限。
评价此篇文章
