shell脚本实现数据库自动备份和删除备份

为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本。但是我们又不能让所有的备份一直保留,所以我们还需要删除去古老的备份。(我的操作系统版本是Linux ip-172-16-3-158 3.10.0-327.13.1.el7.x86_64,centos7)

首先,我们说linux系统的定时自动备份。据说有多种方法,我在这里使用的方法是,直接添加配置文件。我们在 /etc/crontab文件下,添加命令即可,

上面的解释很清楚,第一个参数是分钟(0 - 59),第二个参数是 小时 (0 - 23 ),第三个参数是每个月的哪一天 (0 - 31 ),第四个参数是一年中的哪一个月 (1 - 12),第五个参数是每周的周几( 0 -6) 0代表星期天(西方人认为星期天是一周的开始)。后面就是执行命令的角色,和被执行的命令。

下面我们开始编辑数据库备份脚本,(这里我们备份的数据库是postgresql的数据库)

数据库的备份命令很简单,就是

pg_dump -h IPADRESS -U user database > database.sql

这样会出现密码提示,妨碍我们执行自动化脚本,所以我在这里使用了下面的方法,在用户目录下,编辑.pgpass文件,他的格式如下

hostname:port:database:username:password

编辑好之后保存,修改权限为600
这样我们执行语句 pg_dump -h IPADRESS -U user database -w > database.sql,就不会有密码提示了

因为要每天都要备份,所以备份文件的命名是很重要的,我们按照习惯用时间作为命名
DATE=`date "+%Y-%m-%d-%H-%M-%S"`

同样,因为备份只需要保留几天的就可以了,所以我们需要将时间比较久的备份删除掉,这里我们采用的方法是
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;
意思是将4天前的/backup_db/目录下,以。.tar.gz结尾的文件,全部删除掉。这里解释下 -mtime +4 ,这个参数,
+4表示的完整的时间4天,如果我们参数值写的是 +0 ,那么从昨天这个时候到现在这个时候都是在0以内,比如现在是下午四点钟,那么昨天下午16:00:01时的文件就不在它的查询
范围内,而昨天下午 15:59:59的文件就在它的查询范围内。所以
find /backup_db/ -mtime +0 -name "*tar.gz" -exec rm -rf {} \;表示昨天下午16:00:00之前以.tar.gz结尾的文件,我们会执行删除操作,保留一天以内的。同理,
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;表示我们会保留五天以内的以.tar.gz结尾的文件,而将之前的文件全部删除。当然,不以.tar.gz结尾的文件是不在删除范围内的。
好了,这个就是我做的全部过程。


 

转载于:https://www.cnblogs.com/picap00n/p/backup.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值