备份脚本存档
Trilium 备份脚本#
[root@mg12051871279501160 ~]# cat /opt/scripts/trilium_backup.sh
DATA_DIR="/opt/1panel/apps/local/trilium/localtrilium/data"
LOCAL_BACKUP_DIR="/opt/backup/trilium"
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
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
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 ~]#