📌 重点功能 · 同步 & 备份 MN 4 / 设置 → 备份与恢复

把笔记放进可靠的备份位
不丢、不乱、跨设备走。

MN 提供 4 种自动备份位置(本地 / WebDAV / 百度网盘 / Google Drive)+ 完整导出整库包 + CloudKit 跨设备同步。下面是每种怎么开、各能放多大、出问题怎么办

5 种存放方式,一种开一遍

下面 5 张卡片,每张一种存放位置或导出方式。都在同一个入口设置:iPad / iPhone / Mac 上打开 MN → 设置 → 备份与恢复

📁 自动备份到 本地文件夹

不依赖网络 · 最稳 · 不占云盘配额

  1. 打开 MN → 设置 → 备份与恢复
  2. 下滑找到 "备份位置",选 "本地文件夹"
  3. 选好你想放的目录(iPad 上是"文件"App 里的文件夹;Mac 上是 Finder 任意位置)
  4. 选频率:仅手动 / 每小时 / 每 6 小时 / 每 12 小时 / 每天 / 每周

备份包格式:.marginbackupall。包文件归你管——存哪由你决定,系统不强制上传任何云端。

🗄️ 自动备份到 WebDAV / NAS

群晖 / 自建 WebDAV / 坚果云 / 公司私有云

  1. 设置 → 备份与恢复 → 备份位置选 "WebDAV 服务器"
  2. 下方"WEBDAV 配置"区域,填 服务器 URL(如 https://dav.example.com/)、用户名密码
  3. "测试连接" 确认能连上
  4. 选频率即可——MN 会在你设定的时间点自动推送备份包到 WebDAV

支持 HTTPS 自签证书;坚果云需要用"应用密码"而不是登录密码;群晖 / 威联通的内置 WebDAV 直接用账号即可。

☁️ 自动备份到 百度网盘

国内首选 · 容量大 · 扫码登录

  1. 设置 → 备份与恢复 → 备份位置选 "百度网盘"
  2. "登录百度网盘"——优先扫码(用手机百度网盘 App 扫一下);同一面板也支持账号密码登录
  3. 授权成功后回到 MN,选频率即可
  4. 第一次会先把当前学习集 / 卡片组的内容打包上传一次(首传偏慢,后续只传变化部分)

备份包会放在你百度网盘的 MarginNote 专属目录下;普通用户百度网盘容量足够放多个学习集的完整备份。

☁️ 自动备份到 Google Drive

海外首选 · OAuth 授权 · 跨设备访问

  1. 设置 → 备份与恢复 → 备份位置选 "Google Drive"
  2. 点登录,跳到 Google OAuth 授权页,用你的 Google 账号授权 MN 写入 Drive 中的 MN 专属目录
  3. 回到 MN,选频率
  4. 需要稳定的国际网络;首次授权后 token 自动续期,不用反复登录

备份包大小受 Google Drive 配额限制(免费 15 GB,含 Gmail / Photos);建议把"包含原始 PDF / 视频"按需勾选,纯笔记数据通常 < 200 MB。

💾 手动 完整导出 整库包

长期就有 · 手动触发 · 迁移到新设备最稳

  1. 设置 → 备份与恢复 → 上方 "完整导出" 卡片
  2. 三选一粒度:
    • 数据库 + 全部文档 + 历史版本——全量打包,迁移到新设备首选
    • 数据库 + 学习集文档——只带与学习集关联的 PDF,节省体积
    • 仅导出数据库——只导出笔记元数据,不含 PDF
  3. 导出 MarginNoteBackup(yyyy-MM-dd-HH-mm-ss).marginbackupall,存到任意位置
  4. 恢复:新设备装 MN → 设置 → 备份与恢复 → 选择本地的 .marginbackupall 文件 → 导入

这是 MN 一直就有的机制,不依赖 4.3 后的新架构。自动备份建议平时跑着,完整导出建议每隔几周手动做一次放外部 SSD。

📌 设置入口:MN → 设置 → 备份与恢复。可以同时开多种,建议至少开"本地 + 一个云端"——一份在你能控制的位置,一份在云端做异地容灾。

MarginNote iPad 设置页 · 备份与恢复面板:完整导出(三种粒度)+ 自动备份(WebDAV / 本地 / 百度网盘 / Google Drive 四选)+ WebDAV 配置(服务器 URL / 用户名 / 密码 / 测试连接)
设置 → 备份与恢复 的真实界面(iPad)。完整导出三种粒度 + 自动备份四个位置 + WebDAV 配置都在这一屏。
长期已有 · 跨设备同步

iCloud CloudKit 在你的设备之间自动同步。

这套是 Apple 自家的 iCloud 同步,不依赖第三方账号。跟"备份"是两件事——CloudKit 让你的 iPad 和 Mac 实时对齐当前最新状态;备份是把历史快照存到你能找回的地方。两个都开最稳。

怎么开

设置 → 云同步 → 选 CloudKit 同步

默认登录哪个 iCloud 账号就用哪个;同一 Apple ID 的设备会自动接入。

什么时候用 / 不用

:iPad + Mac 双机轮流学习;希望随手切设备继续。
不用:单设备用户;笔记库非常大且 iCloud 配额已满。

同步缓存重置

若出现卡顿或异常:设置 → 云同步 → 重置同步缓冲——所有数据会重新比对(有二次确认,按了不会丢数据)。

每学习集独立启用

可选"为每个学习集手动启用"或"自动启用":手动给你更细的控制(不重要的学习集不占配额);自动适合"新建一个就同步一个"的用户。

网络断 / 冲突 / 配额满 / 跨账号——都有兜底

同步备份系统的真实价值不在它正常工作时,而在它出问题时。这一节讲清楚每种失败模式的恢复路径——你应该知道当 things go wrong 时按哪个按钮。

同步状态栏

正在检查更新 / 准备下载 / 下载中(n/m)/ 准备上传 / 上传中(n/m)/ 同步完成 / 同步失败

每个状态对应实际的同步阶段——没在猜,在算。

冲突 UI(云盘同步)

检测到版本变更时弹三选:使用远程 / 合并 / 保留本地。默认选"合并",合并前自动出 pre-merge 备份。

重置同步缓冲

CloudKit 同步出现卡顿或异常时,可在 设置 → 云同步 重置同步缓冲——所有数据会重新比对。是核选项,按钮有二次确认。

手动同步备份

每次手动触发同步前会自动备份本地数据库到 Documents/ManualSyncBackups保留最近 5 份。冲突再严重,最近 5 次手动同步前的状态都还在。

管理 CloudKit 区域

用过 CloudKit 同步后想清空云端可见数据,可在设置里手动删除 CloudKit zones——释放 iCloud 配额,不影响本地

对象池 GC + 基线修复

云盘同步的对象池可手动触发垃圾回收(GC)+ 基线版本修复——解决长期使用产生的孤儿对象与基线缺失问题。

有些事 MN 不承诺

"绝不丢数据"听起来好——但工程上没有任何系统能这么承诺。MN 选择不夸口,而是把每层兜底机制讲清楚。

不是实时协同(CRDT / OT)

同步是基于变更追踪的最终一致——多设备会在几秒到几分钟内对齐。不是 Google Docs 那种"两个人同时编一段、字符级合并"。MN 不做实时协同。

不是完整 Git 三方 merge

云盘同步的合并算法是 manifest / hash / 时间戳的对象级合并——比 last-write-wins 强,但目前没有完整共同祖先(common ancestor)查找。所以"git for study notes"是设计灵感比喻,不是字面对等于 git。

本地保护需要快照已生成

"架构本身保护数据"建立在自动快照默认开启的前提上。如果你手动关掉自动快照、且没跑过任何手动 / 基线快照,崩溃前一秒的状态代码侧没有保证能恢复。可恢复的是"最近一份完整快照"。

不承诺零数据丢失

云盘服务故障 / 设备彻底损坏 / Apple ID 异常 / 操作误删——都可能发生。新架构 + 自动备份 + 完整导出层层兜底降低风险,但不打"绝对安全"包票。建议定期完整导出 + 一份保留在你能控制的位置(外部 SSD / 自己的 NAS / 不同账号的云盘)。

关于版本:本页讲到的"新数据架构"自 MN 4.3 起引入。"云盘同步"是基于这套架构的下一步,目前 Coming Soon——具体放出时间以官方 release note 为准。

COMING SOON MN 4.3+ 架构应用

云盘同步:跨设备同步的下一代实现。

下一代同步系统——和 CloudKit 同步是互斥关系(设置里二选一)。MN 4.3 起把同步系统重做了一遍,"脑图乱掉""手写图层错位"这类结构性问题在新一代同步下不再发生。技术细节见底部"FOR THE CURIOUS"折叠区。

支持的云盘后端(3 个)

iCloud Drive · 百度网盘 · Google Drive

代码里为 OneDrive / Dropbox 预留接口(暂时隐藏),WebDAV 仅备份支持,不在云盘同步选项中。

同步原子单元 = Manifest

每次变更生成不可变快照versionNumber + deviceId + 内容 hash 都在 manifest 里。

关键差异:远端文件传输仍可能半失败,但表现为缺对象或索引损坏(可修复),不会出现"布局指向不存在节点"的字段混杂

冲突处理(用户决策)

检测到版本冲突时 UI 弹三选:使用远程 / 合并(默认)/ 保留本地

合并前自动创建 Pre-merge 备份——即便合并选错,原始数据还在。

跨设备恢复

新机首次开 App 时拉取远端快照,按 manifest 重建本地数据;可选下载原始文档(PDF/视频)。

对象损坏时可重建索引,远端缺对象时可触发 baseline repair。

📌 当前状态:代码已完成,UI 由内部开关 mn5SyncSupported 门控;具体放出时间另行公告。

FOR THE CURIOUS · 深入 为什么 MN 4.3 重做了底层数据架构?点开看 ▾

下面这部分是给好奇 / 工程背景的读者看的——讲清楚 MN 4.3 引入的新数据架构是什么、为什么这么改、跟之前的 CloudKit 同步有什么本质区别。不影响日常使用——上面那些步骤照做就行。

MN 3.x → 4.2:CloudKit 同步(record 级)+ 完整导出 MN 4.3+新一代数据架构 · 自动备份 · 本地完整性 Coming Soon:云盘同步

MarginNote 数据架构与三类应用 本地数据 → 数据架构(BackupStorage 内容寻址对象池 + Manifest 版本化)→ 三类应用:本地完整性 / 自动备份 / 云盘同步(Coming Soon)。Full Export 与 CloudKit 同步是兼容保留的旧机制。 本地 MarginNote 数据 学习集 · 卡片 · 摘录 · 脑图 · 手写图层 · 复习 · 文档 MN 4.3+ 全新 数据架构 · BackupStorage + Manifest 把 git 的版本管理方式用在学习数据上 内容寻址对象池 SHA-256 + atomic write Manifest 版本化 versionNumber + deviceId SQLite 事务 快照元数据原子提交 应 用 三 处 应用 ① 本地完整性 默认开启 5 分钟 idle 自动出快照 同步前 / 冲突前 自动出快照 应用 ② 自动备份 默认可开 按频率自动跑 · 增量 · 版本化 4 个目的地后端 应用 ③ 云盘同步 COMING SOON manifest 级跨设备同步 3 个云盘后端 → 崩溃 / 写错可恢复 不开同步、不开外部备份也保护 → 任意历史版本可恢复 本地 · WebDAV · 百度 · Google → 多端一致(snapshot 级) iCloud Drive · 百度 · Google 兼 容 保 留 · LEGACY 完整导出(Full Export) 手动整库一次性打包,独立于新架构 .marginbackupall · 三种粒度 迁移 / 长期归档场景仍是首选 CloudKit 同步 老牌 record 级同步(自 2015 起) CloudKit 私有库 · 同 Apple ID 设备 ↔ 与"云盘同步"互斥 · 设置里二选一 蓝 = MN 4.3+ 新架构 黄 = MN 4.2 及之前的兼容保留 虚线 = Coming Soon

中心是数据架构本身(MN 4.3 引入),它在三处被复用:本地完整性安全网 / 自动备份 / 云盘同步(Coming Soon)。下方完整导出CloudKit 同步是 MN 4.2 及之前就存在的旧机制,与新架构并存。

全新 · MN 4.3 起
git 那套版本管理方式,
用在你的学习数据上。

从 MN 4.3 起,MN 引入了一套版本化数据底层——不只是"备份"或"同步",而是被三处复用的底座。这是 MN 这一代的架构升级。

01

对象池

内容寻址 SHA-256

每条数据按 SHA-256 hash 寻址存储——相同内容只存一份。文件用 writeToFile:atomically:YES;索引插入失败时删除刚写入文件回滚

  • Loose 对象 + Pack 文件(>1000 / >50MB 触发打包)
  • 对象损坏可重建索引
02

Manifest

snapshot 级原子单元

每个学习集快照是一个 Manifest,记录 versionNumber + deviceId + 内容 hash + 依赖关系。同步和恢复以 manifest 为单位,不再是字段或 record 级。

  • 这是新架构的核心——一份学习集要么全成、要么全失败
03

SQLite 事务

元数据原子提交

快照元数据写入用 SQLite transaction。要么这次快照完整入库,要么没出现——不会留下半成品 manifest

  • BackupSnapshots_v4.sqlite(schema v6)

⚠ 这套架构不是 CoreData + 对象池 + 快照 DB 的全局单事务——是"对象池写原子 + manifest 写原子"两件事各自原子。整体体验是版本库式安全网,不是数据库级 ACID 日志。

MN 4.3+ 新增
不开同步、不开外部备份——
架构本身就在保护你的数据

"丢手写""脑图乱掉""崩溃后笔记不见"是 MN 用户长期反馈的几大痛点。新架构在本地就以快照形式承接编辑——不需要你为它配置任何远程目的地。

默认行为

5 分钟 idle 出快照

每次编辑学习集 → 标记 dirty → 编辑停下 5 分钟 → 系统在本地版本库出一份不可变快照。

  • 同步前自动出快照(默认开)
  • 冲突前自动出快照(默认开)
  • 同步后自动出快照(默认,避免重复)
崩溃恢复

对象 + 索引可重建

对象内容 hash 校验失败时——比如硬盘扇区坏 / 文件损坏——可以触发 verifyIntegrity + rebuildIndex 重建对象索引。

  • UI 入口:修复缺失基线版本(推荐),仅在检测到未覆盖学习集时显示

诚实边界:上面这套保护建立在自动快照默认开启的前提上。如果你手动关掉自动快照、且没有跑过任何手动 / 基线快照,那么"崩溃前一秒的状态"代码侧没有保证能恢复。架构提供的是最近一份完整快照之内的回溯能力,不是逐键不可丢失。

同样的"同步失败"——
旧架构会乱掉,新架构会缺对象

这两种失败的恢复成本完全不同:"乱掉"需要用户人工辨认哪份数据是错的、可能要回滚或手工修复;"缺对象"是可见的、可定位的、可自动修复的——它告诉你哪个 hash 没下载完,重新拉一次就好。这就是 MN 4.3 引入新数据架构带来的差别。

维度 MN 4.2 之前(CKRecord 级) MN 4.3+(Manifest 级)
写入原子性 CoreData 保存层面有原子性,但同步层以 Topic / BookNote CKRecord 为单位 对象用 writeToFile:atomically:YES;索引插入失败回滚刚写文件;快照元数据用 SQLite 事务
同步原子性
(一个学习集的所有变更)
CKModifyRecordsOperation.atomic = YES 只覆盖当前批次,一个 StudySet 因 resultsLimit / 媒体大小被拆成多批 manifest 为可见单元;远端传输可能半失败,但半失败 = 缺对象(可修复),不是字段混杂
冲突可见单元 record / 字段级,依赖 CloudKit save policy 和 changedKeys snapshot / manifest 级,用 versionNumber + deviceId + manifest hash 提交
半失败状态 CKErrorPartialFailure → 维护 failed/missed records,可能用 atomic = NO 清理引用错误。用户感受:脑图乱掉 对象池可能缺对象或索引损坏,但有 verifyIntegrity + rebuildIndex用户感受:提示需要重新同步对象
回滚能力 没有 StudySet 级 immutable manifest 可回滚;依赖旧备份 / 手动冲突处理 可恢复到任意历史快照;baseline repair 补齐缺失版本覆盖
内容 hash 校验 只用 hashOfDataCRC 做差异判断,不是整 StudySet manifest 的内容寻址提交 对象和 manifest 全部 SHA-256 内容寻址
跨设备一致性保证 CloudKit record 级乐观锁;StudySet 全量一致性需跨多 record / 多批次拼出来 manifest / snapshot 级"版本提交"——但仍不是 CRDT,不是实时协同

不只是好用——更要放心

下载 MarginNote 4,把你的笔记交给一个把"数据安全"当作明确的工程任务来做的工具。