hexo在折腾过程,难免会出现数据丢失的问题,有不少备份的方案,但在windows上最简单的就是压缩后复制到指定目录。可复制到onedrive目录下,会自动备份到云端。
主代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 @echo off setlocal enabledelayedexpansion:: 配置参数 set "SOURCE_DIR=D:\HexoBlog" :: Hexo博客根目录set "BACKUP_DIR=D:\BlogBackups" :: 备份存放目录set "IGNORE_DIRS=node_modules public .deploy_git" :: 要忽略的目录(空格分隔)set "ZIP_NAME=HexoBackup_%date:~0,4% %date:~5,2% %date:~8,2% .zip" :: 压缩文件名(带日期):: 创建临时工作目录 set "TEMP_DIR=%TEMP% \HexoBackupTemp"if exist "%TEMP_DIR% " rd /s /q "%TEMP_DIR% "mkdir "%TEMP_DIR% ":: 复制文件,排除指定目录 echo 正在复制文件...for /d %%d in ("%SOURCE_DIR% \*") do ( set "skip=" for %%i in (%IGNORE_DIRS% ) do ( if /i "%%~ nxd"=="%%i " set skip=1 ) if not defined skip ( xcopy /E /I /Y "%%d " "%TEMP_DIR% \%%~ nxd" ) ) :: 复制单独的文件(非目录) for %%f in ("%SOURCE_DIR% \*.*") do ( if not "%%~ nxf"==".gitignore" ( :: 可以添加其他要排除的文件 copy /Y "%%f " "%TEMP_DIR% \" >nul ) ) :: 创建备份目录(如果不存在) if not exist "%BACKUP_DIR% " mkdir "%BACKUP_DIR% ":: 压缩文件 echo 正在压缩备份文件...powershell -nologo -noprofile -command "Add-Type -Assembly 'System.IO.Compression.FileSystem'; [System.IO.Compression.ZipFile]::CreateFromDirectory('%TEMP_DIR% ', '%BACKUP_DIR% \%ZIP_NAME% ', 'Optimal', $false)" :: 清理临时文件 rd /s /q "%TEMP_DIR% "echo 备份完成!备份文件保存在: %BACKUP_DIR% \%ZIP_NAME% pause
以ansi编码保存为backup_hexo.bat。
使用说明 配置参数:
修改 SOURCE_DIR 为Hexo博客根目录;
修改 BACKUP_DIR 为存放备份的目录;
修改 IGNORE_DIRS 为忽略的目录(默认忽略了 node_modules、public 和 .deploy_git)。
功能说明
脚本会创建一个临时目录复制所有文件(排除指定目录);
使用PowerShell的压缩功能创建ZIP文件;
备份文件名包含当前日期(如 HexoBackup_20230515.zip);
完成后自动清理临时文件。
注意事项
需要Windows 8/Server 2012或更高版本(支持PowerShell压缩命令);
如果使用Windows 7,需要安装.NET Framework 4.5或更高版本;
7zip压缩方案 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 @echo off setlocal :: 配置参数 set "SOURCE_DIR=D:\Hexo\Blog"set "BACKUP_DIR=D:\BlogBackups"set "SEVEN_ZIP=C:\Program Files\7 -Zip\7 z.exe":: 创建临时排除列表文件 set "EXCLUDE_LIST=%temp% \exclude.txt"( echo node_modules\* echo public\* echo .deploy_git\* echo .github\* ) > "%EXCLUDE_LIST% " :: 执行压缩 "%SEVEN_ZIP% " a -t7z -mx9 "%BACKUP_DIR% \HexoBackup_%date:~0,4% %date:~5,2% %date:~8,2% .7 z" "%SOURCE_DIR% \*" -x@"%EXCLUDE_LIST% " :: 清理 del "%EXCLUDE_LIST% "echo 备份完成!pause
不使用powershell压缩,改为7zip。最后生成的文件差不多大小。