Project

General

Profile

Backup Restore » History » Revision 2

Revision 1 (상혁 손, 2025-10-24 17:48) → Revision 2/3 (상혁 손, 2025-10-24 17:51)

# Backup // Restore 

 podman에서 postgre database가 구동된다는 가정 
 podman container = bigdata_postgresql라면 아래와 같이 backup함 

 `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$ cat backup_postgres.sh` 
 `#!/bin/bash` 

 `# --- # `--- 설정 ---` 
 

 `CONTAINER_NAME="bigdata_postgresql"` 
 `DB_USER="spacs"` 
 `DB_NAME="polyp"` 
 `BACKUP_DIR="." # 백업 파일을 저장할 디렉토리 (현재 디렉토리)` 
 `# ------------` 

 `# 1. # `------------` 

 # `1. 오늘 날짜 (YYMMDD 형식)` 
 

 `TODAY=$(date "+%y%m%d")` 
 `BASE_FILENAME="backup_${TODAY}"` 

 `# 2. # `2. 버전 번호 자동 증가` 
 

 `COUNT=1` 
 `FINAL_FILENAME="${BACKUP_DIR}/${BASE_FILENAME}_v${COUNT}.dump"` 

 `# 파일이 # `파일이 존재하면 v(숫자)를 1씩 증가시킴` 
 

 `while [ -f "$FINAL_FILENAME" ]; do` 
 `COUNT=$((COUNT + 1))` 
 `FINAL_FILENAME="${BACKUP_DIR}/${BASE_FILENAME}_v${COUNT}.dump"` 
 `done` 

 `# 3. # `3. 백업 실행` 
 

 `echo "Starting PostgreSQL backup for database '$DB_NAME'..."` 
 `echo "Container: $CONTAINER_NAME"` 
 `echo "Saving to: $FINAL_FILENAME"` 

 `# pg_dump # `pg_dump 실행 (비밀번호를 묻게 됩니다)` 
 

 `podman exec "$CONTAINER_NAME" pg_dump -U "$DB_USER" -d "$DB_NAME" -Fc > "$FINAL_FILENAME"` 

 `# 4. # `4. 성공 여부 확인 (간단히 파일 크기 체크)` 
 

 `if [ -s "$FINAL_FILENAME" ]; then` 
 `echo "✅ Backup successful: $FINAL_FILENAME"` 
 `else` 
 `echo "❌ Backup FAILED. Check permissions, password, or Podman status."` 
 `# 실패 

 ## `실패 시 생성된 0바이트 파일 삭제` 
 

 `rm "$FINAL_FILENAME" 2>/dev/null` 
 `fi` 

 * * * 

 #### Restore 

 `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$ cat restore_postgres.sh` 
 `#!/bin/bash` 

 `echo $1` 

 `exit` 

 `podman exec -i bigdata_postgresql pg_restore -U spacs -d polyp -c < $1` 
 `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$`