스케줄링 crontab
•
매일 새벽 1시 수행
postgres@bd706b984fcb:~/work/devpg_backup/shell$ crontab -l
####### devpg dump
0 1 * * * sh /var/lib/postgresql/work/devpg_backup/shell/devpg_backup.sh
SQL
복사
스크립트
•
5일전 백업 본 삭제 후 pg_dump 유틸을 통해 백업 수행
postgres@bd706b984fcb:~/work$ tree devpg_backup/
devpg_backup/
|-- dump # 백업 파일 경로
| `-- 20220727_backup.dump
|-- log # 로그 파일 경로
| `-- 20220727_backup.log
`-- shell # 백업 스크립트
`-- devpg_backup.sh
Bash
복사
postgres@bd706b984fcb:~/work$ cat devpg_backup/shell/devpg_backup.sh
#!/bin/bash
BK_DUMP_SHELL="/var/lib/postgresql/work/devpg_backup/shell"
BK_DUMP_LOG="/var/lib/postgresql/work/devpg_backup/log"
BK_DUMP_PATH="/var/lib/postgresql/work/devpg_backup/dump"
RM_DUMP_DT=`date +%Y%m%d -d "-5 days"`
RM_DUMP_FILE=$BK_DUMP_PATH/$RM_DUMP_DT"_backup.dump"
BK_DUMP_DT=`date +%Y%m%d`
BK_DUMP_DUMP_LOG="$BK_DUMP_LOG"/"$BK_DUMP_DT"_backup.log
FN_REMOVE_DUMP(){
echo "# remove backup dump"
if [ -e "$RM_DUMP_FILE" ]
then
ls -lrt $BK_DUMP_PATH
echo "- remove start"
echo "- remove file: "$RM_DUMP_FILE
rm -rf $RM_DUMP_FILE
echo "- remove end"
echo
else
ls -lrt $BK_DUMP_PATH
echo "- remove none"
echo
fi
echo
echo
}
FN_PG_DUMP(){
echo "# backup start"
echo "# detail"
pg_dump -f "$BK_DUMP_PATH"/"$BK_DUMP_DT"_backup.dump -h localhost -p 5432 -v -U postgres devpg 2>> $BK_DUMP_DUMP_LOG
ls -lrt $BK_DUMP_PATH
echo "# backup end"
}
echo "########## postgresql BACKUP DUMP" > $BK_DUMP_DUMP_LOG
FN_REMOVE_DUMP >> $BK_DUMP_DUMP_LOG
FN_PG_DUMP >> $BK_DUMP_DUMP_LOG
Bash
복사