"문제를 발견하는 데 걸리는 시간이 짧을수록 손실도 작다."
— 제프 베이조스 (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백업 스크립트 작성 및 테스트
- nano ~/backup-n8n.sh 로 스크립트 파일 작성
- chmod +x ~/backup-n8n.sh 로 실행 권한 부여
- ~/backup-n8n.sh 실행 후 ~/backups/n8n/ 에 파일 생성 확인
Step 2cron 자동 실행 설정
- crontab -e 로 편집기 열기
- 매일 새벽 3시 실행 cron 표현식 추가
- crontab -l 로 등록 확인
Step 3복구 테스트 실행
- 테스트용 DB 생성 후 백업 파일 복원
- workflow_entity 테이블 카운트로 복원 확인
- 테스트 DB 삭제 후 복구 절차 문서화
🚀 DAY 12 미션자동 백업 스크립트를 완성하고 실제 복구 테스트를 1회 이상 완료하세요.
☑️ 미션 체크리스트- 백업 스크립트 작성 및 테스트 실행 성공
- cron 자동 실행 설정 완료 (매일 새벽 3시)
- 백업 파일 정상 생성 확인 (DB + 파일 모두)
- 복구 테스트 1회 완료 (workflow 카운트 확인)
💡 힌트: 백업은 했는데 복구를 안 해봤다면 백업한 게 아니에요. 반드시 복구 테스트까지 완료하세요.
🎯 성공 기준: 백업 파일로 실제 DB 복구가 성공하고 워크플로우 수가 일치하는 상태