数据库备份是系统安全的重要保障。
但持续的备份会使磁盘空间越来越小,若运维不及时,可能导致磁盘写满、服务器宕机的事故。
因此在备份脚本中加入了代码,删除 7 天前的老备份。
PostgreSQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| @ECHO OFF echo ================================================ echo Windows环境下PostgreSQL数据库的自动备份脚本 echo 1. 使用当前日期命名备份文件。 echo 2. 自动删除7天前的备份。 echo ================================================ ::PGPATH - PostgreSQL路径 SET PGPATH=C:\"Program Files"\PostgreSQL\9.1\bin\ ::SVPATH - 备份文件路径 SET SVPATH=f:\ ::PRJDB - 要备份的数据库名 SET PRJDB=demo ::DBUSR - 数据库用户名 SET DBUSR=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%.sql @ECHO OFF %PGPATH%pg_dump -h localhost -p 5432 -U postgres %PRJDB% > %SVPATH%%DBDUMP% echo Backup Taken Complete %SVPATH%%DBDUMP% ::删除7天前的备份。 forfiles /p "%DATADIR%" /m *.sql /d -7 /c "cmd /c del @path"
|
Oracle
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo 1. 使用当前日期命名备份文件。 echo 2. 自动删除7天前的备份。 echo ================================================ ::以“YYYYMMDD”格式取出当前时间。 set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2% ::设置用户名、密码和要备份的数据库。 set USER=usr1 set PASSWORD=psw1 set DATABASE=orcl set DATADIR=E:\app\Administrator\admin\ORCL\dpdump ::删除7天前的备份。 forfiles /p "%DATADIR%" /m *.dmp /d -7 /c "cmd /c del @path" expdp %USER%/%PASSWORD%@%DATABASE% dumpfile=%BACKUPDATE%_%USER%.dmp logfile=%BACKUPDATE%_%USER%.log schemas=%USER% exit
|