用批处理文件备份hexo博客到本地目录

• 3 分钟阅读 • web

hexo在折腾过程,难免会出现数据丢失的问题,有不少备份的方案,但在windows上最简单的就是压缩后复制到指定目录。可复制到onedrive目录下,会自动备份到云端。

主代码

@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。

使用说明

配置参数:

功能说明

注意事项

7zip压缩方案

@echo off
setlocal

:: 配置参数
set "SOURCE_DIR=D:\Hexo\Blog"
set "BACKUP_DIR=D:\BlogBackups"
set "SEVEN_ZIP=C:\Program Files\7-Zip\7z.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%.7z" "%SOURCE_DIR%\*" -x@"%EXCLUDE_LIST%"

:: 清理
del "%EXCLUDE_LIST%"

echo 备份完成!
pause

不使用powershell压缩,改为7zip。最后生成的文件差不多大小。

文章标签: web

上一篇 : Gravatar头像的使用
下一篇 : 生成命令行版本image-converter
留言
阅读进度 0%