Obsidian的配置与美化 V2(八)——迁移、验证与长期维护
一套配置只有在“出问题时知道怎么退回去”,才算真正完成。主题截图、插件列表和 Dashboard 代码都只是表面;Vault 里保存的是多年积累的内容,迁移不能依赖一次成功的运气。
V2 的最后一部分不是再增加一个组件,而是把备份、演练、验证和回滚变成方案本身。
迁移前先冻结风险
正式迁移前需要做到:
- 暂停 Obsidian Sync,避免另一台设备同时写入;
- 完整备份 Vault 和
.obsidian; - 为备份生成 SHA-256 和逐文件清单;
- 把压缩包解压到独立路径;
- 把解压副本注册为另一个 Vault,先在副本上执行全部流程。
不要直接在唯一的实时 Vault 中试验目录重命名和批量属性迁移。真正可用的备份必须被解压并验证,而不只是“压缩命令没有报错”。
V2 迁移处理什么
迁移程序负责:
- 把旧目录统一到新的内容类型根目录;
- 为 Blog、Wiki、Project、Task 和 Daily 补齐 V2 属性;
- 保留未知属性,不随意丢弃旧数据;
- 为可发布内容加入发布控件;
- 把旧系统辅助材料移到
99 System/Legacy; - 把仍在使用的敏感资料移到
70 Private; - 修复能够识别的旧 YAML 格式问题。
路径冲突会在移动前停止,而不是覆盖目标文件。后台属性修改和文件移动使用 Obsidian 支持的 API,避免直接拼接不完整的 frontmatter。
幂等是批量迁移的重要指标
同一个迁移命令连续执行两次,第二次应该得到:
0 个文件移动
0 条属性更新
0 个发布控件新增
如果第二次还在不断改文件,说明迁移无法区分“尚未处理”和“已经完成”,以后修复中断状态也会非常危险。
V2 在独立副本和真实 Vault 中都做了重复执行检查。确认第二次没有变化后,才重新开启 Sync。
自动校验应该检查什么
Vault 校验脚本覆盖以下内容:
- 所有必需根目录存在,旧目录不再残留;
- UUIDv7、类型、日期、布尔发布状态和整数修订号格式正确;
- Blog、Wiki、Project、Daily 都包含发布控件;
- Tasks 始终私有;Blog、Wiki、Project、Daily 默认私有但可主动发布;
- 七个模板、七个 Bases 和 Dashboard 存在;
- QuickAdd 的 Blog/Wiki/Project 文件夹选择被限制在正确根目录;
- 关键插件、主题和 CSS Snippet 版本正确并已启用;
- Homepage 指向正确文件,并启用空工作区恢复;
- Dashboard 导航使用 Bases,而不是错误的相对目录链接;
- CSS 不包含会破坏主题兼容性的
!important和:has()。
校验的价值不在于给出一个绿色勾,而在于把容易忘记的隐含约定写成可重复执行的检查。
自动检查不能替代真实界面
视觉和交互必须在 Obsidian 里实际测试:
- 浅色与深色方案下,中英文正文和 Properties 是否可读;
- Sidebar、Tabs、Bases、弹窗和 Homepage 是否一起换色;
- Dashboard 在宽、中、窄窗口下有没有横向滚动条;
- 第一列卡片边框是否被亚像素裁切;
- 文件树按钮能否用键盘聚焦,删除是否确认;
- Homepage 按钮是否打开正确 Base;
- 关闭最后标签页后能否恢复主页;
- 今日任务复选框是否真的修改源文件;
- 番茄钟离开页面后是否停止计时器;
prefers-reduced-motion是否真正关闭动画。
CSS 变量计算正确,不代表屏幕上就一定可见;命令已经注册,也不代表按钮链接到了正确命令。自动化与目视检查必须配合。
分层回滚
出现问题时不一定要恢复整个 Vault。
只回滚视觉
切换到 Minimal 或 Obsidian 默认主题,关闭 Bedic Workbench。笔记、Bases、Properties 和发布工作流无需改变。
回滚 Homepage
关闭 Homepage 自动打开,保留 Dashboard 作为普通笔记;或者恢复视觉套件之前的 .obsidian 快照。
回滚内容迁移
暂停 Sync,关闭实时 Vault,把当前目录完整保留为证据;验证迁移前备份的校验值后,解压到新路径并逐项检查。只有确认哪一份是权威副本后,才重新连接远程 Vault。
不要让迁移后的 Vault 和恢复出的旧 Vault 同时连接同一个 Remote Vault,否则“回滚”可能变成一次大规模远程冲突。
日常维护清单
每次 Obsidian 或主题升级后
- 打开普通 Blog、Wiki、Project 和 Dashboard 各一篇;
- 检查四套配色的主要文字、边框和按钮;
- 打开一个 Base 和一个发布控件;
- 测试 Homepage、QuickAdd 和文件树按钮;
- 执行一次 Vault 校验。
每次插件升级前
- 检查插件要求的最低 Obsidian 版本;
- 备份对应插件配置;
- 一次只升级一类职责;
- 不因为“最新版”三个字跳过兼容性测试。
每次准备公开内容前
- 检查标题、slug、摘要、标签和路径;
- 确认
publish_revision是整数; - 使用发布动作,不手工伪造
published_at; - 对临时分享再次判断内容是否真的适合无认证链接。
系列总结
V2 最终并不是一份“最好看的 Obsidian CSS”,而是一套分层系统:
- Markdown 和 Properties 保存长期数据;
- 文件夹表达内容类型;
- Tasks、Dataview 和 Bases 提供不同层级的观察方式;
- QuickAdd 与 Templater降低创建成本;
- Bedic Publisher守住公开边界;
- Maple 与 Bedic Workbench 统一整个桌面外观;
- Homepage 把每天最重要的入口放在第一屏;
- 备份、验证和回滚保证这些便利不会拿内容安全交换。
如果未来继续做 V3,重点也不应该是再加十张卡片,而是把同一套身份、隐私和发布模型延伸到移动端与服务端。桌面 V2 的价值,就是先把作者真正依赖的规则冻结下来。