# 教程更新日期 2024-12-17
最后更新: 去掉 GitHub 的 config.yml 文件,改为通过 API 在 Worker 里获取账户信息。好处是账户信息只需在一处设置即可。
# 视频教程
https://youtu.be/4X1FjLCAckI
# 前言
前面的贴子 《全网首发!融合 R2、GitHub、GitLab 与 Cloudflare 的存储集群,实现自动备份、极速访问、无限扩展!远比图床方案实用》https://www.fscarmen.com/2024/11/oss.html
这次在原有 R2、GitHub 和 GitLab 的基础上,我的分布式文件存储集群迎来了新成员——Backblaze B2。通过将 B2 集成到集群中,存储系统的性能和灵活性得到进一步提升,尤其在大文件存储和数据冗余方面具备了更强的优势。
# 部署条件
- **Backblaze B2 账号**,https://www.backblaze.com
- **R2 账号**,https://r2.mypikpak.com
- **GitHub 账号**,https://github.com
- **GitLab 账号**,https://gitlab.com
- **Cloudflare 账号**,https://www.cloudflare.com
- **安装 PicGo**,https://molunerfinn.com/PicGo
# 流程及 PicGO 使用
## Backblaze 注册
打开官方注册账户: https://www.backblaze.com/get-started
![](https://pic.forvps.gq/20241202212220469.webp)
![](https://pic.forvps.gq/20241202212713267.webp)
![](https://pic.forvps.gq/20241202230114384.webp)
![](https://pic.forvps.gq/20241202230129854.webp)
![](https://pic.forvps.gq/20241202212950370.webp)
![](https://pic.forvps.gq/20241202213126025.webp)
![](https://pic.forvps.gq/20241202213632504.webp)
![](https://pic.forvps.gq/20241202213240081.webp)
![](https://pic.forvps.gq/20241202213423670.webp)
![](https://pic.forvps.gq/20241202213536844.webp)
## PicGo S3 插件设置
文件路径 <自定义上传目录>/{fullName}
自定义输出URL模板 https://<自定义域名>/{fileName}
![](https://pic.forvps.gq/20241202214046747.webp)
![](https://pic.forvps.gq/20241214114229907.webp)
## Worker 重写 URL
- 把项目仓库的 [cloudflare_worker/github_gitlab_s3.js](https://github.com/fscarmen2/pic-hosting-cluster/blob/main/cloudflare_worker/github_gitlab_s3.js) 复制到 worker 处,接在开头处根据前面记录的 B2, R2,GitHub 和 GitLab 账户信息填写。
![](https://pic.forvps.gq/20241202214647672.webp)
- 2024-12-17 更新需要设置两个同步策略的变量
![](https://pic.forvps.gq/20241217122004212.webp)
| 同步变量 | 可选值 | 说明 |
| --------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| strategy | [size (默认) \| quantity \| 指定节点] | size: 选择容量最少的仓库来存储文件; quantity: 选择文件最少的仓库来存储文件; 指定节点: 比如 pic1 或者 pic2 |
| delete | [true (默认) \| false] | 已复制到 GitHub 的文件,是否从 R2 删除 |
## (2024-12-17更新需要处理的)在 Cloudflare 里建一个 API 用于读取 Worker 里的账户信息
https://dash.cloudflare.com/profile/api-tokens
![image](https://github.com/user-attachments/assets/a80e3083-3eac-42db-acfc-c8f08177870d)
![image](https://github.com/user-attachments/assets/9e49b29a-54ae-46f0-aeda-28d95f4a9041)
![image](https://github.com/user-attachments/assets/11dceb4b-ab2e-41a8-b8e4-7317bcf4b50f)
![image](https://github.com/user-attachments/assets/b1e6f1c3-3d8d-4ba3-8d98-35ab4f061b14)
![image](https://github.com/user-attachments/assets/81e66642-cd5c-43d3-bb72-7fecf24e16a3)
![image](https://github.com/user-attachments/assets/3c832e81-bfc6-480d-939c-1d0731a07c17)
## GitHub Action 定时同步任务
- 2024-12-17更新,使用项目模板创建同步库,替代原方案所有文件都要手动处理路径和内容,简化部署。
[点击使用模板创建同步库。S3 ---> GitHub, GitHub ---> GitLab 都在此](https://github.com/new?template_name=files-hosting-template-3&template_owner=fscarmen2)
![](https://pic.forvps.gq/20241217143559272.webp)
![](https://pic.forvps.gq/20241217143527204.webp)
- 设置 GitHub Actions secrets 变量
根据前面获取的 ACCOUNT_ID, WORKER_NAME, API_TOKEN 设置
![](https://pic.forvps.gq/20241217121357845.webp)
![](https://pic.forvps.gq/20241120235830.webp)
![](https://pic.forvps.gq/20241120235935.webp)
![](https://pic.forvps.gq/20241120233314.webp)
![](https://pic.forvps.gq/20241202221047458.webp)
# 总结
Backblaze B2是一个可靠且成本效益高的云存储解决方案,以其强大的安全性和易用性著称。我们将把Backblaze B2集成到现有的存储集群中,作为额外的存储节点,进一步分散数据,增强整体系统的可靠性。