这里以PostgreSQL数据库为例,其实备份直接用pg_dump命令就行了,之所以这么麻烦是为了支持输密码这个步骤。
一、版本说明
系统版本:Alibaba Cloud Linux 3.2104 LTS 64位 (这里可视同CentOS,其他系统自行参考)
数据库版本:PostgreSQL 14.10
二、安装工具
安装expect,执行:
yum install expect
等待安装完成即可。
三、实现脚本
#!/usr/bin/expect
set ct [clock format [clock seconds] -format "%Y%m%d"]
set pwd woshimima
spawn pg_dump -U 用户名 数据库名 -f /存放路径/${ct}.sql
expect "*Password*" {send "${pwd}\r"} #这里也可能是中文的“*密码*”,看系统语言
expect eof
spawn find /存放路径 -type f -mtime +6 -delete # 删除6天前的旧备份
exit
这里实现一个脚本,用当天的年月日来命名备份文件,并且删除旧备份。expect的作用就是当识别到需要输入密码时,帮你输一下密码。把它保存为.sh文件。
四、配置
定时执行就直接用crontab来实现了,定义为每天0点执行一次。
0 0 * * * /usr/bin/expect /存放路径/备份脚本.sh
脚本写完也可以直接用以上命令运行看看,如果不成功注意看看是不是文件夹没有创建或者没有权限。