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