Watch at Ease看见世界,读懂生活。

使用指南 · 实用指南

用核对清单复制选定的 Obsidian 笔记和附件

对于少量且已人工核实的文件,使用只含明确库内相对路径的清单,先预览每个目标位置,只复制到全新的文件夹,再以 SHA-256 验证每个文件,最后才把结果作为另一个库打开。

一份已勾选的文件清单,把源文件夹树中选定的笔记和附件卡片映射到新文件夹树中的相同相对路径。
原创概念插图:允许写入前,先预览精确的相对路径复制计划。 Watch at Ease

迁移整个 Obsidian 库很容易,因为库本身就是普通文件夹。只迁移少量笔记及其实际使用的附件则更难:链接写法不同,而且附件目录可以配置,因此按文件名猜测并不安全。

本指南刻意限定范围。你需要人工确认直接关联的本地文件,列出精确的库内相对路径,预览计划,只复制到新的目标位置,并以 SHA-256 验证清单中的每个文件。它不会解析 Markdown,也不保证依赖项清单完整。

1. 仅用于你能人工盘点的小规模文件集

让源库保持空闲。逐一检查所选笔记中的每个嵌入文件和本地链接。Obsidian 文档说明,附件是库中的普通文件,其位置会受库级和文件夹级设置影响。请解析磁盘上的实际文件,不要根据界面显示的链接文字猜路径。

这不是自动导出器:它不会跟随 Wiki 链接、递归处理链接笔记、解码所有 URL 形式或发现遗漏的资源。如果需要自动闭合依赖关系,请使用仍在维护的插件或专用导出工具。

2. 建立明确清单和源文件盘点

在库外新建一个 UTF-8 文本文件。每行写一个精确相对路径,并使用正斜杠。例如分别写入 Notes/Project brief.md、Assets/diagram.png 和 Other/diagram.png。保留目录可区分同名文件。空行、点路径段、目录穿越、绝对路径、反斜杠,以及重复或忽略大小写后等价的条目都会被拒绝。

记录源库、新目标、清单的 SHA-256 和文件数量,并保留源库备份。此验证比较文件内容哈希,不保留访问时间、扩展属性或所有文件系统元数据。

3. 先运行零写入计划

点击下方“下载复制脚本(.py)”,或打开 https://watchatease.com/news/tools/manifest-copy-1a2d9dca.py,将原始文件另存为 manifest_copy.py。本流程在 Linux Python 3.12.14 上测试。在下载目录运行 sha256sum manifest_copy.py,结果必须为 1a2d9dca3bc1e66feb55e3f639d9b32318084266ba76494f5a2f079b4a0773e2;不一致就停止。随后运行:python3 manifest_copy.py --source '/path/to/source-vault' --manifest '/path/to/paths.txt' --target '/path/to/new-vault'。将三个示例路径替换为自己的路径。不加 --apply 时只输出精确路径、字节数和哈希,并标记 writesPerformed:false。

完整阅读计划并核对每个目标位置。该工具会扫描整个源目录树中的符号链接和 NFC 规范化加大小写折叠后的冲突,因此无关的符号链接,或 Assets/A.PNG 与 Assets/a.png 这样的组合,也会阻止运行。不要绕过这项拒绝。

4. 只向全新目标执行一次

确认计划无误后,加入 --apply 再运行。目标必须不存在,其父目录必须已存在,而且目标不能位于源库内部。独占式创建会把已存在的目标视为错误,而不是覆盖它。程序只复制清单中的文件。

打开新库前先阅读执行结果。应显示 ok:true 和 allListedFilesVerified:true;每个清单文件应有 verified:true,且原文件、复制文件、复制后源文件的 SHA-256 一致。这仅验证已列出的字节,不会检查清单是否包含所有附件,也不证明 Obsidian 能正确显示复制后的笔记。

5. 验证后再打开或删除任何内容

把回执视为文件系统检查,而不是 Obsidian 验收。核对数量和路径,独立比较目标哈希,然后把新文件夹作为单独的库打开并检查笔记与附件。测试用例没有验证图形界面渲染。

在新库通过检查并拥有自己的备份前,不要改动源库。如果发现遗漏文件,请修正人工清单并换用另一个尚不存在的新目标,不要合并进不完整的目录。

6. 把拒绝当作安全边界

执行失败后可能留下部分目标。保留错误信息,检查原因,并选择另一个不存在的目标。文件缺失、目录条目、目录穿越、绝对路径、重复项、符号链接、目标已存在,以及大小写或 Unicode 冲突,都是有意设置的拒绝条件。

26 个测试用例只在 Linux Python 3.12.14 上运行,并假定复制期间没有并发更改。Windows 路径行为、macOS 规范化、Obsidian 图形界面渲染和同步客户端均未测试。遇到这些情况或大批量任务,请评估仍在维护的导出工具或插件,并备份两个库。

多行通用文件指纹对比源文件、已复制文件和复制后源文件的值,并把一个不匹配项隔离为警告。
原创概念插图:只有源文件、复制文件和复制后源文件的哈希一致时才接受该文件,并隔离不完整的执行。 Watch at Ease