
从 Cloudflare R2 迁移文件到 Cloudreve 本地存储

本文记录了我如何将之前存储在 Cloudflare R2 上的模拟人生 4 模组文件,迁移回自己服务器本地,并接入 Cloudreve 实现统一管理和展示的全过程。
背景简介
我原先将所有大体量图片与模组文件上传到 Cloudflare 的 R2 对象存储,配合 Cloudflare Worker 分发。然而,随着使用量增加与成本控制考虑,以及想实现更多定制化需求(比如 NSFW 控制、文件统计、资源多用途管理),我决定将文件统一迁移回本地存储,并通过 Cloudreve 搭建轻量化私有云盘进行统一管理。
服务器配置如下:
- CPU:4 核
- 内存:4GB DDR4
- 磁盘:系统盘 40G + 数据盘 60G
- 带宽:300Mbps
- 操作系统:CentOS 7 / Ubuntu 均适用
工具准备
- rclone:用于远程访问 R2 并下载
- Cloudreve:本地私有云盘管理平台
- 宝塔面板:用于部署 LNMP 环境和 PHP 支持
- 浏览器 + VSCode:用于手动校验下载资源和链接替换
一、配置 rclone 并连接 Cloudflare R2
1. 安装 rclone:
1 | curl https://rclone.org/install.sh | bash |
2. 配置 remote
1 | rclone config |
输入流程如下:
1 | n) New remote |
⚠️注意事项:
- endpoint 必须填管辖区域的 R2 地址(不是 AWS 默认)
- 记得在 Cloudflare Dashboard 中为 API 创建 R2 Token,赋予 list、read 权限
3. 测试连接
1 | rclone ls r2mod:kkdrive |
二、将文件同步至本地目录
首先创建 Cloudreve 存储目录:
1 | mkdir -p /www/wwwroot/cloudreve/uploads/r2_import |
然后执行迁移命令:
1 | rclone copy r2mod:kkdrive /www/wwwroot/cloudreve/uploads/r2_import --progress |
如果你有多个子目录,请使用
sync
而非copy
并加上--create-empty-src-dirs
参数
⚠️注意:确保服务器磁盘空间充足(我这里提前做了 df -h
检查)
三、配置 Cloudreve 识别本地存储
在 Cloudreve 后台新建存储策略:
- 名称:R2导入
- 类型:本地存储
- 路径:
/www/wwwroot/cloudreve/uploads/r2_import/{uid}/{path}
- Blob 文件命名:
{uuid}_{originname}
- 允许的扩展名:留空表示不限制,也可以填写
zip,rar,7z,package,ts4script,png,jpg,mp4
- 分片上传大小:推荐 10-25MB
- 开启预分配硬盘空间(节省碎片)
如果非会员版 Cloudreve,建议用管理员账户绑定此策略(普通用户限制多)
四、校验与维护
- 通过 Cloudreve 前台手动校验文件是否可访问
- 开启防盗链、访问日志等功能
- 清理旧的 R2 存储或 CDN 配置
- 更新 Hexo / WordPress 等博客中的引用链接
五、迁移 Hexo 中旧链接到新地址
在 VSCode 中全局搜索:
1 | https://bu\.dusays\.com/[^"')\s]+(?=["')\s]) |
执行替换:
1 | https://kkdrive.jisuk.top/$1 |
若路径结构改变,可使用正则批量替换,或者写 Python 脚本匹配 hash 名
六、后续建议
- 定期使用 rclone sync 更新 Cloudreve 文件
- 增加 Cloudreve 的 Redis 缓存加速
- 搭配 CDN(如又拍云)加速 Cloudreve 外部访问
- 整合上传按钮至 Hexo 或 Flarum 管理界面
如你一样追求自主控制内容、尊重创作者权益,Cloudreve + rclone + Flarum/Hexo 构建的本地云与社区一体化平台,是目前非常高效且轻量的解决方案。
- Title: 从 Cloudflare R2 迁移文件到 Cloudreve 本地存储
- Author: Jackson
- Created at : 2025-07-12 04:05:34
- Updated at : 2025-07-12 16:54:20
- Link: https://839738.xyz/posts/202507121.html
- License: This work is licensed under CC BY-NC-SA 4.0.