PostgreSQL 每天定时备份本机数据库脚本
一般后端开发时,有可能因为各种各样的原因造成 最新 数据库 丢失 的问题,假如又刚好忘记了备份,那内心是相当绝望的。
所以,数据库的自动备份必须的,比较好的办法可以借助语言的框架系统进行备份,比如利用 TP5 框架针对 MYSQL 数据库的备份。
这里则主要可以利用系统自带的 定时任务 做一个每天定时自动备份的脚本,这种方法属于比较 古老 的了,也只是针对本机。
环境: win10
数据库: PostgreSQL
思路:利用 .vbs
文件(这是隐藏执行文件,一般会跳出临时窗口,他将打印执行信息,完成之后自动消失)指向 .bat
文件,再利用 windows系统的定时任务 即可。
.bat
文件代码如下:
@ECHO OFF
@setlocal enableextensions
@cd /d "%~dp0"
SET PGPATH=D:\"Program Files (x86)"\PostgreSQL\9.5\bin\pg_dump
SET SVPATH=D:\Program Files (x86)\PostgreSQL\Auto_Backup\
for %%x in ("%SVPATH%") do set SVPATH=%%~sx
SET PRJDB=test
SET DBUSR=postgres
SET DBROLE=postgres
FOR /F "TOKENS=1,2,3 DELIMS=/ " %%i IN ('DATE /T') DO SET d=%%i-%%j-%%k
FOR /F "TOKENS=1,2,3 DELIMS=: " %%i IN ('TIME /T') DO SET t=%%i%%j%%k
SET DBDUMP=%PRJDB%_%d%_%t%.backup
@ECHO OFF
%PGPATH% -h localhost -p 5432 -U %DBUSR% --role %DBROLE% -w -F c -b -v -f "%SVPATH%%DBDUMP%" %PRJDB%
echo Backup Taken Complete %SVPATH%%DBDUMP%
.vbs
文件代码如下,真正执行自动备份功能的文件还是 .bat
文件,它只是指向了执行 .bat 文件的路径而已:
set ws=WScript.CreateObject("WScript.Shell")
ws.Run """D:\Program Files (x86)\PostgreSQL\automatic_backup.bat""",0
.bat
文件名称: automatic_backup.bat
.vbs
文件名称: automatic_backup.vbs
文件名称包括保存路径都应当根据实际情况来配置。
注意
:路径下需要的文件夹应当先创建
一般情况下,如果你想自动完全隐藏,定时任务指向 .vbs
文件路径,否则指向 .bat
文件,bat 文件会将窗口保留不会自动消失,直至你本人手动关闭。所以一般使用 vbs 文件。
文件结构一览:
Auto_Backup 目录下存放的就是备份文件:
系统定时任务网上有很多,这里就不阐述了,我这里是每天下午 4 时进行一次备份: