개발/🖥️ 리눅스
PostgreSQL DB백업을 위한 리눅스 실행 파일(쉘 스크립트/.sh) 생성하기
병아리는삐약삐약
2024. 12. 10. 11:24
최근 리눅스 서버에 데이터 업데이트를 위한 개발환경을 구축하는 일을 하게 되었다.
우여곡절 끝에 데이터베이스까지 세팅을 완료했고, 앞으로 데이터 추가 작업을 계속해서 진행해 나갈 듯 하다.
그래서 혹시나 모를 상황에 대비하여 백업을 주기적으로 할 생각인데
기본 pg_dump로 하는 백업은 매번 하기엔 각종 옵션을 하나하나 적어줘야해서 여간 귀찮은게 아니다.
그래서 이 작업들을 미리 설정해 실행만 시킬 수 있도록 custom-dump.sh 파일을 생성해 보도록 하겠다.
백업 방식 : 스키마와 데이터를 따로 백업하고, 파일형식은 tar.gz파일로 지정했다.
예상 결과물 : dump_db명_날짜
1. 쉘 스크립트 생성
먼저 실행 파일을 원하는 경로에 생성해 주자.
vi custom-dump.sh
2. 파일 작성
#!/bin/bash
# 설정
DB_USER="admin" # PostgreSQL 백업 사용자
PASSWORD="password" # 비밀번호
HOST="localhost" # 호스트주소
PORT=15432 # db포트설정
DB_NAME="mydb" # 백업할 데이터베이스 이름
BACKUP_DIR="/path/to/backup" # 백업 파일 저장 경로
TODAY=$(date +%Y%m%d) # 오늘 날짜
# 백업 디렉토리 생성 (없을 경우)
mkdir -p "$BACKUP_DIR"
# db 백업
sudo -u postgres
export PGPASSWORD=$PASSWORD
pg_dump -U "$DB_USER" -d "$DB_NAME" -h $HOST -p $PORT | gzip > "$BACKUP_DIR/dump_$DB_NAME_$TODAY.tar.gz"
if [ $? -eq 0 ]; then
echo " $DB_NAME completed: $BACKUP_DIR/dump_$DB_NAME_$TODAY.tar.gz"
else
echo " $DB_NAME backup failed!" >&2
exit 1
fi
3. 실행 권한 부여
기본적으로 윈도우에서는 파일의 확장자를 통해 실행 파일임을 구분하지만(.bat /.exe 등)
리눅스에서 확장자는 단순 구분을 위한 것일 뿐, 실제로는 실행 권한(x) 여부에 따라 실행파일을 구분한다.
chmod +x custom-dump.sh
4. 실행
이제 한 번의 실행으로 백업파일이 경로에 저장될 것이다!
./custem-dump.sh