# 数据卷管理与数据迁移

> 返回 [← README](../README.md)

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

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

---

## 整卷备份 / 恢复（最可靠）

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

> 备份大小 ≈ 卷大小（微信数据常为数百 MB ~ 数 GB），请按网络情况耐心等待。

---

## 把 PC 微信数据迁移上来

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

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

---

## 安全与注意

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