정기 백업 자동화, 이렇게만 해두면 마음이 편하다


서버를 운영하는 사람이라면 누구나 한 번쯤 데이터 손실의 공포를 경험합니다. 디스크는 예고 없이 고장 나고, 실수로 파일을 지우는 일도 흔합니다. 이를 막아주는 유일한 보험이 백업입니다. 그것도 사람이 잊지 않도록 자동화된 백업이어야 합니다. 이 글에서 실전 방법을 정리합니다.

1. 무엇을 백업할 것인가

먼저 백업 대상을 정합니다. 보통 다음 세 가지가 핵심입니다. 첫째는 웹 파일이나 업로드된 데이터, 둘째는 데이터베이스, 셋째는 서버 설정 파일입니다. 이 세 가지만 있으면 서버가 통째로 날아가도 복구할 수 있습니다.

2. 간단한 백업 스크립트 작성

날짜별로 압축 파일을 만드는 기본 스크립트 예시입니다.

#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/deploy/backups

# 웹 파일 압축
tar -czf $BACKUP_DIR/web_$DATE.tar.gz /var/www/html

# 데이터베이스 덤프
mysqldump -u root -p비밀번호 mydb > $BACKUP_DIR/db_$DATE.sql

# 7일 지난 백업 삭제
find $BACKUP_DIR -type f -mtime +7 -delete

마지막 줄은 오래된 백업을 자동으로 정리해, 디스크가 백업 파일로 가득 차는 것을 막아줍니다.

3. 실행 권한 부여

스크립트를 실행 가능하게 만듭니다.

chmod +x /home/deploy/backup.sh

4. 크론탭으로 자동 실행

매일 새벽 3시에 백업이 돌도록 크론에 등록합니다.

crontab -e

다음 줄을 추가합니다.

0 3 * * * /home/deploy/backup.sh >> /home/deploy/backup.log 2>&1

이제 사람이 신경 쓰지 않아도 매일 백업이 만들어집니다.

5. 원격지에도 보관하기 (중요)

같은 서버에만 백업을 두면, 서버가 통째로 고장 났을 때 백업도 함께 사라집니다. 반드시 다른 위치에 복사본을 두어야 합니다. rsync로 다른 서버나 NAS에 보낼 수 있습니다.

rsync -avz /home/deploy/backups/ user@원격IP:/backup/

클라우드 스토리지로 올리는 방법도 좋은 선택입니다.

6. 3-2-1 백업 원칙

널리 쓰이는 백업 원칙은 3-2-1입니다. 데이터 사본 3개, 서로 다른 저장 매체 2종, 그중 1개는 원격지에 보관하는 것입니다. 이 원칙만 지켜도 웬만한 사고에서 데이터를 지킬 수 있습니다.

7. 복구 테스트도 잊지 말기

백업의 가장 흔한 함정은 “백업은 했는데 복구가 안 되는” 경우입니다. 가끔은 실제로 백업 파일로 복구가 되는지 테스트해 봐야 진짜 백업이라 할 수 있습니다.

마무리

백업 스크립트 작성 → 크론 자동화 → 원격 보관 → 복구 테스트, 이 흐름만 한 번 세팅해두면 마음이 한결 편해집니다. 데이터는 잃고 나서 후회하기엔 너무 소중합니다. 오늘 바로 백업 자동화를 설정해 두시길 권합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다