Cloudflare R2 与 rclone 使用教程

Posted on Wed 03 July 2024 in 技术

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
  1. 选择 n 创建新的远程配置

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

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

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

  5. 输入 Access Key ID

  6. 输入 Secret Access Key

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

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

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

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

3.2 高级配置

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

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

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

  3. 默认值为 200MiB,适用于大多数情况
  4. 如果主要上传小文件,可以提高到 500MiB
  5. 如果有大文件或网络不稳定,可以降低到 50-100MiB

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

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

  8. 其他参数可以保持默认值

完成配置后,选择 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 的网站管理员和开发者。