侧边栏壁纸
博主头像
文利堂

世上无难事,只要肯登攀。

  • 累计撰写 6 篇文章
  • 累计创建 18 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

自动备份思源笔记脚本

脚本背景&说明

背景:

  1. 思源笔记自部署需要自动备份的话,需要购买功能。如果不购买,只能手动备份。

  2. 经了解后发现,覆盖安装文件夹 dataconf 文件夹的方法,可以实现将备份恢复的效果

适用平台&情况:

  1. 思源笔记自部署在docker中 (下面例子为群晖docker)

  2. 存放平台为win10

  3. 需预先安装 Winrar

脚本效果

  1. 检查源路径和目标路径是否存在

  2. 使用WinRAR将 data config 文件夹分别创建独立的ZIP文件

  3. 每个ZIP文件都包含日期和时间信息,格式为"siyuan_data_backup_YYYYMMDD_HHMMSS.zip"和"siyuan_conf_backup_YYYYMMDD_HHMMSS.zip"

  4. 分别检查每个备份是否成功

  5. 只有在对应文件夹存在的情况下才会进行备份

具体脚本代码

保存此代码为.bat文件后双击运行即可执行分别备份

@echo off
setlocal enabledelayedexpansion

rem 设置变量
set "SOURCE_PATH=\\XXX\docker\siyuan\workspace"       :: SOURCE_PATH, 需按思源笔记实际部署地址修改。左则例子为docker文件夹共享到win10的共享地址
set "BACKUP_PATH=E:\思源笔记备份"                       :: BACKUP_PATH, 备份后存放地址。左侧以 E:\思源笔记备份 为例
set "WINRAR_PATH=C:\Program Files\WinRAR\WinRAR.exe"   :: WINRAR_PATH, WinRAR安装地址
set "DATE_FORMAT=%date:~0,4%%date:~5,2%%date:~8,2%"
set "TIME_FORMAT=%time:~0,2%%time:~3,2%%time:~6,2%"
set "TIME_FORMAT=!TIME_FORMAT: =0!"
set "DATA_BACKUP_FILENAME=siyuan_data_backup_!DATE_FORMAT!_!TIME_FORMAT!.zip"        :: 备份重命名
set "CONF_BACKUP_FILENAME=siyuan_conf_backup_!DATE_FORMAT!_!TIME_FORMAT!.zip"

rem 检查源路径是否存在
if not exist "%SOURCE_PATH%" (
    echo 错误:源文件夹 "%SOURCE_PATH%" 不存在。
    goto :EOF
)

rem 检查源路径下的data和conf文件夹是否存在
if not exist "%SOURCE_PATH%\data" (
    echo 警告:源文件夹中的data文件夹不存在。
)

if not exist "%SOURCE_PATH%\conf" (
    echo 警告:源文件夹中的conf文件夹不存在。
)

rem 检查备份路径是否存在,如果不存在则创建
if not exist "%BACKUP_PATH%" (
    mkdir "%BACKUP_PATH%"
    echo 已创建备份文件夹:%BACKUP_PATH%
)

rem 检查WinRAR是否存在
if not exist "%WINRAR_PATH%" (
    echo 错误:未找到WinRAR程序 "%WINRAR_PATH%"。
    goto :EOF
)

echo 开始备份...
echo 源路径:%SOURCE_PATH%

rem 备份data文件夹
if exist "%SOURCE_PATH%\data" (
    echo 备份data文件夹到:%BACKUP_PATH%\%DATA_BACKUP_FILENAME%
    "%WINRAR_PATH%" a -r -ep1 -afzip "%BACKUP_PATH%\%DATA_BACKUP_FILENAME%" "%SOURCE_PATH%\data"
    
    rem 检查data备份是否成功
    if %errorlevel% equ 0 (
        echo data文件夹备份成功!
    ) else (
        echo data文件夹备份过程中出现错误。错误代码:%errorlevel%
    )
)

rem 备份conf文件夹
if exist "%SOURCE_PATH%\conf" (
    echo 备份conf文件夹到:%BACKUP_PATH%\%CONF_BACKUP_FILENAME%
    "%WINRAR_PATH%" a -r -ep1 -afzip "%BACKUP_PATH%\%CONF_BACKUP_FILENAME%" "%SOURCE_PATH%\conf"
    
    rem 检查conf备份是否成功
    if %errorlevel% equ 0 (
        echo conf文件夹备份成功!
    ) else (
        echo conf文件夹备份过程中出现错误。错误代码:%errorlevel%
    )
)

echo 备份过程完成!

endlocal

补充

如果希望自动定期执行此备份,可以通过Windows任务计划程序设置定时任务。

2

评论区