下面是 Trilium 自动备份部署文档(Markdown 版),可直接保存到你的知识库中(Obsidian / Astro / Nextra 均可)。
Trilium 自动备份部署文档
本文档记录了在服务器上为 TriliumNext 配置自动备份、远端同步(Synology NAS)以及保留策略的完整过程。
📌 目标
- 每次执行时将 Trilium 数据目录打包 (
.tar.gz) - 本地保留 1 份最新备份
- Synology 远端
/volume1/nfs/backup/trilium-backup/保留 最新 7 份 - 自动通过
scp上传(已配置好 SSH key、host aliassyno) - 定期通过
cron自动执行
1. 环境说明
| 项目 | 值 |
|---|---|
| 本地服务器路径 | /opt/backup/trilium/ |
| 脚本路径 | /opt/scripts/trilium_backup.sh |
| Trilium 数据目录 | /home/node/trilium-data(根据实际情况自改) |
| Synology 目标机路径 | syno:/volume1/nfs/backup/trilium-backup/ |
| Synology SSH 已配置 | key、host、user 均已配置 |
2. 创建备份脚本
创建目录:
mkdir -p /opt/scripts /opt/backup/trilium
创建脚本 /opt/scripts/trilium_backup.sh:
#!/bin/bash
# ========== 配置区域 ==========
TRILIUM_DATA="/home/node/trilium-data"
LOCAL_BACKUP_DIR="/opt/backup/trilium"
REMOTE_TARGET="syno:/volume1/nfs/backup/trilium-backup"
LOCAL_KEEP=1
REMOTE_KEEP=7
# =============================
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")
backup_name="trilium_${timestamp}.tar.gz"
echo "==> 打包 Trilium 备份:$backup_name"
tar -czf "${LOCAL_BACKUP_DIR}/${backup_name}" -C "$(dirname "$TRILIUM_DATA")" "$(basename "$TRILIUM_DATA")"
echo "==> 本地备份完成:${LOCAL_BACKUP_DIR}/${backup_name}"
echo "==> 清理本地旧备份,只保留最新 ${LOCAL_KEEP} 个"
ls -1t ${LOCAL_BACKUP_DIR}/trilium_*.tar.gz | tail -n +$((LOCAL_KEEP+1)) | xargs -r rm -f
echo "==> 上传至 Synology:$REMOTE_TARGET/"
scp "${LOCAL_BACKUP_DIR}/${backup_name}" "${REMOTE_TARGET}/"
if [ $? -eq 0 ]; then
echo "==> 上传成功!"
else
echo "==> 上传失败!退出"
exit 1
fi
echo "==> 清理 Synology 远端旧备份,保留最新 ${REMOTE_KEEP} 个"
ssh syno "ls -1t ${REMOTE_TARGET}/trilium_*.tar.gz | tail -n +$((REMOTE_KEEP+1)) | xargs -r rm -f"
echo "==> 完成!"
添加执行权限:
chmod +x /opt/scripts/trilium_backup.sh
3. 手动测试脚本
/opt/scripts/trilium_backup.sh
典型输出如下:
==> 打包 Trilium 备份:trilium_2025-11-20_00-35-03.tar.gz
==> 本地备份完成
==> 清理本地旧备份,只保留 1 个
==> 上传至 Synology
==> 上传成功!
==> 清理远端旧备份,保留 7 个
==> 完成!
检查本地:
ls -lh /opt/backup/trilium/
检查目标机:
ssh syno "ls -lh /volume1/nfs/backup/trilium-backup/"
4. 配置 Cron 自动备份
编辑 root 的 cron:
crontab -e
加入每日凌晨 3 点自动备份:
0 3 * * * /opt/scripts/trilium_backup.sh >/dev/null 2>&1
查看当前 crontab:
crontab -l
5. 恢复方案(重要)
恢复时操作如下:
# 解压备份文件
tar -xzf trilium_YYYY-MM-DD_HH-MM-SS.tar.gz -C /
# 权限修复(如需要)
chown -R node:node /home/node/trilium-data
重启 Trilium 服务:
- Docker 用户:
docker restart <trilium-container>
- systemd 用户:
systemctl restart trilium
6. 可选增强功能
如需要,我可帮你继续扩展脚本:
- [ ] 写入
/var/log/trilium_backup.log - [ ] 增加 Telegram/钉钉/微信机器人失败通知
- [ ] 自动检测 Synology 是否在线再决定是否上传
- [ ] Systemd timer 替代 cron(更可靠)
- [ ] 加密备份(GPG)
- [ ] 完整适配群晖 NFS / SMB / SSH 方式
如果你需要,我可以再生成一个 适用于你的 Obsidian + Astro 知识库目录结构 的文件名,例如:
2025-11-20-trilium-backup-deploy.md
要我帮你一起生成吗?