treeru.com
스토리지

다중 서버 백업·복구 전략 — rsync Pull 기반 자동 백업과 재해 복구

2026-03-04
Treeru

서버가 죽는 건 시간 문제입니다. 정전, 디스크 고장, 랜섬웨어 — 어떤 이유든 데이터는 사라집니다. 백업은 "할까 말까"가 아니라 "얼마나 빨리 복구할 수 있느냐"의 문제입니다. 다중 서버 환경에서 rsync Pull 방식으로 자동 백업하고, SMART로 디스크 건강을 감시하고, 어떤 서버가 죽어도 빈 서버에 재구축하는 절차를 정리합니다.백업 서버 하드웨어는 이전 글에서 다뤘으니, 이 글은 운영 전략과 자동화에 집중합니다.

Pull 방식

백업 서버가 직접 수집

flock

동시 실행 방지

30분

SMART 체크 주기

수동 복구

사람이 확인 후 실행

백업이 필요한 진짜 이유

정전은 UPS로 버틸 수 있고, 네트워크 장애는 재부팅으로 해결됩니다. 진짜 무서운 건 디스크의 물리적 고장입니다. HDD의 연간 고장률(AFR)은 1~3%입니다. 서버 10대를 3년 운영하면 1대 이상에서 디스크 고장이 발생할 확률이 26~60%입니다.

백업 없이 발생 가능한 시나리오

높음
OS 디스크 고장운영체제 + 설정 파일 전부 소실. 서버 재구축에 1~2일
치명
데이터 디스크 고장DB, 모델 파일, 사용자 데이터 영구 소실
치명
랜섬웨어 감염전체 파일 암호화. 백업 없으면 복구 불가
높음
실수로 rm -rf복구 불가. 백업에서만 복원 가능
높음
RAID 컨트롤러 고장RAID 어레이 전체 접근 불가. 재구축 필요

Pull vs Push

서버 백업 방식은 크게 Push(운영 서버가 백업 서버에 보냄)와 Pull(백업 서버가 운영 서버에서 가져옴)로 나뉩니다. Pull 방식을 선택한 이유는 보안과 중앙 관리입니다.

Push 방식 ✗

운영 서버에 백업 스크립트 필요
운영 서버가 백업 서버 SSH 키를 보유
운영 서버 해킹 시 백업도 위험
서버마다 스크립트 버전 관리 필요
백업 실패 시 개별 서버에서 디버깅

Pull 방식 ✓

백업 서버에서 모든 스크립트 중앙 관리
운영 서버는 읽기 전용 SSH 키만 허용
운영 서버 해킹돼도 백업 서버 접근 불가
백업 스케줄 한 곳에서 통합 관리
백업 실패 시 한 곳에서 로그 확인

Pull 방식의 핵심은 "운영 서버는 백업에 대해 아무것도 모른다"는 것입니다. 백업 서버가 SSH 키로 운영 서버에 접속해 rsync로 데이터를 가져옵니다. 운영 서버 입장에서는 평소와 다름없이 SSH 접속을 허용할 뿐이며, 백업 스크립트가 존재하지 않으므로 공격자가 운영 서버를 장악해도 백업을 손상시킬 수 없습니다.

rsync 스크립트 설계

rsync의 --archive --compress --delete 옵션으로 증분 백업을 수행합니다. 변경된 파일만 전송하므로 첫 백업 이후에는 수 분 이내에 완료됩니다.

스크립트 핵심 구조

증분 백업rsync --archive로 타임스탬프 비교, 변경 파일만 전송. 첫 백업 이후 전송량 90% 이상 감소
flock 잠금flock /var/lock/backup.lock으로 동시 실행 방지. 이전 백업이 끝나지 않았으면 새 백업 건너뜀
로그 기록시작/종료 시간, 전송 파일 수, 전송 크기, 오류 여부를 /var/log/backup/에 일별 파일로 기록
오류 알림rsync exit code가 0이 아니면 즉시 알림 발송. 네트워크 타임아웃, 디스크 공간 부족 등 감지
제외 패턴--exclude로 임시 파일, 캐시, 로그 순환 파일 제외. 불필요한 전송 방지

