## 目标与职责(Docker / 部署) 在已有 V2 自动本地布局上,验证单一父目录挂载、新装与原有 Seafile CE 升级的部署、预检、恢复合同;不为每个库独立设置 Compose 卷或运行一套分配服务。 ## 既有成果 - `deploy/compose/docker-compose.auto-library-storage.yml` 已为主服务/worker 绑定 `CF_LIBRARY_STORAGE_HOST_DIR` 到一个父目录。 - `scripts/scripts_cf14.0/library_storage.py` 与 Hub `storage-reconcile` 已支持原生事实预检和显式配置切换。 - `tests/test_v06_default_library_storage.py`、`tests/test_library_storage_config.py` 已覆盖部分配置合同。 ## 规划改进 1. 新装默认本地、单父目录、多库自动隔离;拒绝静默创建不存在的宿主挂载或把旧存储改绑到空目录。 2. 现有 CE 安装默认原地升级:检测当前布局与 RepoStorageId,dry-run/备份/明确升级/回滚指引;**不默认迁移原生库存量对象、UUID 或物理路径**。 3. 对显式 `repo_key` 场景验证 C/Go/Python/GC/fsck 路由一致,离线导出/备份/恢复与跨设备本地暂存正确;不手改原生对象目录数据。 4. 默认部署无 S3 依赖;既有外部/S3 后端的配置和已分配库绝不被 local 默认覆盖。 ## 验收 - 一处父目录挂载、多库/旧库并存、失效挂载安全拒绝、备份恢复文件/版本 SHA、明确停写和回滚; - 固定 Server/Hub/Docker SHA、镜像与部署配置版本,区分 unit/CI/实际容器证据; - 文档/Issue 不允许直接触发生产运行数据迁移或全量构建。 参考:[Compose overlay](https://github.com/eaopen/cloudfile-docker/blob/dev/deploy/compose/docker-compose.auto-library-storage.yml) · [storage bootstrap](https://github.com/eaopen/cloudfile-docker/blob/dev/scripts/scripts_cf14.0/library_storage.py)。 ## 跨仓协作(仅公开通用工程 Issue) - Server 核心路由 / repo_key:[issues #33](https://github.com/eaopen/cloudfile-server/issues/33) - Hub 受信建库与迁移预检:[issues #68](https://github.com/eaopen/cloudfile-hub/issues/68) 各仓维护自己的实现/验收,任何交叉协调不新增私有项目依赖。
Activity
servicememeai commentedon Oct 24, 2026
已提交备份缺陷修复 PR #36:离线 snapshot/restore 包含 data/libraries,拒绝外部非默认根、缺失的 V2 管理根,增加合成回归用例。静态 CI 通过;真实 Docker 停写/恢复与新老库字节校验仍待完成。
servicememeai commentedon Oct 24, 2026
本轮审查补充:检查 Python seafobj 与当前 V2 local-only 模式的路由一致性。
patches/seafobj/automatic-local-storage.patch的AutoLocalStores仅从self.seafile_cfg.multi_backend_cfg中读取is_auto模板;但现行library_storage.py::_render_auto明确写enable_storage_classes=false和 nativefilesystem。尚不能证明 Seahub/seafobj 在这种模式下会按cf_library_storage自动选择新库目录。请增加真实 Python 对象读取或触达 Python seafobj 的调用路径验收(同时覆盖 C/Go 读写、fsck/GC/离线导出),不要仅用手工构造的 auto-template 单元测试宣布全栈路径兼容。如 Python 路径实际上不使用 seafobj,则记录真实调用证据并明确移除/限定无用补丁。servicememeai commentedon Oct 24, 2026
2026-10-24 离线单库运维切片已提交:Docker PR #40。不依赖 CloudFile Web/Hub/SQL,基于 Seafile CE14 既有
storage/{commits,fs,blocks}/<repo_id>识别原生库与<repo_key>/storage/...;明确只支持inspect --repo-id(只读定位)、export --repo-id --output-dir(显式调用原生seaf-fsck --export)、verify-export --repo-id(显式检查已导出文件,可选哈希)。不同物理位置出现相同 UUID 时拒绝猜测,无全库批量操作,无自动备份与复制。已核实原生
server/gc/seaf-fsck.c在--export时need_db=false,因此可借临时标准 Seafile 对象视图离线导出而无需自行解释 Commit/FS/Block。针对性 unittest 与 Quick Source Checks 已通过;完整原生 CE14 二进制 + 真实库验收待做。先前 Docker PR #36 已改为 Draft 并缩小为“原生 CE 整实例备份必须明确
--legacy-ce-only,发现 V2 管理目录拒绝”;不再将data/libraries默认复制到全实例快照。不将备份启动嵌入 Docker / Server 默认启动路径。servicememeai commentedon Oct 24, 2026
已提交 Docker Draft #42:沿用 V2 默认 UUID 外层目录、单父目录挂载;真新装/正常 V2 重启不再主动全库 reconcile,只有已有 Seafile CE 明确转换才执行原预检。真实 Docker Compose 配置及 Python 单元测试 Actions #40090924889 通过;不会自动迁移、备份或改动已有 V2 自定义 key 目录。后续联合 CE14 服务/GC/fsck/恢复验收前不合并。