원샷: pg_dump 백업 + gzip + 보관 기간(rotate)

PostgreSQL 단일 DB를 pg_dump로 백업하고, 압축/삭제 기준까지 포함한 스크립트

분야: 데이터베이스 postgresbackuppg-dumpops

관련 가이드: 백업 설계: 복구 가능 + secrets 제외

관련 용어: pg_dump

스크립트 예시

인증은 ~/.pgpass 또는 전용 계정/권한으로 분리하는 편이 안전합니다.

export DB_NAME="appdb"
export OUT_DIR="/var/backups/postgres"
export KEEP_DAYS="7"

sudo bash -euo pipefail <<'BASH'
set -euo pipefail

: "${DB_NAME:?DB_NAME is required}"
: "${OUT_DIR:?OUT_DIR is required}"
: "${KEEP_DAYS:?KEEP_DAYS is required}"

ts="$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUT_DIR"

pg_dump --format=custom --no-owner --no-privileges "$DB_NAME" \
  | gzip -9 >"$OUT_DIR/${DB_NAME}_${ts}.dump.gz"

find "$OUT_DIR" -type f -name "${DB_NAME}_*.dump.gz" -mtime +"$KEEP_DAYS" -delete

echo "done: $OUT_DIR/${DB_NAME}_${ts}.dump.gz"
BASH

복구 리허설(최소)

createdb restore_test
gunzip -c /var/backups/postgres/appdb_YYYYMMDD_HHMMSS.dump.gz | pg_restore -d restore_test

같은 분야의 템플릿