Cloudflare R2 是一款对象存储服务,提供免费额度:10GB 存储、每月 100 万次 A 类操作、1000 万次 B 类操作,并且出口流量免费。
它适合个人博客图床、海外访问站点、服务器备份和低频文件存储。需要注意的是,Cloudflare 在中国大陆没有普通用户可用的 CDN 节点,因此 R2 不太适合对国内访问速度要求很高的正式图床。
如果你只是想做个人图床、文件备份或海外项目存储,R2 是一个成本很低的方案。
Cloudflare R2 适合哪些场景?
R2 更适合以下场景:
- 个人博客图片存储;
- 面向海外用户的静态资源;
- 服务器数据备份;
- 数据库备份;
- 对访问速度要求不高的文件存储;
- 想避免出口流量费的轻量图床。
不太适合以下场景:
- 面向国内用户的高频图床;
- 对图片加载速度要求很高的网站;
- 需要国内 CDN 加速的业务;
- 必须满足国内备案合规要求的项目。
Cloudflare R2 免费额度
R2 的免费额度如下:
| 项目 | 免费额度 | 说明 |
|---|---|---|
| 存储空间 | 10GB / 月 | 适合个人图床和备份 |
| Class A 操作 | 100 万次 / 月 | 上传、写入、列目录等操作 |
| Class B 操作 | 1000 万次 / 月 | 读取、下载、图片访问等操作 |
| 出口流量 | 免费 | 用户访问文件产生的下行流量免费 |
| 删除操作 | 免费 | Delete 操作不占额度 |
R2 的核心优势不是存储空间本身,而是出口流量免费。传统对象存储通常存储便宜、流量贵,而 R2 正好解决了访问量增加后流量费上涨的问题。
使用前提
如果你只是创建存储桶、上传文件或做私有备份,不一定需要域名。
但如果你要用 R2 做正式图床,建议准备一个已经托管在 Cloudflare 的域名。绑定自定义域名后,图片链接会更稳定,也更适合长期使用。
第一步:创建 R2 存储桶
登录 Cloudflare 控制台,进入:
存储和数据库 → R2 对象存储 → 概述点击“创建存储桶”。
填写桶名称,例如:my-blog-images 或:my-backup
位置建议选择“自动”。
R2 的“位置”主要决定数据存储在哪个大区,不决定国内用户访问时走哪个节点。因此,选择“亚太”并不能明显改善国内访问速度。
第二步:创建 R2 API Token
如果要用 PicGo、rclone 或其他 S3 兼容工具访问 R2,需要创建 API Token。
进入:
R2 管理页面 → 账户详情 → 管理 R2 API 令牌选择“创建 User API 令牌”。
建议配置:
| 配置项 | 建议 |
|---|---|
| 令牌名称 | 自定义,例如 picgo-images |
| 权限 | 对象读取和写入 |
| 应用范围 | 仅指定存储桶 |
| TTL | 长期使用可设置为永久 |
创建完成后,会生成:
- Access Key ID;
- Secret Access Key;
- Endpoint;
- 区域信息。
注意:Secret Access Key 只显示一次,关闭页面后无法再次查看,需要立即保存。
第三步:开启公共访问
R2 存储桶默认是私有的。如果要做图床,需要开启公共访问。
有两种方式。
方式一:使用 r2.dev 开发域名
在桶设置中开启“公共开发 URL”,即可获得类似下面的地址:
https://xxx.r2.dev/image.png这种方式适合测试,不适合正式使用。原因是 r2.dev 是开发用途,可能被限速,也不保证生产环境稳定性。
方式二:绑定自定义域名,推荐正式使用
如果域名已经托管在 Cloudflare,可以直接绑定子域名。
路径:
存储桶 → 设置 → 自定义域 → 添加输入子域名,例如:
img.example.comCloudflare 会自动配置 CNAME。状态变为“有效”后,图片链接即可使用:
https://img.example.com/image.png自定义域名适合正式图床,优点是链接稳定、支持 HTTPS,并可结合 Cloudflare 缓存提升访问效果。
用 PicGo 配置 R2 图床
PicGo 是常用的图片上传工具,可以通过 S3 插件连接 R2。
基本步骤:
- 安装 PicGo;
- 安装 S3 / R2 相关插件;
- 填入 R2 API Token;
- 配置 Endpoint、Bucket 和自定义域名;
- 上传图片并获取图片链接。
配置完成后,上传图片即可得到类似下面的地址:
https://img.example.com/image.png这套方式适合博客、Markdown 写作、公众号配图和个人项目截图。
用 rclone 配置 R2 备份
如果要做服务器备份,推荐使用 rclone。
R2 的 rclone 配置示例:
[r2]
type = s3
provider = Cloudflare
access_key_id = <你的 Access Key ID>
secret_access_key = <你的 Secret Access Key>
endpoint = https://<账户ID>.r2.cloudflarestorage.com
acl = private
region = auto如果你创建的是对象级权限 Token,建议加上:
no_check_bucket = true完整配置示例:
[r2]
type = s3
provider = Cloudflare
access_key_id = <你的 Access Key ID>
secret_access_key = <你的 Secret Access Key>
endpoint = https://<账户ID>.r2.cloudflarestorage.com
acl = private
region = auto
no_check_bucket = true常用命令:
# 上传备份
rclone copy /path/to/backup r2:my-backup/
# 查看备份
rclone tree r2:my-backup
# 恢复备份
rclone copy r2:my-backup/ /path/to/restore/如果想每天自动备份,可以配置 cron:
0 3 * * * rclone copy /root/backup r2:my-backup/ 2>> /var/log/rclone-backup.log这样可以让服务器每天自动把数据备份到 R2。
常见问题
1. Cloudflare R2 真的免费吗?
是的,R2 提供免费额度,包括 10GB 存储、100 万次 A 类操作、1000 万次 B 类操作,出口流量免费。超出免费额度后按量计费,个人使用通常很难用超。
2. Cloudflare R2 适合做国内图床吗?
不完全适合。R2 的优势是免费出口流量,但 Cloudflare 在中国大陆没有普通用户可用的 CDN 节点,国内访问速度可能不稳定。如果你的用户主要在国内,并且对图片加载速度要求很高,建议谨慎。
3. R2 的 r2.dev 域名可以长期使用吗?
不建议。r2.dev 是开发测试域名,可能被限速,也不适合生产环境。正式图床建议绑定自定义域名。
4. rclone 访问 R2 报 403 怎么办?
如果 Token 只有对象读写权限,没有列出所有桶的权限,不要直接执行:
rclone lsd r2:应指定桶名:
rclone lsd r2:my-backup/同时确认配置中已添加:
no_check_bucket = true5. R2 和 AWS S3 有什么区别?
AWS S3 生态更成熟,功能更完整,适合企业和复杂业务。Cloudflare R2 的优势是免费出口流量和较低的个人使用门槛。如果只是个人图床或备份,R2 更轻量。
总结
Cloudflare R2 的核心价值是:
- 10GB 免费存储;
- 出口流量免费;
- 每月 100 万次 A 类操作;
- 每月 1000 万次 B 类操作;
- 可绑定自定义域名;
- 适合 PicGo 图床和 rclone 备份。
如果你的需求是个人图床、海外站点资源或服务器备份,R2 是很好的免费选择。如果你的主要用户在中国大陆,并且非常在意图片加载速度,则需要谨慎评估。
文章评论