跳转至

Project 三渠道备份策略

版本:v1.0

日期:2026-08-30

状态:策略已确认,尚未实施

1. 权威源与目标

101 /root/project 是唯一源目录和代码权威。三条渠道均为单向接收,不得反向覆盖 101。

渠道 目标 保留策略 频率
101 /srv/codex-hub-backup 本机灾难恢复与回滚 3 份每日、2 份每周、3 份每月;重大变更前快照保留 7 天 每日 + 变更前触发
Cloudreve Project WebDAV 跨设备取得当前项目状态 只保留当前镜像,不额外维护历史版本 每 5 分钟轮询变化
DD /root/project 异地主机恢复 1 份当前完整副本 + 2 份历史副本 每日一次,重大变更后可自动触发

2. 实现选型

方案 可维护性 部署复杂度 性能 学习成本 决策
WebDAV 直接挂载作为工作区 低;缓存、锁和 Unix 语义不稳定 受缓存和网络影响 禁止用于活动工作区
rclone 单向同步/复制 高;支持过滤、清单、重试和 dry-run 适合周期性扫描 Cloudreve 候选,先完成行为烟测
rsync/SSH 直接复制到 DD 中;目录语义好但数据面受 SSH 路由约束 不经 Tailnet 传输前不得启用
自研实时同步守护进程 低;需自行处理冲突、锁、删除和恢复 未知 不采用

Cloudreve 使用单向轮询镜像,不宣称事件级实时。DD 使用保留目录结构的单向副本。Tailnet 只用于控制,不作为文件传输通道。

3. 删除与异常处理

  • 101 源目录允许正常新增、修改和删除。
  • Cloudreve 对应删除使用其原生回收站;不另建第二套 Cloudreve 回收机制。
  • Cloudreve 覆盖是否进入原生回收站必须在实施前用临时对象实测;若不会保留旧对象,按“当前镜像不保留历史版本”处理。
  • DD 的目标异常少文件不得自动确认删除;通过清单校验后从 101 修复,明确源端删除后才传播删除。
  • 单个目标失败只暂停该目标并退避重试,不停止 101 工作区或其他目标。
  • 同一目标禁止并发运行多个同步任务。

4. 本机快照与空间保护

本机快照按以下层级保留:

  • 每日:最近 3 份;
  • 每周:最近 2 份;
  • 每月:最近 3 份;
  • 重大变更前:临时快照保留 7 天。

备份盘 /srv/codex-hub-backup 必须确认来源为 /dev/sda1。空间阈值:

  • 目标:至少保留 220G 可用空间;
  • 警告:可用空间低于 250G;
  • 暂停新快照或新同步写入:低于 220G;
  • 紧急保护:低于 200G,仅允许恢复和清理过期回收对象。

空间不足时不得静默改写 /backup 或系统盘。

5. 实施前验收门

  1. 使用 101 Project 凭据完成 Cloudreve 临时目录读取、上传、下载、SHA-256 回读和删除烟测。
  2. 实测 Cloudreve 覆盖行为与原生回收站行为。
  3. AgentMeshOS 执行 Cloudreve 5 分钟轮询 dry-run,只生成差异清单,不执行删除。
  4. 验证 DD 的 /root/project 目录结构、权限边界和非 Tailnet 数据传输路径。
  5. 验证清单、哈希、失败退避、单目标锁和空间阈值。
  6. 完成一次恢复演练后,才允许扩大到全部 Project。

Cloudreve 写入故障记录(2026-08-30)

首次 PUT/DELETE 烟测返回 500,但根目录 PROPFIND 和文件 GET 正常。现场核对 DD Cloudreve 容器后确认:默认存储策略原指向容器数据库卷 /cloudreve/data/uploads/{uid}/{path},实际业务上传目录挂载在 /cloudreve/uploads,因此所有写入操作均失败。已先备份 cloudreve.db,再将策略修正为 /cloudreve/uploads/{uid}/{path} 并重启 Cloudreve。修复后临时文件 PUT 返回 201、GET 返回 200 且内容一致、DELETE 返回 204;AgentMeshOS dry-run 通过。后续验收固定分离检查 PROPFIND、PUT、GET/哈希回读和 DELETE 四项,不再以单一 HTTP 可达性判断写入健康。

当前结论:Cloudreve 写入链路已通过最小烟测;同步服务、Cloudreve 写入和 DD 副本仍未启用。