Joplin笔记备份与恢复完整方案:五种备份策略对比与实战
为什么Joplin用户必须重视备份
很多人选择Joplin是因为它“开源、本地、跨平台”,这些特性让人感觉数据在自己手里很安全。但数据在自己手里同时也意味着丢失也在自己手里。
Joplin的所有笔记默认存储在一个本地数据库中:
- Windows:
C:\Users\<用户>\.config\joplin-desktop\下的resources/和database.sqlite - macOS:
~/Library/Application Support/Joplin/ - Linux:同上Windows路径,只是反斜杠变正斜杠
- 移动端:Android的
/data/data/net.cozic.joplin/(需root才能导出)、iOS沙盒(无法直接访问)
如果发生以下任何一种情况,你的笔记可能瞬间归零:
- 硬盘损坏、SSD掉盘
- 系统重装时忘记导出
- Joplin数据库文件损坏(虽然罕见但发生过)
- 误操作清空笔记本
- Joplin Server同步服务宕机且本地数据库已损坏
没有备份就用Joplin,等同于把多年积累的知识裸奔在硬盘上。 本文讲清楚五种备份策略,任选其一都能让数据万无一失。
Joplin数据存储结构详解(备份前必知)
要备份,得先知道要备份什么。Joplin数据分两类:
元数据(必须备份)
- database.sqlite:笔记内容、标签、笔记本列表、附件索引等
- config.db:客户端设置、账号信息
- keymap.json:快捷键自定义
资源文件(必须备份)
- resources/目录:所有附件图片、PDF、文件等的实体文件
- 笔记正文只保存引用关系,实际二进制文件在resources下
- 如果只备份database.sqlite不备份resources,附件会全部“丢失引用”
结论:Joplin整个配置目录(.~config/joplin)是一体的,要么完整备份要么别备份。
方案一:本地全量备份(最基础)
最简单但也最容易被遗忘的方案。
操作步骤
Windows手动备份
- 关闭Joplin
- 打开文件资源管理器,地址栏输入
%USERPROFILE%\.config\joplin-desktop - 复制整个
joplin-desktop文件夹到U盘或移动硬盘 - 文件大小通常1-10GB(包含所有附件)
编写自动备份脚本
# Windows计划任务每日备份脚本
$source = "$env:USERPROFILE\.config\joplin-desktop"
$dest = "D:\JoplinBackup"
$date = Get-Date -Format "yyyy-MM-dd"
$zipPath = "$dest\joplin-$date.zip"
# 创建压缩备份
Compress-Archive -Path $source -DestinationPath $zipPath
# 保留最近30天备份,删除更早的
Get-ChildItem "$dest\joplin-*.zip" | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-30)
} | Remove-Item
设置步骤:
- 保存脚本为
backup-joplin.ps1 Win+R输入taskschd.msc打开任务计划程序- 创建基本任务,触发器选“每天”
- 操作选“启动程序”,程序填
powershell.exe,参数填-File "D:\backup-joplin.ps1"
优缺点
- ✅ 完全离线,无任何云依赖
- ✅ 备份速度快(千兆SSD 5GB数据约30秒)
- ✅ 恢复时直接复制回原路径即可
- ❌ 硬盘坏了备份也一起没
- ❌ 多设备间无法共享(需要手动同步U盘)
适用场景:对单一设备轻度使用的人群。
方案二:云盘同步(中度推荐)
利用百度网盘/OneDrive/Dropbox/iCloud等云盘同步Joplin的整个配置目录。这种方式是被官方和社区都推荐过的方案。
OneDrive同步配置(Windows)
- 将
%USERPROFILE%\.config\joplin-desktop整个文件夹移动到D:\JoplinData(或OneDrive同步根目录下,例如C:\Users\<user>\OneDrive\JoplinData) - 在Joplin中:
文件 → 选项 → General → 数据存储路径改为新的D:\JoplinData - 重启Joplin
- 让OneDrive同步整个
JoplinData目录到云端
重要提醒
- 必须用Joplin的“数据存储路径”配置,而不是用mklink/junction硬链接,否则数据库锁冲突会损坏数据
- 首次同步前,关闭Joplin:避免数据库正在写入时被OneDrive同步不完整副本
- 不要同时在两台设备打开Joplin并写笔记:虽然OneDrive会同步数据库,但SQLite在多个写入者并发时会损坏
网盘对比
| 网盘 | 速度 | 容量 | 加密 | 文件历史 | 推荐度 |
|---|---|---|---|---|---|
| OneDrive | 快(国内不限速) | 5GB免费/1TB Office365 | 支持个人保管库 | 30天版本 | ⭐⭐⭐⭐⭐ |
| 百度网盘 | 一般 | 1TB | 客户端加密 | 不支持 | ⭐⭐⭐ |
| iCloud | 苹果生态最佳 | 5GB免费 | 端到端备选 | 30天 | ⭐⭐⭐⭐ |
| Dropbox | 跨国快 | 2GB免费 | AES-256 | 30天(可延长) | ⭐⭐⭐⭐ |
| Google Drive | 跨国 | 15GB | 仅传输 | 100版本 | ⭐⭐ |
国内用户首选OneDrive,不限速、与Windows深度集成;苹果生态首推iCloud。
优缺点
- ✅ 多设备间自动同步(虽然不能同时打开)
- ✅ 硬盘损坏数据还在云端
- ✅ 文件历史可恢复误删
- ❌ 严重依赖第三方服务
- ❌ 数据库同步冲突风险
- ❌ 大附件(>1GB)同步慢
适用场景:单用户多设备、家庭环境、不能接受命令行的普通用户。
方案三:Joplin Server自部署(强烈推荐)
Joplin官方提供的同步服务器,开源、跨平台、支持端到端加密。是目前最优雅的Joplin备份方案。
Joplin Server简介
Joplin Server是Joplin团队官方的后端同步服务:
- 开源:https://github.com/laurent22/joplin/tree/dev/packages/server
- 支持Docker一键部署
- 支持用户管理(可多人共用一个Server)
- 内置E2EE端到端加密(与客户端可配)
- 数据存储在PostgreSQL + 本地文件系统
Docker一键部署(生产推荐)
# docker-compose.yml
version: '3'
services:
db:
image: postgres:15
restart: always
volumes:
- ./data/postgres:/var/lib/postgresql/data
environment:
POSTGRES_USER: joplin
POSTGRES_PASSWORD: your_secure_password
POSTGRES_DB: joplin
app:
image: joplin/server:latest
restart: always
depends_on:
- db
ports:
- "22300:22300"
volumes:
- ./data/joplin:/home/joplin/data
environment:
APP_BASE_URL: https://joplin.yourdomain.com
DB_CLIENT: pg
POSTGRES_HOST: db
POSTGRES_DATABASE: joplin
POSTGRES_USER: joplin
POSTGRES_PASSWORD: your_secure_password
APP_PORT: 22300
启动命令:
docker-compose up -d
客户端配置
- 在Joplin客户端:
设置 → 同步 → 同步目标选Joplin Server - 填服务器地址:
https://joplin.yourdomain.com - 填邮箱和密码(首次在Web管理界面 https://joplin.yourdomain.com/admin 注册)
- 强烈建议在设置中勾选“启用端到端加密”
优缺点
- ✅ 数据完全自主可控
- ✅ 多设备并发同步(数据库是PostgreSQL,不是本地文件)
- ✅ 与Web/桌面/移动端全平台同步
- ✅ 支持团队多人共用
- ✅ 历史版本可恢复(后端存全量)
- ❌ 需要一台24/7在线的服务器(家里NAS或云主机)
- ❌ Docker/反向代理/HTTPS配置有学习成本
- ✅ 一次性配置长期受益
适用场景:技术用户、多设备重度使用、有NAS或云主机的用户、中小型团队的团队知识库。
方案四:Git版本控制(开发者首选)
Joplin支持将笔记导出为Markdown + Frontmatter格式,放进Git仓库。这种方式特别适合“笔记就是文档”的工作流(博客、技术文档)。
工作流搭建
- Joplin →
文件 → 导出全部 → JEX或Markdown - 导出到本地Git仓库
- 写脚本每周自动提交:
#!/bin/bash
# ~/scripts/joplin-git-backup.sh
JOPLIN_EXPORT_DIR="$HOME/Documents/joplin-export"
cd "$JOPLIN_EXPORT_DIR" || exit 1
git add -A
git commit -m "Auto backup: $(date +'%Y-%m-%d %H:%M')"
git push origin main
- 在macOS/Linux用launchd/cron,Windows用任务计划程序定时执行
进阶玩法
- Git LFS:附件(GitHub/GitLab支持)单独存,避免主仓库膨胀
- GitHub Actions:备份时自动编译检查Markdown语法
- Jekyll/Hugo集成:备份仓库直接作为静态博客源
优缺点
- ✅ 完全免费(GitHub/GitLab免费私有仓库)
- ✅ 完整版本历史,每条笔记的变化都记录
- ✅ 误删可
git revert恢复 - ✅ 协作能力强(团队共编)
- ❌ 大量二进制附件会让Git仓库膨胀
- ❌ 缺乏实时同步,只是定期快照
- ❌ 配置较复杂
适用场景:技术写作者、博主、需要长期归档的团队。
方案五:云函数定时备份(高级方案)
适合不想自建服务器、又想要比云盘更可靠备份的用户。利用云厂商的Serverless能力做定时备份。
实现思路
- Joplin客户端配置WebDAV同步目标(腾讯云COS、阿里云OSS都支持WebDAV协议)
- 用云函数(SCF/Cloud Function)每周触发一次全量导出到对象存储
阿里云OSS WebDAV方案
# 阿里云函数计算示例
import oss2
import os
def handler(event, context):
access_key_id = os.environ['OSS_KEY']
access_key_secret = os.environ['OSS_SECRET']
bucket_name = 'my-joplin-backup'
auth = oss2.Auth(access_key_id, access_key_secret)
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', bucket_name)
# 上传Joplin导出文件
for root, dirs, files in os.walk('/tmp/joplin-export'):
for file in files:
local_path = os.path.join(root, file)
oss_path = local_path.replace('/tmp/joplin-export/', '')
bucket.put_object_from_file(oss_path, local_path)
return 'success'
优缺点
- ✅ 备份与日常同步解耦,降低风险
- ✅ 利用对象存储低成本(1GB/年约0.1元)
- ✅ 适合自动化运维思维用户
- ❌ 配置复杂,要懂云函数
- ❌ 有云厂商锁定的风险
适用场景:有云开发能力的DevOps型用户。
五种方案综合对比
| 方案 | 成本 | 可靠性 | 多设备 | 适合人群 | 学习成本 |
|---|---|---|---|---|---|
| 本地备份 | 0 | 中 | ❌ | 单设备轻度用户 | 低 |
| 云盘同步 | 网盘费 | 中高 | ✅ | 普通用户 | 低 |
| Joplin Server | 服务器费 | 高 | ✅ | 中高级用户 | 中 |
| Git版本控制 | 0 | 高 | ✅ | 技术用户 | 中 |
| 云函数备份 | 函数调用费 | 高 | ❌ | DevOps | 高 |
备份验证:3-6-2 原则
任何备份方案都要验证,否则遇到灾难时才发现备份也是坏的——这是数据备份领域最痛的教训。
3-6-2 原则
- 3份副本:1份本地 + 2份异地/异介质
- 6种媒介:硬盘 + SSD + 网盘 + 光盘 + 磁带 + 云
- 2种地理位置:家里 + 公司/亲戚家/云端异地
每季度做一次恢复演练
# 在虚拟机或临时目录,完整恢复一次Joplin备份
1. 复制备份数据到临时路径
2. 安装全新Joplin
3. 配置数据存储路径指向临时路径
4. 验证:笔记数量、附件、标签、笔记本
5. 清理临时数据
备份健康检查清单
- 上次成功备份在7天内
- 备份文件能解压(没有损坏)
- 恢复后的笔记数量与生产环境一致
- 至少一份备份在物理上与生产环境隔离
- 备份密码单独保管,不与服务器密码相同
故障恢复实战:从损坏数据库抢救笔记
万一你的Joplin数据库已经损坏,但你有一个完好的Joplin Server或网盘备份:
从Joplin Server恢复
- Joplin → 设置 → 同步
- 同步目标设为Joplin Server并配置
- 点击“立即同步”,所有笔记从Server拉回
- 等待完成,检查笔记完整性
从WebDAV/网盘同步恢复
- 先把损坏的本地数据库改名(或移走)
- 重启Joplin,会看到空状态
- 配置同步目标指向备份源
- 同步完成后,本地数据库从备份重建
从JEX导出文件恢复
如果你做过“导出全部 → JEX”备份:
- Joplin →
文件 → 导入 → JEX - 选择备份文件
- 等待导入完成
- 检查附件是否齐全
总结:选个备份方案,今晚就设置
不要再拖延,Joplin数据的丢失往往发生在最意想不到的时刻——某天硬盘突然坏道、某次系统升级失败、某次升级Joplin版本数据库迁移出错。
最简方案:本地+网盘双重(方案一+方案二),总共30分钟搞定,适合90%的用户。
进阶方案:自部署Joplin Server(方案三),适合重度多设备用户。
极客方案:Git版本控制 + 云函数 + 异地备份,适合长期归档场景。
任何方案都比裸奔在硬盘上强百倍。从今晚开始,花30分钟把Joplin备份配置好——这可能是你未来某一天最感恩的决定。
这篇教程有帮助吗?立即下载Joplin 中文网试试吧!
全平台支持 · 安全无毒 · 官方最新版