post-for-mobile-apr

9次阅读
没有评论

下面是 Trilium 自动备份部署文档(Markdown 版),可直接保存到你的知识库中(Obsidian / Astro / Nextra 均可)。


Trilium 自动备份部署文档

123466

本文档记录了在服务器上为 TriliumNext 配置自动备份、远端同步(Synology NAS)以及保留策略的完整过程。

img-102112685_1762825989429.jpg

📌 目标

  • 每次执行时将 Trilium 数据目录打包 (.tar.gz)
  • 本地保留 1 份最新备份
  • Synology 远端 /volume1/nfs/backup/trilium-backup/ 保留 最新 7 份
  • 自动通过 scp 上传(已配置好 SSH key、host alias syno
  • 定期通过 cron 自动执行

screen 20251114 015909

img-1063595468_1765815265584.jpeg

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

要我帮你一起生成吗?

正文完
 0
评论(没有评论)