Ruby&Rails---定时备份数据库并且删除旧数据库

参考文章:
http://blog.csdn.net/w20101310/article/details/78874986
http://blog.csdn.net/fanzhang1990/article/details/34886819

这边使用的是PG数据库,环境是Ubuntu。

步骤1:在用户根目录下生成 .pgpass的文件

如在 /home/hpd/.pgpass

localhost:5432:dbname:username:password

注意:这一行的最后一定要回车。不然密码还是错误的。

步骤2:修改.pgpass的文件权限

chmod 0600 .pgpass

测试,然后再直接输入,就不再需要密码

psql -h localhost dbname username

步骤2:编写备份数据库的命令

会生成一个如2018-3-08.bak的文件

DATE=`date "+%Y-%m-%d"`
pg_dump -h localhost -U username dbname > /home/hpd/db/$(DATE).bak

步骤3:编写用于删除过期文件的命令

会把一周之前的数据库备份全部删除

find /home/hpd/ -mtime +7 -name "*.bak" -exec rm -rf {} \;

把全部步骤的代码集成在一个db_backup_and_clear.sh文件中

#!/bin/bash
. /etc/profile
. ~/.bash_profile
DATE=`date "+%Y-%m-%d"`
pg_dump -h localhost -U username dbname> /home/hpd/db/$(DATE).bak
find /home/hpd/db_backup -mtime +7 -name "*.bak" -exec rm -rf {} \;

步骤4:赋予权限

#chmod 777 db_backup_and_clear.sh

步骤5:加入crontab的定时任务中

表示每天的2点开始执行该脚本

图片.png

恢复数据库

要先有这个数据库,可以没有表

psql -h localhost -U username -d dbname < /home/hpd/db_backup/2018-03-08.bak

你可能感兴趣的:(Ruby&Rails---定时备份数据库并且删除旧数据库)