--delete 옵션의 주의점: 운영 서버에서 삭제된 파일을 백업에서도 삭제합니다. 실수로 운영 서버에서 파일을 지우면 다음 백업 때 백업에서도 사라집니다. 이를 방지하기 위해 --backup --backup-dir로 삭제 파일을 별도 디렉터리에 7일간 보관합니다. 7일 이내에 발견하면 복구 가능합니다.

cron 스케줄 설계

다중 서버를 동시에 백업하면 네트워크 대역폭과 디스크 I/O가 겹칩니다. 서버별로 시간을 분리해 백업 윈도우 충돌을 방지합니다.

시간대상백업 내용예상 소요
02:00웹 서버Next.js 소스, 정적 에셋, PM2 설정~5분
02:30DB 서버PostgreSQL 덤프 + WAL 아카이브~15분
03:00AI 추론 서버모델 가중치, SGLang 설정, LoRA 어댑터~30분
04:00모니터링 서버Prometheus 데이터, Grafana 대시보드~10분
04:30VPN/방화벽 서버WireGuard 설정, OPNsense 백업~2분

30분 간격으로 배치하면 이전 백업이 완료된 후 다음 백업이 시작됩니다. AI 추론 서버의 모델 파일이 가장 크지만(수십 GB), 모델 변경이 없으면 rsync 증분이라 실제 전송은 수 MB입니다. flock이 있으므로 만약 이전 백업이 늦어져도 다음 백업과 충돌하지 않습니다.

HDD 건강 감시

백업 디스크가 죽으면 백업이 의미 없습니다. WD Red Pro 10TB × 3의 SMART 상태를 30분마다 자동 체크하고, Grafana에서 실시간 모니터링합니다.

SMART 모니터링 체계

Short 테스트매주 일요일 06:00

빠른 표면 스캔으로 명백한 결함 감지

Long 테스트매주 수요일 02:00

전체 표면 정밀 스캔. 잠재적 배드섹터 발견

SMART 값 수집30분마다

Reallocated_Sector, Current_Pending, Temperature 추적

임계값 알림실시간

Reallocated_Sector > 0 또는 Temperature > 55°C 시 즉시 알림

가장 중요한 SMART 지표는 Reallocated_Sector_Ct(재할당된 섹터 수)입니다. 이 값이 0에서 1로 바뀌는 순간이 디스크 교체 타이밍입니다. "아직 동작하니까 괜찮다"가 아니라, "재할당이 시작됐으면 곧 더 많아진다"는 전제로 움직입니다. 디스크 가격보다 데이터 소실 비용이 압도적으로 크기 때문입니다.

재해 복구 계획

재해 복구에서 가장 중요한 원칙은 "전자동 복구를 하지 않는다"입니다. 자동 복구는 잘못 트리거될 위험이 있습니다. 네트워크 순단을 장애로 오판하고 정상 데이터를 백업 데이터로 덮어쓸 수 있습니다. 사람이 상황을 확인하고, 복구 범위를 판단한 후, 명시적으로 복구를 실행합니다.

시나리오 1: 서비스 프로세스 크래시
낮음RTO: 5분
  1. 1.서비스 상태 확인 (systemctl status)
  2. 2.로그 분석 (journalctl)
  3. 3.프로세스 재시작
  4. 4.모니터링 확인
시나리오 2: OS 디스크 고장
높음RTO: 2~4시간
  1. 1.새 디스크에 OS 설치
  2. 2.백업에서 /etc, /home 복원
  3. 3.서비스 패키지 재설치
  4. 4.설정 파일 복원 및 서비스 시작
시나리오 3: 데이터 디스크 고장
높음RTO: 4~8시간
  1. 1.새 디스크 장착 및 파티셔닝
  2. 2.백업 서버에서 rsync로 전체 데이터 복원
  3. 3.DB 복구 (WAL 리플레이)
  4. 4.데이터 무결성 검증
