windows postgresql 定时任务启动备份脚本bat及无法自动输入密码等问题解决

1 篇文章 0 订阅
1 篇文章 0 订阅

windows postgresql 定时任务启动备份脚本bat及无法自动输入密码等问题解决


随着在windows服务器上写了个每日自动备份postgre图斑数据的脚本,,但是在运行时出现了一些问题,这里总结下:


一、密码无法自动输入问题解决

在pgsql中我这里是使用pg_dump 进行的备份,不论是定时任务还是手动双击bat,都需要输入密码,,但是windows cmd命令中 pg_dump备份不能出现密码,导致无法自动去执行bat
解决:创建一个pgpass.conf文件,在里面写入自己的相应的:

ip:port:db:user:pwd

例如我的:

127.0.0.1:5432:test:postgres:xxxx

将文件复制到要执行的用户目录,我这里是Administrator执行(AppData为隐藏文件夹,需要查看时打开可查看隐藏文件):C:\Users\Administrator\AppData\Roaming\postgresql\pgpass.conf(没那个目录就新建)
这时候就好了

二、手动运行可以,定时任务执行出错

造成这个的原因是:bat脚本文件在c盘以外的盘符放着(比如d盘某目录下)
双击时手动启动时,你肯定在d盘目录下运行的,这时cmd默认启动是在d盘
而定时任务默认是打开c盘下启动,这时候就会运行出错
解决:
只需要将在脚本中切换一下盘符就行
例如我下面脚本中的d:

三、可使用的完整的bat备份脚本

@echo off
set host="127.0.0.1"
set port="5432"
set db_name="test"
set db_user="postgres"
::备份目录
set backup_dir="D:\backup_dir"
::windows cmd窗口无法直接从c盘跳转至d盘的相关目录,这里需要先切换盘符
d:
::windows日期格式
set currData=%date:~0,4%-%date:~5,2%-%date:~8,2%
::进入pgsql目录
cd "D:\Program Files\PostgreSQL\10\bin"
::pgsql 备份的命令,注意有空格和没有空格
pg_dump -h %host% -p %port% -U %db_user% -Ft %db_name%> %backup_dir%\%db_name%-%currData%.tar
echo "your database backup success"
::这里将30天之前的备份文件删掉
cd %backup_dir%
forfiles /p "." /s /m *.tar -d -30 /c "cmd /c del /f @file"
@echo on

-Ft 是输出tar图斑文件要传输的
-d -30是30天前,,保留一天前的就是 -1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值