PostgreSQL Windows自动备份脚本

用于Windows下的PostgreSQL备份脚本。

将如下文件保存为Pgsql_Automated_backup.bat。请阅读该文件内部的说明。

@echo off

rem 功能:postgresql windows 平台 自动备份脚本
rem 在备份目录d:\backup下分月建立目录,在每月目录中保存当月的分天备份文件
rem 在备份前在命令行执行echo %date% 确保日期格式是yyyy-mm-dd,如果不是的话,请到控制面板修改区域与语言选项中修改日期格式。
rem 作者:David Pan
rem 日期:2009-02-19

@set Filename=%date:~0,10%.backup
@set Dirname=%date:~0,7%

rem 如果当天是一号则新建新月份目录
@if %date:~8,2% == 01 (md d:\backup\”%Dirname%”)

rem 如果没有当月目录则新建当月目录
@if not exist d:\backup\”%Dirname%” (md d:\backup\”%Dirname%”)

rem 执行备份任务,备份databasename数据库,请将version换成你的pgsql版本,或者根据你的pg_dump文件所在位置修改。
“%ProgramFiles%”\PostgreSQL\version\bin\pg_dump.exe” -i -h localhost -p 5432 -U postgres -F c -b -v -f d:\backup\”%Dirname%\%Filename%” databasename  

rem 将备份文件打包成rar格式,并删除原始备份文件。(确保你已经安装了winrar,如果你没有安装在默认目录,请根据winrar文件的位置修改路径)
@if exist d:\backup\”%Dirname%\%Filename%”  (“%ProgramFiles%”\winrar\winrar a -df d:\backup\”%Dirname%\%Filename%”.rar d:\backup\”%Dirname%\%Filename%”)

rem 自动删除三月前的备份,根据建立日期判断
@if %date:~8,2% ==25 (for /f  “skip=3” %%a in (‘dir /b/ad/o:-d d:\backup’) do @if exist d:\backup\%%a  rd /s /q  d:\backup\%%a)

@echo on

执行如下命令:

schtasks /Create /SC DAILY /ST 00:00:00 /TN Pgsql_Backup /RU “NT AUTHORITY\SYSTEM” /TR d:\backup\Pgsql_Automated_backup.bat

该语句我设置为每天0点备份,请根据你的情况调整.
d:\backup\Pgsql_Automated_backup.bat 也请修改为你自己存放脚本的位置。

发表评论