Project

General

Profile

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