postgresql windows 自动备份
发布时间:2020-12-13 17:38:24 所属栏目:百科 来源:网络整理
导读:windows下postgresql 自动备份脚本,采用bat批处理脚本编写,windows任务计划定时执行。 每天备份一次,主要采用pg_dump 备份指定库,同时删除 7 天以前的备份文件。 @echo off@setlocal enableextensions @cd /d "%~dp0"set PGHOME="D:Program FilesPostg
windows下postgresql 自动备份脚本,采用bat批处理脚本编写,windows任务计划定时执行。 每天备份一次,主要采用pg_dump 备份指定库,同时删除 7 天以前的备份文件。 @echo off @setlocal enableextensions @cd /d "%~dp0" set PGHOME="D:Program FilesPostgreSQL9.2bin" set PGDATA="D:Program FilesPostgreSQL9.2data" set BACKUP_DIR="E:lierbackuptest" set day=%date% :: 提取日期 for /f "tokens=1-3 delims=-/. " %%i in ("%day%") do ( set /a sy=%%i,sm=100%%j %% 100,sd=100%%k %% 100 ) set DATE_1=%sy%-%sm:~-2%-%sd:~-2% ::echo %DATE_1% ::pause>nul :: 7天前 set /a sd-=7 if %sd% leq 0 call :count set DATE_2=%sy%-%sm:~-2%-%sd:~-2% if exist %BACKUP_DIR%db_lier_back_%DATE_2% (del /f %BACKUP_DIR%db_lier_back_%DATE_2%) if not exist %BACKUP_DIR%db_lier_back_%DATE_1% (%PGHOME%pg_dump.exe -h localhost -p 5432 -U postgres -b -Fp lierserver > %BACKUP_DIR%db_lier_back_%DATE_1%) :count set /a sm-=1 if !sm! equ 0 set /a sm=12,sy-=1 call :days set /a sd+=days if %sd% leq 0 goto count goto :eof :days :: 获取指定月份的总天数 set /a leap="^!(sy %% 4) & ^!(^!(sy %% 100)) | ^!(sy %% 400)" set /a max=28+leap for /f "tokens=%sm%" %%i in ("31 %max% 31 30 31 30 31 31 30 31 30 31") do set days=%%i goto :eof在设置任务计划时,有几个注意点: 1.Task Scheduler系统服务要自动启动 2. 任务计划的执行用户为有密码账户 3. 执行用户为当前系统运行用户,否者pg_dump命令堵塞。这一点谁知道怎么解决 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |