Windows环境PgSql自动备份脚本

PgSql脚本如下

保存到指定路径 并 添打成压缩包

@echo off
setlocal enabledelayedexpansion

set pg_path=D:\PgSql\bin	REM 数据库Bin路径
set base_backup_path=D:\backup_pgsql	REM 备份路径
set db_name= pgsql	REM 数据库名称
set user=postgres	REM 数据库账户名
set PGPASSWORD=password 	REM 数据库密码
set port=15432	REM 数据库端口

for /f "tokens=2 delims==" %%i in ('wmic os get localdatetime /value') do set datetime=%%i
set year=%datetime:~0,4%
set month=%datetime:~4,2%
set day=%datetime:~6,2%
set time=%datetime:~8,6%

set backup_path=%base_backup_path%\%year%\%month%\%day%
if not exist "%backup_path%" (
    mkdir "%backup_path%"
)

rem 只保留到秒,去掉微秒部分
set backup_file=%backup_path%\%db_name%_%year%%month%%day%_%time:~0,6%.backup
echo 备份文件路径: !backup_file!

echo 开始备份...
"%pg_path%\pg_dump" -U %user% -p %port% -F c -b -v -f "!backup_file!" %db_name% > "%base_backup_path%\backup_log.txt" 2>&1

if %ERRORLEVEL% neq 0 (
    echo 备份失败,请检查pg_dump命令是否正确执行。
    echo 查看日志文件:%base_backup_path%\backup_log.txt
) else (
    echo 备份完成: !backup_file!

    rem 使用 PowerShell 压缩文件
    set zip_file=%backup_path%\%db_name%_%year%%month%%day%_%time:~0,6%.zip
    echo 压缩文件路径: !zip_file!  rem 添加此行以检查 zip_file 的值

    rem 使用 call 来传递变量
    powershell -command "Compress-Archive -Path '!backup_file!' -DestinationPath '!zip_file!'"

    if !ERRORLEVEL! neq 0 (
        echo 压缩失败,请检查PowerShell命令是否正确执行。
    ) else (
        echo 压缩完成: !zip_file!

        rem 删除备份文件
        del "!backup_file!"
        echo 备份文件已删除: !backup_file!
    )
)

endlocal

Windows 配置定时任务

  • 任务计划程序
  • 创建基本任务
  • 操作选择启动程序
  • 路径选择为 刚刚编写的.bat脚本
  • 保存
posted @ 2024-10-18 16:35  佳楠的个人Log  阅读(71)  评论(0编辑  收藏  举报