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