Backup Restore » History » Version 2
상혁 손, 2025-10-24 17:51
| 1 | 1 | 상혁 손 | # Backup // Restore |
|---|---|---|---|
| 2 | |||
| 3 | podman에서 postgre database가 구동된다는 가정 |
||
| 4 | podman container = bigdata_postgresql라면 아래와 같이 backup함 |
||
| 5 | |||
| 6 | `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$ cat backup_postgres.sh` |
||
| 7 | `#!/bin/bash` |
||
| 8 | |||
| 9 | 2 | 상혁 손 | `# --- 설정 ---` |
| 10 | 1 | 상혁 손 | `CONTAINER_NAME="bigdata_postgresql"` |
| 11 | `DB_USER="spacs"` |
||
| 12 | `DB_NAME="polyp"` |
||
| 13 | `BACKUP_DIR="." # 백업 파일을 저장할 디렉토리 (현재 디렉토리)` |
||
| 14 | 2 | 상혁 손 | `# ------------` |
| 15 | 1 | 상혁 손 | |
| 16 | 2 | 상혁 손 | `# 1. 오늘 날짜 (YYMMDD 형식)` |
| 17 | 1 | 상혁 손 | `TODAY=$(date "+%y%m%d")` |
| 18 | `BASE_FILENAME="backup_${TODAY}"` |
||
| 19 | |||
| 20 | 2 | 상혁 손 | `# 2. 버전 번호 자동 증가` |
| 21 | 1 | 상혁 손 | `COUNT=1` |
| 22 | `FINAL_FILENAME="${BACKUP_DIR}/${BASE_FILENAME}_v${COUNT}.dump"` |
||
| 23 | |||
| 24 | 2 | 상혁 손 | `# 파일이 존재하면 v(숫자)를 1씩 증가시킴` |
| 25 | 1 | 상혁 손 | `while [ -f "$FINAL_FILENAME" ]; do` |
| 26 | `COUNT=$((COUNT + 1))` |
||
| 27 | `FINAL_FILENAME="${BACKUP_DIR}/${BASE_FILENAME}_v${COUNT}.dump"` |
||
| 28 | `done` |
||
| 29 | |||
| 30 | 2 | 상혁 손 | `# 3. 백업 실행` |
| 31 | 1 | 상혁 손 | `echo "Starting PostgreSQL backup for database '$DB_NAME'..."` |
| 32 | `echo "Container: $CONTAINER_NAME"` |
||
| 33 | `echo "Saving to: $FINAL_FILENAME"` |
||
| 34 | |||
| 35 | 2 | 상혁 손 | `# pg_dump 실행 (비밀번호를 묻게 됩니다)` |
| 36 | 1 | 상혁 손 | `podman exec "$CONTAINER_NAME" pg_dump -U "$DB_USER" -d "$DB_NAME" -Fc > "$FINAL_FILENAME"` |
| 37 | |||
| 38 | 2 | 상혁 손 | `# 4. 성공 여부 확인 (간단히 파일 크기 체크)` |
| 39 | 1 | 상혁 손 | `if [ -s "$FINAL_FILENAME" ]; then` |
| 40 | `echo "✅ Backup successful: $FINAL_FILENAME"` |
||
| 41 | `else` |
||
| 42 | `echo "❌ Backup FAILED. Check permissions, password, or Podman status."` |
||
| 43 | 2 | 상혁 손 | `# 실패 시 생성된 0바이트 파일 삭제` |
| 44 | 1 | 상혁 손 | `rm "$FINAL_FILENAME" 2>/dev/null` |
| 45 | `fi` |
||
| 46 | |||
| 47 | * * * |
||
| 48 | |||
| 49 | #### Restore |
||
| 50 | |||
| 51 | `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$ cat restore_postgres.sh` |
||
| 52 | `#!/bin/bash` |
||
| 53 | |||
| 54 | `echo $1` |
||
| 55 | |||
| 56 | `exit` |
||
| 57 | |||
| 58 | `podman exec -i bigdata_postgresql pg_restore -U spacs -d polyp -c < $1` |
||
| 59 | `ssd@SSD-SERVER:/work/podman/bigdata-server_v2/backup$` |