시나리오 4: 서버 전체 물리적 고장
치명RTO: 8~24시간
  1. 1.예비 서버 또는 새 서버 준비
  2. 2.OS + 기본 환경 구축
  3. 3.백업에서 전체 데이터 복원
  4. 4.DNS 변경으로 트래픽 전환
  5. 5.서비스 정상 동작 검증

DNS 변경이 복구의 마지막 단계입니다. 서버 IP가 바뀌면 Caddy 리버스 프록시의 upstream을 변경하거나, DNS A 레코드를 업데이트합니다. 이 과정을 자동화하지 않는 이유는, 잘못된 IP로 전환하면 전체 서비스가 다운되기 때문입니다. 복구 후 충분히 검증한 뒤 수동으로 전환합니다.

실전 교훈

백업 서버 구축 과정에서 Seagate IronWolf 12TB에서 WD Red Pro 10TB로 교체한 경험입니다.

SMART 경고를 무시하지 마라

IronWolf 12TB에서 Reallocated_Sector가 2개 발생. "아직 동작하니까"라고 넘겼다가, 2주 후 8개로 증가. 즉시 교체 결정. 교체 완료 시점에 12개까지 늘어남

NAS HDD는 진동에 민감하다

서버 랙에 3대를 나란히 배치했더니 진동이 전달되어 SMART Current_Pending 경고 발생. 고무 마운팅으로 진동 절연 후 해결

백업 복원 테스트를 주기적으로 하라

백업이 매일 돌아가는 것을 확인하는 것과, 실제로 복원해보는 것은 다른 문제. 분기 1회 복원 테스트로 복구 절차를 검증

백업 서버 자체의 백업도 고려하라

백업 서버 디스크가 고장나면 모든 백업이 소실. WD Red Pro 3대에 데이터를 분산 저장하고, 중요 데이터는 2대에 이중 저장

정리

🔄

Pull 방식: 백업 서버가 중앙에서 통제. 운영 서버는 백업에 대해 모름

🔒

flock: 동시 실행 방지로 백업 충돌 방지. 이전 백업 미완료 시 건너뜀

cron 분리: 서버별 30분 간격 배치. 네트워크/디스크 I/O 경합 방지

💾

SMART 감시: 30분 주기 체크, Reallocated_Sector > 0이면 즉시 교체

🛡️

수동 복구: 전자동 복구 금지. 사람이 확인하고 명시적으로 실행

📋

복원 테스트: 분기 1회 실제 복원으로 절차 검증

백업은 "보험"이 아니라 "인프라"입니다. 서버가 죽었을 때 "얼마나 빨리 복구할 수 있느냐"가 백업 시스템의 성능입니다. rsync Pull + flock + SMART + 수동 복구 절차 — 이 네 가지를 갖추면, 어떤 서버가 죽어도 반나절 이내에 서비스를 복원할 수 있습니다.

T

Treeru

웹 개발, IT 인프라, AI 솔루션 분야의 실무 인사이트를 공유합니다. 기업의 디지털 전환을 돕는 IT 파트너, Treeru입니다.

공유

댓글

(4개)
4.85/ 5

로그인하면 댓글을 작성할 수 있습니다.

2026-03-04
555.0

Pull 방식의 보안 이점이 명확하게 정리되어 있습니다. 운영 서버에 백업 스크립트를 두지 않는 것만으로도 공격 표면이 줄어드니까요. flock 동시 실행 방지도 실전에서 필수입니다.

2026-03-04
4.954.9

SMART 모니터링 + Grafana 연동 부분이 유용합니다. 디스크가 죽기 전에 교체할 수 있는 시간을 확보하는 게 백업의 핵심이니까요. 30분 주기면 충분하겠네요.

2026-03-04
4.854.8

재해 복구에서 '전자동 복구를 하지 않는다'는 판단이 인상적입니다. 자동 복구가 잘못 트리거되면 오히려 데이터가 덮어씌워지는 사고가 날 수 있거든요. 사람이 확인하고 복구하는 게 맞습니다.

관련 글

© 2026 TreeRU. All rights reserved.

본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.