← 전체 목록
서버백업운영

오프사이트 백업으로 서버 장애에도 데이터를 안전하게 지킵니다

ℹ️ 본 글은 정보 제공 목적이며, 광고·제휴 링크가 포함될 수 있습니다.
목차 보기

오프사이트 백업 원격 전송 설정의 필요성을 깨달은 건 서버 스토리지가 물리적으로 고장나서 /var/backups/에 있던 백업 파일도 함께 손실됐을 때입니다. 백업을 열심히 만들었는데, 같은 서버에만 보관했던 것이 문제였습니다. 백업의 기본 원칙은 3-2-1 룰: 3개 복사본, 2종류 미디어, 1개 오프사이트. ‘2종류 미디어’ 중 하나로 사무실에 시놀로지 DS223과 같은 NAS를 두면, 클라우드 없이도 물리적 오프사이트 백업이 가능합니다.

rclone으로 클라우드 전송

# rclone 설치
sudo apt install rclone

# 구글 드라이브 설정 (대화형 설정)
rclone config
# n → 새 remote 추가
# 이름: gdrive
# storage: drive (구글 드라이브)
# 인증 과정 진행

# 설정 후 테스트
rclone ls gdrive:

백업 후 자동 전송 스크립트

#!/bin/bash
# /usr/local/bin/backup-and-sync.sh

DB_NAME="hospital_wp"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
KEEP_DAYS=7

# 1. DB 백업
mkdir -p $BACKUP_DIR
mysqldump --defaults-file=/root/.my.cnf \
    --single-transaction \
    $DB_NAME | gzip > "$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"

# 2. 파일 백업
tar -czf "$BACKUP_DIR/uploads_${DATE}.tar.gz" \
    /var/www/html/wp-content/uploads/

# 3. 구글 드라이브로 업로드
rclone copy "$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz" \
    gdrive:server-backups/mysql/ \
    --log-file /var/log/rclone.log

rclone copy "$BACKUP_DIR/uploads_${DATE}.tar.gz" \
    gdrive:server-backups/uploads/ \
    --log-file /var/log/rclone.log

# 4. 로컬 오래된 백업 정리
find $BACKUP_DIR -name "*.gz" -mtime +$KEEP_DAYS -delete

echo "$(date): 오프사이트 백업 완료" >> /var/log/backup-and-sync.log

rsync로 백업 서버 전송

# 별도 백업 서버가 있는 경우 rsync 이용
rsync -avz --delete \
    -e "ssh -i /root/.ssh/backup_key" \
    /var/backups/ \
    backup-server:/remote-backups/hospital-server/

# cron 등록 (매일 새벽 3시)
# 0 3 * * * /usr/local/bin/backup-and-sync.sh >> /var/log/backup.log 2>&1

오프사이트 백업은 한 번 설정하면 유지 비용이 거의 없습니다. 구글 드라이브 무료 15GB는 압축된 DB 백업을 수개월 보관하기에 충분합니다. 서버 재해 복구의 마지막 보루이므로 반드시 구성해두어야 합니다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

편집 정책

의료기관 인프라 운영 현장 경험을 바탕으로 작성하며, WavePix 운영자 (의료기관 3곳 인프라 전담)가 최종 검수합니다.

작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)