为了保障数据安全,决定搞一个定时备份post数据库的脚本,但公司的post数据库是在docker里部署的,网上找的解决方案post数据库都是直接部署的,并没有放到docker中,遂自己整理一个。
直接上脚本
新建一个backup.txt文件,输入下方shell脚本
#!/bin/bash
# 备份存放位置
BACKUP_DIR=/home/pgdata/
# 如果不存在就创建
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p "$BACKUP_DIR"
fi
cd $BACKUP_DIR
# 删除7天之前的备份
deleteDIR=$(date --date='7 day ago' +%Y-%m-%d)
rm -rf $deleteDIR
# 假设每天凌晨执行 备份数据文件夹名为昨日 yyyy-MM-dd 格式
dateDIR=$(date --date='1 day ago' +%Y-%m-%d)
mkdir $dateDIR
# 备份指定的数据库,可以是多个数据库,也可以是多个表
backupDB=(public.cfgl_cfjh_tb public.cfgl_cfht_tb)
backupDBArr=$(echo ${backupDB[@]})
# 使用压缩转储数据库(这一步至关重要,docker exec postgresql是进入容器,-w 是从不发出一个口令提示,即不需要输入数据库连接密码即可备份数据)
for i in $backupDBArr; do
docker exec postgresql pg_dump -U postgres -w lydb -t $i | gzip > $BACKUP_DIR$dateDIR/${i}_${dateD