trilium 分享 openresty 反向代理配置与说明

202次阅读
没有评论
内容纲要

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

---

# Trilium 自动备份部署文档

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

## 📌 目标

- 每次执行时将 Trilium 数据目录打包 (`.tar.gz`)

- 本地保留 **1 份最新备份**

- Synology 远端 `/volume1/nfs/backup/trilium-backup/` 保留 **最新 7 份**

- 自动通过 `scp` 上传(已配置好 SSH key、host alias `syno`)

- 定期通过 `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. 创建备份脚本

创建目录:

```bash
mkdir -p /opt/scripts /opt/backup/trilium
```

创建脚本 `/opt/scripts/trilium_backup.sh`:

```bash
#!/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 "==> 完成!"
```

添加执行权限:

```bash
chmod +x /opt/scripts/trilium_backup.sh
```

---

# 3. 手动测试脚本

```bash
/opt/scripts/trilium_backup.sh
```

典型输出如下:

```
==> 打包 Trilium 备份:trilium_2025-11-20_00-35-03.tar.gz
==> 本地备份完成
==> 清理本地旧备份,只保留 1 个
==> 上传至 Synology
==> 上传成功!
==> 清理远端旧备份,保留 7 个
==> 完成!
```

检查本地:

```bash
ls -lh /opt/backup/trilium/
```

检查目标机:

```bash
ssh syno "ls -lh /volume1/nfs/backup/trilium-backup/"
```

---

# 4. 配置 Cron 自动备份

编辑 root 的 cron:

```bash
crontab -e
```

加入每日凌晨 3 点自动备份:

```cron
0 3 * * * /opt/scripts/trilium_backup.sh >/dev/null 2>&1
```

查看当前 crontab:

```bash
crontab -l
```

---

# 5. 恢复方案(重要)

恢复时操作如下:

```bash
# 解压备份文件
tar -xzf trilium_YYYY-MM-DD_HH-MM-SS.tar.gz -C /

# 权限修复(如需要)
chown -R node:node /home/node/trilium-data
```

重启 Trilium 服务:

- Docker 用户:

```
docker restart ```

- 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