1. 简介

Cloudflare R2 是 Cloudflare 提供的对象存储服务,类似于 AWS S3,但无出站流量费用,非常适合存储和分发图片、视频等静态资源。rclone 是一个命令行工具,可以用来管理云存储,包括 Cloudflare R2。本教程将指导您如何使用 rclone 配置和管理 Cloudflare R2 存储。

2. 准备工作

2.1 安装 rclone

macOS (使用 Homebrew):

brew install rclone

Linux:

curl https://rclone.org/install.sh | sudo bash

Windows:

  • 下载安装程序:https://rclone.org/downloads/
  • 运行安装程序并按照提示操作

2.2 获取 Cloudflare R2 凭证

  1. 登录 Cloudflare 控制台:https://dash.cloudflare.com/
  2. 选择「R2」服务
  3. 点击「管理 R2 API 令牌」或「创建 API 令牌」
  4. 创建新的 API 令牌,确保具有读写权限
  5. 记录生成的 Access Key IDSecret Access Key
  6. 记录您的 Cloudflare 账户 ID(在 Cloudflare 控制台右侧边栏可以找到)

3. 配置 rclone

3.1 基本配置

  1. 打开终端或命令提示符,运行:
rclone config

选择 n 创建新的远程配置

输入远程配置名称,例如 cloudflare

选择存储类型,输入 s3 对应的编号

选择 S3 提供商,输入 Cloudflare R2 对应的编号

输入 Access Key ID

输入 Secret Access Key

输入区域,可以直接按 Enter 使用默认值 auto

输入端点 URL,格式为:https://<ACCOUNT_ID>.r2.cloudflarestorage.com

<ACCOUNT_ID> 替换为您的 Cloudflare 账户 ID

当询问是否要编辑高级配置时,选择 y(是)

3.2 高级配置

在高级配置中,重点关注以下参数:

force_path_style:设置为 true(这对 Cloudflare R2 很重要)

upload_cutoff:控制切换为分块上传的文件大小阈值

  1. 默认值为 200MiB,适用于大多数情况
  2. 如果主要上传小文件,可以提高到 500MiB

如果有大文件或网络不稳定,可以降低到 50-100MiB

chunk_size:分块上传时的块大小,默认为 5MiB

max_upload_parts:分块上传的最大块数,默认为 10000

其他参数可以保持默认值

完成配置后,选择 y 保存配置。

4. 使用 rclone 管理 R2 存储

4.1 创建存储桶

在 Cloudflare 控制台中创建存储桶:

  1. 进入 R2 服务页面
  2. 点击「创建存储桶」
  3. 输入存储桶名称,例如 images
  4. 点击「创建」

4.2 基本操作命令

列出存储桶:

rclone lsd cloudflare:

列出存储桶中的文件:

rclone ls cloudflare:存储桶名

上传单个文件:

rclone copy 本地文件路径 cloudflare:存储桶名/目标路径

上传整个目录:

rclone copy 本地目录路径 cloudflare:存储桶名/目标路径

同步目录(将删除目标中不存在于源的文件):

rclone sync 本地目录路径 cloudflare:存储桶名/目标路径

下载文件:

rclone copy cloudflare:存储桶名/文件路径 本地目录路径

删除文件:

rclone delete cloudflare:存储桶名/文件路径

删除目录:

rclone purge cloudflare:存储桶名/目录路径

4.3 高级操作

使用 --dry-run 预览操作:

rclone sync 本地目录路径 cloudflare:存储桶名/目标路径 --dry-run

设置并行传输数:

rclone copy 本地目录路径 cloudflare:存储桶名/目标路径 --transfers=4

显示传输进度:

rclone copy 本地目录路径 cloudflare:存储桶名/目标路径 -P

设置带宽限制:

rclone copy 本地目录路径 cloudflare:存储桶名/目标路径 --bwlimit=10M

5. 配置 R2 公共访问与 CDN

5.1 设置公共访问权限

  1. 在 Cloudflare 控制台中,进入 R2 服务页面
  2. 选择您的存储桶
  3. 点击「设置」选项卡
  4. 在「公共访问」部分,选择「公开可读」

5.2 配置自定义域名

  1. 在 Cloudflare 控制台中,进入 R2 服务页面
  2. 选择您的存储桶
  3. 点击「设置」选项卡
  4. 在「公共访问」部分,点击「添加自定义域」
  5. 输入您想要使用的域名,例如 images.example.com
  6. 按照提示完成 DNS 配置

5.3 在网站中使用 R2 资源

配置完成后,您可以通过以下方式在网站中引用 R2 中的资源:

// 使用 R2 默认域名
const imagePath = `https://<ACCOUNT_ID>.r2.cloudflarestorage.com/存储桶名/文件路径`;

// 使用自定义域名
const imagePath = `https://images.example.com/文件路径`;

6. 维护与最佳实践

6.1 定期同步

设置定期同步任务,确保本地和 R2 存储保持一致:

创建定时任务 (cron job):

# 编辑 crontab
crontab -e

# 添加定时任务,每天凌晨 2 点执行同步
0 2 * * * rclone sync /本地路径 cloudflare:存储桶名/目标路径 --log-file=/path/to/logfile.log

6.2 监控与日志

使用 --log-file 参数记录操作日志:

rclone sync /本地路径 cloudflare:存储桶名/目标路径 --log-file=/path/to/logfile.log

6.3 修改现有配置

如果需要修改已有的 rclone 配置:

  1. 运行 rclone config
  2. 选择 e 编辑现有远程配置
  3. 选择要修改的配置名称
  4. 按照提示修改相应参数
  5. 完成后保存配置

7. 故障排除

7.1 常见错误

连接错误:

  • 检查账户 ID 是否正确
  • 确认 API 密钥是否有效
  • 验证网络连接是否正常

权限错误:

  • 确认 API 令牌具有适当的权限
  • 检查存储桶访问策略

上传失败:

  • 尝试减小 chunk_sizeupload_cutoff
  • 使用 -v 参数查看详细日志

7.2 调试命令

# 检查配置
rclone config show cloudflare

# 详细日志
rclone copy 本地文件路径 cloudflare:存储桶名/目标路径 -v

# 非常详细的日志
rclone copy 本地文件路径 cloudflare:存储桶名/目标路径 -vv

8. 结语

通过本教程,您已经学会了如何使用 rclone 配置和管理 Cloudflare R2 存储。R2 结合 Cloudflare 的 CDN 网络,可以为您的网站提供高性能、低成本的静态资源存储和分发解决方案,特别适合图片、视频等大文件的存储和全球分发。


本文档基于实际配置经验编写,适用于需要将静态资源从本地服务器迁移到 Cloudflare R2 的网站管理员和开发者。