Skip to content

数据可移植性

数据可移植性(Data Portability)是选择知识管理工具时最重要的考量之一。Obsidian 在这方面具有天然优势——所有数据都以开放格式存储在你的本地设备上。

为什么数据可移植性很重要?

数据锁定风险

使用专有格式的笔记应用,你可能面临:

  • 无法导出:服务停止后数据无法取出
  • 格式转换困难:专有格式无法被其他工具读取
  • 平台依赖:只能通过特定客户端访问
  • 付费绑架:续费才能继续访问自己的数据

Obsidian 的核心原则:你的数据永远属于你

Obsidian 的数据格式

文件格式

类型格式说明
笔记.md (Markdown)通用纯文本格式
白板.canvas开放 JSON 格式
图片/附件.png .jpg .pdf标准文件格式
配置.json人类可读

目录结构

text
你的仓库/
├── 笔记文件夹/
│   ├── 每日笔记/
│   ├── 项目/
│   └── 参考资料/
├── 附件/
│   ├── images/
│   └── files/
└── .obsidian/          ← 配置文件夹
    ├── app.json
    ├── appearance.json
    ├── community-plugins.json
    └── plugins/

关键点

  • .obsidian/ 文件夹仅存储配置,删除后 Obsidian 会自动重建
  • 所有笔记内容都是标准 Markdown,可直接用任何文本编辑器打开
  • 附件以原始格式存储,非嵌入数据库

Markdown 开放性

标准 Markdown 支持

Obsidian 使用标准 Markdown 语法,任何 Markdown 解析器都能读取:

语法标准Obsidian 扩展
标题# H1✅ 标准
列表- item✅ 标准
链接[text](url)✅ 标准
图片![alt](url)✅ 标准
Wiki 链接[[note]]Obsidian 扩展
嵌入![[note]]Obsidian 扩展
Callout> [!note]Obsidian 扩展
标签#tag通用但非标准

Obsidian 扩展语法的可移植性

Obsidian 的扩展语法都可以无损降级为标准 Markdown:

