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 凭证
- 登录 Cloudflare 控制台:https://dash.cloudflare.com/
- 选择「R2」服务
- 点击「管理 R2 API 令牌」或「创建 API 令牌」
- 创建新的 API 令牌,确保具有读写权限
- 记录生成的
Access Key ID和Secret Access Key - 记录您的 Cloudflare 账户 ID(在 Cloudflare 控制台右侧边栏可以找到)
3. 配置 rclone
3.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:控制切换为分块上传的文件大小阈值 - 默认值为 200MiB,适用于大多数情况
- 如果主要上传小文件,可以提高到 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 设置公共访问权限
- 在 Cloudflare 控制台中,进入 R2 服务页面
- 选择您的存储桶
- 点击「设置」选项卡
- 在「公共访问」部分,选择「公开可读」
5.2 配置自定义域名
- 在 Cloudflare 控制台中,进入 R2 服务页面
- 选择您的存储桶
- 点击「设置」选项卡
- 在「公共访问」部分,点击「添加自定义域」
- 输入您想要使用的域名,例如
images.example.com - 按照提示完成 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 配置:
- 运行
rclone config - 选择
e编辑现有远程配置 - 选择要修改的配置名称
- 按照提示修改相应参数
- 完成后保存配置
7. 故障排除
7.1 常见错误
连接错误: - 检查账户 ID 是否正确 - 确认 API 密钥是否有效 - 验证网络连接是否正常
权限错误: - 确认 API 令牌具有适当的权限 - 检查存储桶访问策略
上传失败:
- 尝试减小 chunk_size 和 upload_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 的网站管理员和开发者。