백업 및 복구 가이드

서버 운영에서 가장 큰 위험은 데이터 손실입니다.
정기적인 백업 전략을 수립해야 장애·랜섬웨어·실수에 의한 손실을 방지할 수 있습니다.

백업 전략 — 3-2-1 규칙

업계 표준인 3-2-1 백업 전략은 가장 검증된 방식입니다.

3

총 3개의 사본

원본 1개 + 백업 2개로 총 3벌의 데이터를 유지합니다.

2

2개의 다른 매체

서버 디스크 + 외부 스토리지(NAS, 클라우드) 등 매체를 분산합니다.

1

1개는 원격지 보관

물리적으로 분리된 위치(외부 클라우드)에 1개를 보관합니다.

실전 팁: 데이터 변경이 잦으면 일 1회 자동 백업, 정적 데이터라면 주 1회를 기준으로 시작하세요. 백업본은 최소 7일 ~ 30일 보관하는 것이 일반적입니다.

Ubuntu 자동 백업

📦 1. tar 로 디렉토리 압축 백업

/var/www,/etc 등 중요 폴더를 단일 압축 파일로 만듭니다.

/var/www 백업
$tar -czf /backup/www-$(date +%Y%m%d).tar.gz /var/www

🔁 2. rsync 로 증분 동기화

변경된 파일만 복사하므로 빠르고, 외부 백업 서버로 직접 전송할 수 있습니다.

원격 서버로 백업
$rsync -avz --delete /var/www/ [email protected]:/backup/www/

--delete: 원본에 없는 파일을 백업본에서도 삭제(미러링).
-z: 전송 중 압축, -a: 권한·타임스탬프 보존

⏰ 3. cron 으로 자동화 (매일 새벽 3시)

crontab -e로 편집기 진입 후 한 줄 추가:

cron 등록 예시
0 3 * * * tar -czf /backup/www-$(date +\%Y\%m\%d).tar.gz /var/www

주의: cron 안에서는 % 가 줄바꿈 의미를 가지므로 \%로 이스케이프 필요.

🗄️ 4. MySQL/PostgreSQL 데이터베이스 백업

MySQL/MariaDB

단일 DB 덤프
$mysqldump -u root -p mydb > /backup/mydb-$(date +%Y%m%d).sql

PostgreSQL

단일 DB 덤프
$pg_dump mydb > /backup/mydb-$(date +%Y%m%d).sql

Windows Server 백업

📁 1. Robocopy 로 폴더 미러링

Windows 기본 도구로, 변경된 파일만 빠르게 복사합니다.

C:\data → D:\backup 미러
robocopy C:\data D:\backup /MIR /R:1 /W:5 /LOG:C:\backup\robocopy.log

/MIR: 미러링 (원본=백업본), /R:1: 실패 시 재시도 1회, /W:5: 재시도 대기 5초

⏰ 2. 작업 스케줄러로 자동화

  1. 시작 메뉴 → 작업 스케줄러 실행
  2. 오른쪽 패널에서 "기본 작업 만들기" 클릭
  3. 이름: Daily Backup 입력
  4. 트리거: 매일 선택, 시간 지정 (예: 03:00)
  5. 동작: 프로그램 시작robocopy.exe, 인수 입력

💿 3. Windows Server Backup (전체 시스템)

OS·시스템 상태까지 통째로 백업하려면 Windows Server 기본 기능을 사용합니다.

서버 관리자역할 및 기능 추가Windows Server Backup 설치 후 제어판에서 일정 백업을 구성합니다.

복구 절차

Ubuntu (tar 복원)

압축 파일 풀기
$tar -xzf /backup/www-20260101.tar.gz -C /

Windows (Robocopy 역방향)

백업본 → 원본 복사
robocopy D:\backup C:\data /MIR

중요: 백업이 정상적으로 복원되는지 월 1회 이상 모의 복구 테스트를 진행해주세요. 백업 파일 손상은 사고 발생 시점에서야 발견되는 경우가 많습니다.

백업 운영 체크리스트

  • 스토리지 용량 모니터링: 백업 디렉토리 용량을 주간 단위로 점검하세요.
  • 오래된 백업 자동 정리: 30일 초과 백업은 find /backup -mtime +30 -delete 로 정리.
  • 암호화: 민감 데이터는 gpg 또는 압축 암호로 보호.
  • 외부 보관: AWS S3, Backblaze B2, NAS 등 별도 위치에 1부 이상 보관.
  • 실패 알림: cron/스케줄러 결과를 이메일·슬랙으로 받도록 구성.