본문 바로가기
카테고리 없음

서버 백업 자동화 설정하는 방법 (리눅스 기반 가이드)

by 서버의달인 2025. 4. 17.

서버 운영에서 백업은 선택이 아닌 필수입니다. 예기치 못한 장애, 해킹, 사용자 실수로 인해 데이터가 손실될 경우, 정기적인 백업 설정이 되어 있다면 신속하게 복구할 수 있습니다. 이 글에서는 리눅스 서버에서 자동 백업을 설정하는 실전 방법을 rsync, cron을 활용해 단계별로 안내합니다.

1. 자동 백업이 중요한 이유

서버 데이터를 주기적으로 백업해야 하는 이유는 다음과 같습니다:

  • 장애 복구: 하드웨어 고장, 시스템 오류 발생 시 신속한 복구
  • 보안 침해 대비: 랜섬웨어, 해킹 등 보안 사고 시 데이터 보존
  • 버전 관리: 변경 이력을 기반으로 이전 상태로 롤백 가능
  • 법적/회계 기록 보존: 특정 산업군에서 필수

2. 추천 백업 방식: rsync + cron

rsync는 변경된 파일만 동기화하는 효율적인 백업 도구이며, cron은 리눅스의 예약 작업 스케줄러입니다. 이 두 가지를 조합하면 서버 데이터를 정기적으로 자동 백업할 수 있습니다.

3. rsync 기본 사용법


rsync -av --delete /원본경로/ /백업경로/
      

옵션 설명:

  • -a: 권한, 소유권, 타임스탬프 유지
  • -v: 백업 진행 과정을 출력
  • --delete: 원본에서 삭제된 파일도 백업본에서 삭제

예시:


rsync -av --delete /var/www/html/ /backup/web/
      

4. 원격 서버로 백업하기

rsync는 SSH를 이용해 원격 서버로도 백업이 가능합니다. 이 경우 SSH 키 인증이 설정되어 있어야 합니다.


rsync -az --delete -e "ssh -p 22" /var/www/html/ user@192.168.1.10:/backup/web/
      

정기적으로 외부 백업 서버에 저장하면 재해 복구 대비에 더욱 효과적입니다.

5. cron을 활용한 정기 백업 자동화

cron을 활용하면 위에서 만든 rsync 명령어를 정기적으로 실행할 수 있습니다.

crontab 편집

crontab -e

예시: 매일 새벽 2시에 백업 실행


0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
      

백업 스크립트 예시 (backup.sh)


#!/bin/bash
TODAY=$(date +%Y-%m-%d)
BACKUP_DIR="/backup/web/$TODAY"
mkdir -p $BACKUP_DIR
rsync -av --delete /var/www/html/ $BACKUP_DIR
find /backup/web/ -type d -mtime +7 -exec rm -rf {} \;
      

이 스크립트는 매일 백업을 생성하고 7일 이상 된 백업은 자동 삭제합니다.

6. 데이터베이스 백업 자동화 (MySQL 기준)

웹 서버라면 DB도 함께 백업해야 합니다. mysqldump를 활용하면 자동화가 가능합니다.


#!/bin/bash
DB_USER="root"
DB_PASS="비밀번호"
DB_NAME="mydatabase"
BACKUP_PATH="/backup/db"
DATE=$(date +%F)

mkdir -p $BACKUP_PATH
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_PATH/db-$DATE.sql
find $BACKUP_PATH -type f -mtime +14 -delete
      

crontab에 위 스크립트를 등록하여 매일 또는 매주 자동으로 DB 백업을 수행할 수 있습니다.

7. 압축 및 백업 파일 관리 팁

  • 백업 파일을 tar + gzip으로 압축하여 공간 절약
  • 백업본 이름에 날짜 포함 (예: backup-2025-04-08.tar.gz)
  • 정기적으로 오래된 백업 삭제 (find -mtime 명령 활용)
  • 중요한 백업은 다른 디스크나 외부 서버에 복사

8. 로그 기록과 알림 설정

백업이 정상적으로 작동하는지 확인하기 위해 로그 기록이 필요하며, 메일 알림을 설정하면 실패 시 즉시 확인할 수 있습니다.


MAILTO="you@example.com"
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
      

메일 발송을 위해 mailutils 또는 sendmail 패키지를 설치해야 할 수 있습니다.

9. 고급 백업 전략: rsnapshot, Borg, Restic

보다 강력한 백업 솔루션을 원한다면 다음과 같은 도구도 고려해볼 수 있습니다:

  • rsnapshot: rsync 기반의 증분 백업 도구
  • BorgBackup: 압축 및 암호화 지원, 중복 제거
  • Restic: 간단한 CLI 인터페이스, 클라우드 백업에 적합

10. 결론: 서버 백업은 자동화로 실현하자

서버를 안정적으로 운영하려면 반드시 정기적인 자동 백업 체계가 구축되어 있어야 합니다. 단순한 rsync와 cron 조합만으로도 강력한 백업 시스템을 만들 수 있으며, 여기에 DB 백업, 외부 저장소 연동, 로그 모니터링을 더하면 훌륭한 백업 자동화 환경이 완성됩니다.

이 글을 참고하여 지금 바로 백업 자동화를 시작해보세요. 다음 글에서는 클라우드 스토리지(Google Drive, S3 등)와 연동한 원격 백업 설정 방법을 소개하겠습니다.