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