개발노트

고즐의 개발 및 서버 개발 노트

리눅스 서버 DB 구글 드라이브 자동 백업 및 3일치 데이터 관리 (rclone)

# 서버백업 # rclone # 자동백업 # DB # 백업스크립트

Server 2026.04.02 1일 전 6 회 읽음


리눅스 서버 DB, 구글 드라이브로 3일치 자동 백업하기 (rclone)

오늘 서버에 운영 중인 여러 사이트의 DB를 구글 드라이브로 자동 백업하는 시스템을 구축했습니다. 중간에 예상치 못한 인증 오류와 네트워크 차단 문제가 있었지만, 결국 완벽하게 자동화에 성공했습니다. 그 과정을 기록으로 남깁니다.

서버에 백업을 하긴 하지만 2중 백업을 위해 지금 사용하고 있는 구글 드라이브에 자동으로 백업하도록 설정한 과정을 공유 합니다.


1. 문제 발생과 해결: 해외 IP 차단

가장 먼저 만난 난관은 rclone 인증 과정에서 구글 서버와 통신이 안 되는 문제였습니다. 서버 보안 설정 중 해외 IP 차단 서비스가 활성화되어 있으면 구글 API 서버와의 통신이 막힐 수 있습니다. 설정을 일시적으로 해제하거나 구글 IP를 예외 처리하여 통신을 재개했습니다.


2. rclone 수동 인증 (Headless 환경)

서버에 브라우저가 없는 터미널 환경에서는 Windows PC를 활용해 인증 토큰을 전달해야 합니다.


Windows PC: .rclone.exe authorize "drive" 실행 후 브라우저 인증

결과값 복사: 생성된 {"access_token":...} 코드를 통째로 복사

리눅스 서버: rclone config 진행 중 Use web browser?에서 n을 선택하고 복사한 토큰을 붙여넣기


3. 로컬 DB 백업 스크립트 (backup_all.sh)

먼저 서버 로컬에 DB를 덤프 떠서 압축 파일로 저장하는 단계입니다.

#!/bin/bash
BACKUP_DIR="/home/backupdb"
DATE=$(date +%Y%m%d_%H%M%S)

# 예시: 특정 DB를 날짜별 파일로 저장
# mysqldump -u[계정] -p[비번] [DB명] | gzip > $BACKUP_DIR/[파일명]_$DATE.sql.gz


4. 클라우드 업로드 및 3일치 관리 (backup_cloud.sh)

클라우드 용량을 효율적으로 쓰기 위해 최근 3일치 데이터만 유지하도록 설정했습니다.

#!/bin/bash
LOCAL_DIR="/home/backupdb"
REMOTE_DIR="gdrive:_cloud_backup_db"

# 1. .sql.gz 파일만 골라서 구글 드라이브로 복사 (누적 백업)
rclone copy $LOCAL_DIR $REMOTE_DIR --include "*.sql.gz" --update

# 2. 구글 드라이브에서 3일 이상 된 파일은 자동 삭제 (용량 관리)
rclone delete $REMOTE_DIR --min-age 3d --include "*.sql.gz"


5. 크론탭(Crontab) 자동화 설정

매일 새벽 4시에 로컬 백업을 하고, 4시 30분에 클라우드로 전송하도록 예약했습니다.


0 4 * * * /home/backupdb/backup_all.sh
30 4 * * * /home/backupdb/backup_cloud.sh


이제 매일 새벽, 소중한 데이터들이 구글 드라이브라는 안전한 저장소로 자동 보관됩니다. 3일치 데이터가 유지되므로 실수로 데이터를 날려도 복구가 가능하며, 오래된 파일은 알아서 지워지니 용량 걱정도 없습니다. 서버 관리에 있어 백업은 선택이 아닌 필수입니다!


문의답변