脚本背景&说明
背景:
思源笔记自部署需要自动备份的话,需要购买功能。如果不购买,只能手动备份。
经了解后发现,覆盖安装文件夹 data 与 conf 文件夹的方法,可以实现将备份恢复的效果
适用平台&情况:
思源笔记自部署在docker中 (下面例子为群晖docker)
存放平台为win10
需预先安装 Winrar
脚本效果
检查源路径和目标路径是否存在
使用WinRAR将 data 和 config 文件夹分别创建独立的ZIP文件
每个ZIP文件都包含日期和时间信息,格式为"siyuan_data_backup_YYYYMMDD_HHMMSS.zip"和"siyuan_conf_backup_YYYYMMDD_HHMMSS.zip"
分别检查每个备份是否成功
只有在对应文件夹存在的情况下才会进行备份
具体脚本代码
保存此代码为.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任务计划程序设置定时任务。
评论区