오프사이트 백업 원격 전송 설정의 필요성을 깨달은 건 서버 스토리지가 물리적으로 고장나서 /var/backups/에 있던 백업 파일도 함께 손실됐을 때입니다. 백업을 열심히 만들었는데, 같은 서버에만 보관했던 것이 문제였습니다. 백업의 기본 원칙은 3-2-1 룰: 3개 복사본, 2종류 미디어, 1개 오프사이트.
# 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 백업을 수개월 보관하기에 충분합니다. 서버 재해 복구의 마지막 보루이므로 반드시 구성해두어야 합니다.
AI가 초안을 생성하고, 의료기관 인프라 운영자가 1차 데이터 기반으로 최종 검수·승인합니다.
작성·검수: WavePix 운영자 (의료기관 3곳 인프라 전담)