Files
WechatOnCloud/doc/数据卷管理.md
T
Gloridust 1c34777353 feat(panel): 管理员数据卷管理(整卷备份/恢复 + 文件浏览器)
管理页 → 实例「管理」→ 数据卷(仅 admin)。解决大量用户"把 PC 微信数据迁移上 docker"的诉求。

- 整卷备份:流式打包 /config 为 .tar.gz 下载(大文件不入内存);恢复:上传覆盖回 /config。
  machine-id 存在卷内随包迁移 → 跨 woc 实例恢复可保留聊天记录。
- 文件浏览器:浏览/上传/上传并解压(.tar/.tar.gz)/下载/改名/移动/删除;PC 数据打包上传解压后重启实例。
- 全程在运行中的实例上操作(exec + docker cp,运行容器才可 exec);恢复为全量覆盖,强提示并建议重启。
- 安全:仅 admin;路径严格限制在 /config、禁止 .. 穿越;上传落地为 abc 属主。
- docker.ts 抽出 extractSingleFileFromTar 复用(PAX 头跳过),新增 list/mkdir/move/delete/upload/
  extract/download/backup(stream)/restore;index.ts 加 9 个 /volume 管理路由;前端 VolumeManager 弹窗
  + 线性 SVG 图标(替代渲染不一致的 emoji);新增 doc/数据卷管理.md。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 22:01:41 +08:00

2.4 KiB
Raw Blame History

数据卷管理与数据迁移

返回 ← README

管理员专用。 每个实例的「数据卷」= 容器内 /config 持久卷,含微信全部数据(登录态、加密聊天库、配置等)。 入口:管理页 → 实例卡片「管理」→ 数据卷。子账号不可见(数据卷等同完整微信会话凭据)。

提供两块能力:整卷备份 / 恢复文件浏览器(浏览 / 上传 / 上传并解压 / 下载 / 改名 / 移动 / 删除)。


整卷备份 / 恢复(最可靠)

  • 下载整卷备份:把 /config 流式打包成 .tar.gz 下载(大文件不进内存,边打包边下)。用于离线备份、换宿主、跨实例迁移。
  • 恢复备份:上传 .tar.gz 覆盖写回 /config;恢复后在卡片上「重启」实例以加载数据。
  • 为什么能保留聊天记录:唯一设备标识存在卷内的 .woc-machine-id,会随备份一起迁移 → 目标实例解密环境一致,聊天记录可还原。这也是 woc 实例之间迁移的推荐方式。详见 设备伪装

备份大小 ≈ 卷大小(微信数据常为数百 MB ~ 数 GB),请按网络情况耐心等待。


把 PC 微信数据迁移上来

  1. 在 PC 上把微信数据文件夹打包成 .tar.gz
  2. 数据卷 → 进入目标目录 → 「上传并解压」(也支持 .tar);
  3. 在卡片上「重启」实例。

⚠️ 能否解密取决于微信版本与设备绑定:微信本地库通常按设备/账号加密,跨设备直接复制数据库不保证能在新实例打开,请自行测试。最可靠的是「本系统导出的整卷备份」在 woc 实例间恢复。


安全与注意

  • 仅管理员可用;子账号永不可见(数据卷 = 完整微信会话凭据)。管理员本就持有 docker.sock(宿主 root),不新增风险。
  • 所有路径严格限制在 /config 内,禁止 .. 穿越。
  • 全程在「运行中」的实例上操作(底层用 docker exec 浏览/改名/删除、用 docker cp 传输)。改动微信正在使用的数据后,需重启实例方可生效;大改动前建议先「下载整卷备份」留底。
  • 实例未运行时:只能做整卷备份 / 恢复;文件浏览需实例运行中。
  • 上传的文件落地为容器内 abc 属主(微信进程可读)。