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$`