발행일: 2026-10-06(화) 11:44
홈›도서›하루 30분 n8n ④›백업과 재해 복구 전략
DAY 12★★★JSON 제공

백업과 재해 복구 전략

📖 이론10분
🛠️ 실습15분
🎯 미션5분

"문제를 발견하는 데 걸리는 시간이 짧을수록 손실도 작다."

— 제프 베이조스 (Jeff Bezos, 아마존 창업자)
🎯 오늘의 학습 목표
  • 3-2-1 백업 규칙을 설명하고 n8n에 적용할 수 있다.
  • 자동 백업 스크립트를 작성하고 cron으로 자동 실행을 설정할 수 있다.
  • 백업 파일로 실제 복구 테스트를 완료할 수 있다.
💡 3-2-1 백업 규칙: 3개의 복사본 / 2가지 저장 매체 / 1개는 외부 보관
📊 백업해야 할 것들
대상내용우선순위
PostgreSQL DB모든 워크플로우, 실행 기록, 크리덴셜 암호화본최고
n8n data 폴더첨부파일, 설정 파일높음
.env 파일암호화 키, 비밀번호최고
docker-compose.yml서버 구성 정보높음
자동 백업 스크립트 — ~/backup-n8n.sh
bash
#!/bin/bash
# n8n 자동 백업 스크립트
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=~/backups/n8n
N8N_DIR=~/n8n

mkdir -p $BACKUP_DIR
echo "===== n8n 백업 시작: $DATE ====="

# 1. PostgreSQL 데이터베이스 백업
echo "[1/3] DB 백업 중..."
cd $N8N_DIR
docker compose exec -T postgres pg_dump \
  -U n8n_user n8n_db > $BACKUP_DIR/db_$DATE.sql

if [ $? -eq 0 ]; then
  echo "DB 백업 완료: db_$DATE.sql ($(du -sh $BACKUP_DIR/db_$DATE.sql | cut -f1))"
else
  echo "DB 백업 실패!"
  exit 1
fi

# 2. n8n 데이터 폴더 + 설정 파일 백업
echo "[2/3] 파일 백업 중..."
tar -czf $BACKUP_DIR/files_$DATE.tar.gz \
  $N8N_DIR/data/n8n \
  $N8N_DIR/.env \
  $N8N_DIR/docker-compose.yml
echo "파일 백업 완료: files_$DATE.tar.gz"

# 3. 7일 이상 된 백업 자동 삭제
echo "[3/3] 오래된 백업 정리 중..."
find $BACKUP_DIR -mtime +7 -name "*.sql" -delete
find $BACKUP_DIR -mtime +7 -name "*.tar.gz" -delete
echo "7일 이상 된 백업 삭제 완료"

echo "===== 백업 완료: $BACKUP_DIR ====="
ls -lh $BACKUP_DIR | tail -5
스크립트 권한 부여 및 테스트
bash
chmod +x ~/backup-n8n.sh
~/backup-n8n.sh
ls -lh ~/backups/n8n/
cron 자동 실행 설정 (매일 새벽 3시)
bash
crontab -e
# 아래 줄 추가:
# 매일 새벽 3시에 n8n 백업 실행
0 3 * * * /root/backup-n8n.sh >> /root/backup-n8n.log 2>&1
복구 테스트
bash
# 1. 테스트용 DB 만들기
docker compose exec postgres psql -U n8n_user \
  -c "CREATE DATABASE n8n_test;"

# 2. 백업 파일 복원
docker compose exec -T postgres psql -U n8n_user n8n_test \
  < ~/backups/n8n/db_YYYYMMDD_HHMMSS.sql

# 3. 복원된 데이터 확인
docker compose exec postgres psql -U n8n_user n8n_test \
  -c "SELECT COUNT(*) FROM workflow_entity;"

# 4. 테스트 DB 삭제
docker compose exec postgres psql -U n8n_user \
  -c "DROP DATABASE n8n_test;"
🛠️ DAY 12 실습
Step 1백업 스크립트 작성 및 테스트
  1. nano ~/backup-n8n.sh 로 스크립트 파일 작성
  2. chmod +x ~/backup-n8n.sh 로 실행 권한 부여
  3. ~/backup-n8n.sh 실행 후 ~/backups/n8n/ 에 파일 생성 확인
Step 2cron 자동 실행 설정
  1. crontab -e 로 편집기 열기
  2. 매일 새벽 3시 실행 cron 표현식 추가
  3. crontab -l 로 등록 확인
Step 3복구 테스트 실행
  1. 테스트용 DB 생성 후 백업 파일 복원
  2. workflow_entity 테이블 카운트로 복원 확인
  3. 테스트 DB 삭제 후 복구 절차 문서화
🚀 DAY 12 미션

자동 백업 스크립트를 완성하고 실제 복구 테스트를 1회 이상 완료하세요.

☑️ 미션 체크리스트
  • 백업 스크립트 작성 및 테스트 실행 성공
  • cron 자동 실행 설정 완료 (매일 새벽 3시)
  • 백업 파일 정상 생성 확인 (DB + 파일 모두)
  • 복구 테스트 1회 완료 (workflow 카운트 확인)
💡 힌트: 백업은 했는데 복구를 안 해봤다면 백업한 게 아니에요. 반드시 복구 테스트까지 완료하세요.
🎯 성공 기준: 백업 파일로 실제 DB 복구가 성공하고 워크플로우 수가 일치하는 상태
← 이전
웹훅 보안과 접근 제어
다음 →
모니터링과 알림 시스템 구축
← 목차로 돌아가기