text
Obsidian 语法              → 标准 Markdown 等价
─────────────────────────────────────────────────
[[笔记名]]                 → [笔记名](笔记名.md)
![[图片.png]]              → ![图片](图片.png)
![[笔记#标题]]             → 参见 [笔记](笔记.md#标题)
#标签                      → 标签 (metadata 中)

导出方案

方案一:直接复制

最简单的方式——直接复制仓库文件夹:

bash
# 整个仓库就是一个普通文件夹
cp -r /path/to/vault /backup/location

所有文件保持原始格式,可直接在其他 Markdown 编辑器中使用。

方案二:使用 Pandoc 转换

将 Markdown 转换为其他格式:

bash
# 转换为 DOCX
pandoc note.md -o note.docx

# 转换为 PDF(需要 LaTeX)
pandoc note.md -o note.pdf

# 批量转换
find . -name "*.md" -exec pandoc {} -o {}.docx \;

方案三:使用 Obsidian 导出插件

插件功能输出格式
Webpage HTML Export导出为静态网页HTML
Obsidian Enhancing Export增强导出PDF/HTML/DOCX
Bulk Export批量导出多种格式
Markdown to JekyllJekyll 博客HTML

方案四:导出为 PDF

  1. 打开笔记
  2. Ctrl/Cmd + P → 「导出为 PDF」
  3. 选择页面大小、边距等设置

方案五:发布为网站

使用 Obsidian Publish 或静态站点生成器:

迁移到其他工具

Obsidian → Notion

bash
# 使用 obsidian-to-notion 工具
# 1. 安装工具
pip install obsidian-to-notion

# 2. 转换 Wiki 链接为标准链接
# 3. 上传到 Notion

手动步骤:

  1. [[链接]] 替换为标准 Markdown 链接
  2. 将嵌入语法转为 Notion 的 embed 块
  3. 迁移图片到 Notion
  4. 调整 frontmatter 为 Notion 数据库属性

Obsidian → Logseq

Logseq 原生支持 Markdown,迁移相对简单:

  1. 在 Logseq 中打开仓库文件夹
  2. 将文件夹结构转为 Logseq 的页面组织方式
  3. [[wiki 链接]] 语法兼容,无需转换
  4. 注意 Logseq 使用大纲模式,段落前需加 -

Obsidian → VS Code / Typora

直接用 VS Code 或 Typora 打开仓库文件夹即可。注意事项:

  • Wiki 链接 [[note]] 在 Typora 中显示为链接(需在设置中启用)
  • 嵌入语法在普通编辑器中显示为原始文本
  • Callout 在 Typora 中有基本支持

备份策略

本地备份

bash
# 使用 rsync 增量备份
rsync -av --delete /path/to/vault/ /backup/vault/

# 使用 tar 归档
tar -czf vault-backup-$(date +%Y%m%d).tar.gz /path/to/vault/

Git 版本控制

bash
# 初始化
cd /path/to/vault
git init

# 创建 .gitignore
cat > .gitignore << 'EOF'
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.trash/
EOF

# 首次提交
git add .
git commit -m "Initial backup"

# 定期自动提交(配合 Obsidian Git 插件)

云端同步

方案类型加密费用
Obsidian Sync官方✅ E2E付费
iCloud苹果生态免费
Google Drive通用免费/付费
SyncthingP2P 开源免费
Nextcloud自建免费

数据恢复

从备份恢复

bash
# Git 恢复
git checkout HEAD -- path/to/note.md

# 恢复特定版本
git show abc123:path/to/note.md > note.md

# 恢复已删除文件
git log --diff-filter=D --summary  # 找到删除的提交
git checkout HEAD~1 -- path/to/note.md

使用文件恢复插件

Obsidian 内置「文件恢复」核心插件:

  1. 设置 → 核心插件 → 启用「文件恢复」
  2. 设置快照保留时间和间隔
  3. 在文件恢复面板中浏览和恢复历史版本

从同步冲突中恢复

当同步冲突时:

  1. 检查冲突文件(通常带有冲突标记)
  2. 手动合并差异
  3. 删除冲突标记

长期保存策略

格式选择建议

保存年限建议格式理由
1-5 年Markdown + Obsidian完整功能和链接
5-20 年标准 Markdown通用可读
20+ 年纯文本 + PDF 归档最大兼容性

归档最佳实践

  1. 定期导出:每年导出一份标准 Markdown 版本
  2. 转换 Wiki 链接:存档时将 [[link]] 转为 [link](link.md)
  3. 嵌入内容内联化:将嵌入内容替换为实际内容
  4. 保留原始文件:同时保留 Obsidian 格式和标准格式
  5. 生成索引:创建目录清单,记录文件关系

自动化归档脚本

python
#!/usr/bin/env python3
"""将 Obsidian 仓库导出为标准 Markdown 归档"""
import re
import os
import shutil

def convert_wiki_links(content):
    """将 [[wiki links]] 转换为 [标准链接](path.md)"""
    pattern = r'\[\[([^\]|]+)(?:\|([^\]]+))?\]\]'
    def replace(match):
        path = match.group(1)
        alias = match.group(2) or path
        return f'[{alias}]({path}.md)'
    return re.sub(pattern, replace, content)

def convert_embeds(content):
    """将 ![[embed]] 转换为引用文本"""
    pattern = r'!\[\[([^\]]+)\]\]'
    def replace(match):
        path = match.group(1)
        return f'*(嵌入内容: {path})*'
    return re.sub(pattern, replace, content)

def archive_vault(source_dir, output_dir):
    """归档整个仓库"""
    if os.path.exists(output_dir):
        shutil.rmtree(output_dir)
    
    for root, dirs, files in os.walk(source_dir):
        # 跳过 .obsidian 配置目录
        if '.obsidian' in dirs:
            dirs.remove('.obsidian')
        if '.trash' in dirs:
            dirs.remove('.trash')
        
        for file in files:
            if file.endswith('.md'):
                src_path = os.path.join(root, file)
                rel_path = os.path.relpath(src_path, source_dir)
                dst_path = os.path.join(output_dir, rel_path)
                
                os.makedirs(os.path.dirname(dst_path), exist_ok=True)
                
                with open(src_path, 'r', encoding='utf-8') as f:
                    content = f.read()
                
                content = convert_wiki_links(content)
                content = convert_embeds(content)
                
                with open(dst_path, 'w', encoding='utf-8') as f:
                    f.write(content)
            else:
                # 非笔记文件直接复制
                src_path = os.path.join(root, file)
                rel_path = os.path.relpath(src_path, source_dir)
                dst_path = os.path.join(output_dir, rel_path)
                os.makedirs(os.path.dirname(dst_path), exist_ok=True)
                shutil.copy2(src_path, dst_path)

if __name__ == '__main__':
    archive_vault('/path/to/vault', '/path/to/archive')

常见问题

离开 Obsidian 后还能访问数据吗?

完全可以。所有笔记都是标准 Markdown 文件,可以用任何文本编辑器打开。Obsidian 特有的语法(如 Wiki 链接)在其他编辑器中会显示为原始文本,但不影响内容读取。

Obsidian 关闭了怎么办?

  • Obsidian 是本地优先的应用,即使官方服务器关闭也不影响使用
  • 所有数据存储在本地,无需联网即可访问
  • 社区已有多款兼容的编辑器可以打开 Obsidian 仓库
  • Markdown 格式确保长期可读性

如何确保数据安全?

  1. 3-2-1 备份:3 份副本、2 种介质、1 份异地
  2. 版本控制:使用 Git 追踪所有变更
  3. 定期导出:每年导出标准格式归档
  4. 加密敏感数据:使用文件系统加密或插件加密

相关资源