Project

General

Profile

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