文档章节

PostgreSQL自动备份批处理脚本(Windows版本)

leeoo
 leeoo
发布于 2012/08/28 13:14
字数 524
阅读 756
收藏 7

根据网上公布的批处理改写,在此感谢~

在Windows Server 2003 with SP2 x64上添加到任务计划中运行通过~

:: 备份文件命名规则: 数据库名_当前时间戳_数据库管理系统名.sql	e.g. info_platform_20120503101305_PostgreSQL.sql
:: 使用WinRAR的命令行程序Rar.exe来压缩备份好的.sql文件,前提是系统上要安装有WinRAR而且在此处的路径正确!
:: @author  libeely@gmail.com

@echo  off

echo 正在初始化环境变量...
echo.

:: 对于路径中有空格的路径字符串,需要加上英文双引号包裹!否则就会出现命令错误!
set POSTGRESQL_DIR="E:\PostgreSQL\9.1\bin\"
:: "D:\MySQL\MySQL Server 5.5\bin\"
:: 数据库管理系统名
set DBMS_NAME=PostgreSQL
set DBBAK_DIR="G:\info_platform_databackup"
set UPLOADS_DIR="E:\apache\Apache2.2\wwwroot\info_platform\uploads\"
:: 异地备份目录
set DEST_DIR="\\10.30.100.22\info_form_databackup"
set WINRAR_DIR="C:\Program Files (x86)\WinRAR\"
set DB_NAME=info_platform
set USER="postgres"
:: PostgreSQL的pg_dump命令行工具没有带密码的参数,但是可以设置一个PGPASSWORD的环境变量来提供密码
set PGPASSWORD=123456


echo 正在备份数据库...
echo.

:: 以下是获得当前系统时间的命令,e.g. 20120503101305
:: 年
set myyy=%date:~0,4%
:: 月
set mymm=%date:~5,2%
:: 日
set mydd=%date:~8,2%

echo %myyy% %mymm% %mydd%

set /a TODAY=%date:~0,4%%date:~5,2%%date:~8,2%
set _TIME=%time:~0,8%
::echo %_TIME%
set CURRENTTIME=%_time::=%
set CURRENTTIME=%CURRENTTIME: =0%
set MYDATETIME=%TODAY%%CURRENTTIME%
::echo %MYDATETIME%

E:
cd %POSTGRESQL_DIR%

:: 使用PostgreSQL提供的pg_dump命令将具体数据库导出为.sql文件
pg_dump -h localhost -p 5432 -U %USER% %DB_NAME% >%DBBAK_DIR%\%DB_NAME%_%MYDATETIME%_%DBMS_NAME%.sql


echo 正在压缩备份结果...
echo.
C:
cd %WINRAR_DIR%
:: 最好压缩(-m5)、固实压缩(-s)、从名称中排除路径(即不创建路径中包含的文件夹,-ep)
:: 压缩后删除文件到回收站(-dr)、压缩后删除文件(-df)
rar a %DBBAK_DIR%\%DB_NAME%_%MYDATETIME% %DBBAK_DIR%\%DB_NAME%_%MYDATETIME%_%DBMS_NAME%.sql -m5 -s -ep -dr


echo 正在复制压缩文件到异地...

xcopy %DBBAK_DIR%\*.*  %DEST_DIR%$ /s /y
xcopy %UPLOADS_DIR%\*.*  %DEST_DIR%$ /s /y


:: 删除生成的sql文件,不再启用,直接使用rar命令参数删除,更安全!
::echo 正在删除临时文件...
::del %DBBAK_DIR%\%DB_NAME%_*.sql

:: 按任意键退出
::PAUSE

exit

© 著作权归作者所有

leeoo
粉丝 27
博文 136
码字总数 83885
作品 0
浦东
程序员
私信 提问
加载中

评论(1)

kenyon_君羊
kenyon_君羊
学习一下
postgresql windows 自动备份

windows下postgresql 自动备份脚本,采用bat批处理脚本编写,windows任务计划定时执行。 每天备份一次,主要采用pg_dump 备份指定库,同时删除 7 天以前的备份文件。 @echo off@setlocal ena...

从前
2013/05/27
516
0
Windows下实现PostgreSQL自动备份

本文介绍怎样创建一个Windows批处理文件来自动备份PostgreSQL数据库。 背景 在我工作上一个使用PostgreSQL数据库的项目上需要一个自动化系统来每天执行备份。经过一番研究决定通过创建一个W...

tsl0922
2012/09/24
6.8K
8
Windows下实现PostgreSQL自动备份

简介 本文介绍怎样创建一个Windows批处理文件来自动备份PostgreSQL数据库。 背景 在我工作上一个使用PostgreSQL数据库的项目上需要一个自动化系统来每天执行备份。经过一番研究决定通过创建一...

彭博
2012/11/27
1K
0
postgresql 自动备份

自动备份脚本 @echo off @set Filename=%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%点%time:~3,2%分.backup @set Dirname=%date:~0,7% rem 如果当天是一号则新建新月份目录 @if %date:......

Koala_Bear
2013/02/22
3.1K
0
postgresql数据库备份还原

一、备份 1.命令行下备份为纯文本格式 切换为postgres用户(linux 命令) su - postgres 备份到backupfile.bak pg_dump dbname > backupfile.bak windows下使用-U参数切换用户 pg_dump -h l...

单线程生物
10/30
18
0

没有更多内容

加载失败,请刷新页面

加载更多

Shell学习记录(持续更新)

一、shell定时备份数据库任务通用脚本 目标:根据定时任务启动脚本,执行数据库备份任务,按照日期进行每日备份,如已经备份则脚本停止,备份任务完成后将结果发送邮件提醒 1.执行数据库备份...

网络小虾米
今天
3
0
PHP计算两个经纬度地点之间的距离

/** * 求两个已知经纬度之间的距离,单位为米 * * @param lng1 $ ,lng2 经度 * @param lat1 $ ,lat2 纬度 * @return float 距离,单位米 * @author www.Alixixi.com */function get...

子枫Eric
今天
14
0
Linux—day 4

ch2 需要掌握的命令 (1)cat -n 1.txt (2)more 1.txt (3)head -n 15 initial-setup-ks.cfg (4)tail -n 17 initial-setup-ks.cfg;tail -f initial-setup-ks.cfg (5)cat -n anaconda-ks.c......

呵呵暖茶
今天
31
0
【Kubernetes社区之路】我的PR被抢了

2019年11月的某天,我无意间发现一个PR作者在自己的PR中抱怨自己的PR没被合入,而另一个比自己提交晚且内容几乎一样的PR则被合入了。 字里行间透露些许伤感外加无奈,原文如下: 作为一名开源...

恋恋美食
今天
40
0
阻塞队列

对于许多线程问题, 可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插人元素, 消费者线程则取出它们。 使用队列, 可以安全地从一个线程向另 一个线程传递数据...

ytuan996
今天
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部