Project

General

Profile

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