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脚本
- 保存