Obsidian digital garden 内容展示样式
聚氨酯 内链指向
代码高亮
[root@mg12051871279501160 ~]# cat /opt/scripts/trilium_backup.sh
#!/bin/bash
### === 配置区(根据你的实际情况修改) ===
# Trilium 数据目录(你提供的路径)
DATA_DIR="/opt/1panel/apps/local/trilium/localtrilium/data"
# 本地备份存放位置
LOCAL_BACKUP_DIR="/opt/backup/trilium"
# 远端 Synology 备份目录
REMOTE_TARGET="syno:/volume1/nfs/backup/trilium-backup/"
# 保留份数
LOCAL_KEEP=1
REMOTE_KEEP=7
# 备份文件名(带日期时间)
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
BACKUP_NAME="trilium_${DATE}.tar.gz"
### === 开始执行 ===
mkdir -p "$LOCAL_BACKUP_DIR"
cd "$DATA_DIR" || exit 1
echo "==> 打包 Trilium 备份:${BACKUP_NAME}"
tar -czf "${LOCAL_BACKUP_DIR}/${BACKUP_NAME}" \
--exclude="backup" \
--exclude="tmp" \
--exclude="log" \
.
echo "==> 本地备份完成:${LOCAL_BACKUP_DIR}/${BACKUP_NAME}"
### === 本地清理旧备份 ===
echo "==> 清理本地旧备份,只保留最新 $LOCAL_KEEP 个"
cd "$LOCAL_BACKUP_DIR"
ls -1tr trilium_*.tar.gz | head -n -"$LOCAL_KEEP" | xargs -r rm -f
### === 远端复制(Synology) ===
echo "==> 上传至 Synology:${REMOTE_TARGET}"
scp "${LOCAL_BACKUP_DIR}/${BACKUP_NAME}" "$REMOTE_TARGET"
if [ $? -ne 0 ]; then
echo "❌ SCP 传输失败!退出脚本。"
exit 1
fi
echo "==> 上传成功!"
### === 远端清理旧备份 ===
echo "==> 清理 Synology 远端旧备份,保留最新 $REMOTE_KEEP 个"
ssh syno "cd /volume1/nfs/backup/trilium-backup/ && ls -1tr trilium_*.tar.gz | head -n -${REMOTE_KEEP} | xargs -r rm -f"
echo "==> 完成!"
[root@mg12051871279501160 ~]# crontab -l
# 备份Trilium至群晖
0 3 * * * /opt/scripts/trilium_backup.sh >/var/log/trilium_backup.log 2>&1
[root@mg12051871279501160 ~]#
[root@mg12051871279501160 ~]# date
Thu Nov 20 00:51:37 CST 2025
[root@mg12051871279501160 ~]#