HELPER VPS

VPS 백업과 스냅샷, 자동 백업 켜기와 복원 요청 방법

서버 데이터를 지키는 방법은 세 가지예요. 서버를 만들 때 켜는 자동 백업, 원하는 순간에 디스크 전체를 남기는 스냅샷, 서버 안에서 직접 만드는 백업 파일이에요. 각각의 쓰임과 쓰는 순서를 정리했어요.

자동 백업과 스냅샷은 어떻게 다른가요

둘 다 서버 디스크 전체를 복사해 두는 방법이지만, 만드는 시점과 결제 방식이 달라요.

  • 자동 백업: 서버를 만들 때 켜는 추가 옵션이에요. 서버 디스크 전체의 복사본이 정해진 주기로 자동으로 만들어지고, 요금은 서버 요금의 5.6%로 청구서에 함께 더해져요. 복원은 첫 결제 후 고객센터 페이지에서 요청하면 처리해 드려요.
  • 스냅샷: 따로 주문하는 상품이에요. 큰 업데이트 직전처럼 내가 정한 순간의 디스크 전체를 저장하고, 저장 공간 GB당 월 $0.009로 계산해요. 주문할 때 20GB부터 2,000GB까지 10GB 단위로 용량을 골라요.

매일 바뀌는 웹사이트와 데이터베이스는 자동 백업이 알아서 지키고, 운영체제 업그레이드처럼 되돌리기 어려운 작업 전에는 스냅샷을 하나 남겨 두면 두 기능이 서로 빈틈을 채워요. 상품 설명은 자동 백업과 스냅샷 페이지에 있어요.

자동 백업 켜기

  • 계정에서 새 서버를 누르고 지역, 크기, 이미지를 골라요.
  • 추가 옵션의 자동 백업을 켜요.
  • 오른쪽 요약에 서버와 백업을 합친 월 요금이 바로 표시돼요.
  • 서버 만들기를 누르면 선택한 기간의 요금을 결제하고, 기간이 끝나기 전에 갱신 청구서를 결제하면 서버가 계속 실행돼요.

자동 백업은 서버를 만들 때 고르는 옵션이에요. 이미 쓰고 있는 서버의 데이터를 지키려면 스냅샷을 주문하거나 아래의 서버 안 백업을 함께 쓰면 돼요. API로 서버를 만들 때는 요청에 "backups": true를 넣으면 같은 옵션이 켜져요.

자동 백업에서 복원 요청하기

복원은 고객지원 직원이 처리해서, 원하는 시점을 정확히 골라 되돌려 드려요. 첫 결제 후 고객센터 페이지에서 이렇게 요청해 주세요.

  • 주제는 서버를 골라요.
  • 서버 이름 칸에 복원할 서버 이름을 적어요.
  • 내용에 돌아가고 싶은 날짜와 시간(UTC), 같은 서버로 되돌릴지 여부를 적어요.

복원하면 서버 디스크가 백업 시점의 내용으로 바뀌어서, 그 뒤에 만든 파일은 사라져요. 최근 파일 중 남기고 싶은 것이 있다면 요청 전에 내 PC로 내려받아 두세요. 답변은 고객센터 페이지에 표시돼요.

스냅샷 주문하기

  • 스냅샷 페이지에서 주문을 눌러요.
  • 저장 용량을 골라요. 서버 디스크 크기와 같거나 조금 큰 용량이면 디스크 전체가 넉넉히 담겨요.
  • 이름 칸에 대상 서버 이름을 적어 두면 어느 서버의 스냅샷인지 바로 알아요. 영문, 숫자, 점, 대시를 쓸 수 있어요.
  • 주문하면 선택한 기간의 요금을 결제하고, 준비가 끝나면 계정의 상품 목록에 표시돼요.

데이터베이스처럼 쓰기가 계속 일어나는 서버는 스냅샷을 만들 때 잠깐 서비스를 멈추거나 서버를 중지해 두면 가장 깔끔한 이미지를 얻어요. 스냅샷으로 되돌리거나 새 서버를 만들고 싶을 때도 첫 결제 후 고객센터 페이지에서 서버 이름과 스냅샷 이름을 남겨 요청하면 처리해 드려요.

서버 안에서 직접 백업하기

자동 백업과 스냅샷이 서버 전체를 지킨다면, 서버 안 백업은 파일과 데이터베이스를 다른 곳에 한 벌 더 두는 방법이에요. 사본을 세 벌, 두 가지 저장소에, 한 벌은 다른 곳에 두는 3-2-1 원칙을 따르면 가장 든든해요.

1단계. 파일과 데이터베이스 묶기

터미널
mkdir -p /root/backup
tar czf /root/backup/www-$(date +%F).tar.gz /var/www
mysqldump --single-transaction --all-databases | gzip > /root/backup/db-$(date +%F).sql.gz

PostgreSQL이라면 sudo -u postgres pg_dumpall | gzip > /root/backup/pg-$(date +%F).sql.gz, Docker 볼륨이라면 docker run --rm -v 볼륨이름:/data -v /root/backup:/out alpine tar czf /out/볼륨이름.tar.gz -C /data .로 묶어요.

2단계. 매일 자동으로 돌리기

crontab -e로 예약 작업을 열고 아래 세 줄을 넣으면 매일 새벽 3시(서버 시간)에 백업 파일을 만들고, 7일이 지난 파일은 정리해요. crontab 안에서는 % 앞에 역슬래시를 붙여요.

crontab -e
0 3 * * * tar czf /root/backup/www-$(date +\%F).tar.gz /var/www
5 3 * * * mysqldump --single-transaction --all-databases | gzip > /root/backup/db-$(date +\%F).sql.gz
30 3 * * * find /root/backup -name '*.gz' -mtime +7 -delete

3단계. 다른 곳으로 한 벌 더 보내기

백업 파일이 같은 서버에만 있으면 서버와 함께 사라질 수 있어요. 다른 지역의 서버로 rsync를 보내거나, rclone으로 오브젝트 스토리지에 올리면 다른 곳에 한 벌이 생겨요.

터미널
rsync -az /root/backup/ backup@BACKUP_SERVER_IP:/backups/web-1/

상황별로 어떤 방법을 고르면 좋을까요

세 가지 방법은 서로를 대신하기보다 함께 쓸 때 가장 든든해요. 내 서버의 쓰임에 맞춰 이렇게 조합해 보세요.

  • 개인 블로그, 작은 웹사이트: 서버를 만들 때 자동 백업을 켜 두고, 테마나 플러그인을 크게 바꾸기 전에 워드프레스 내보내기 파일을 하나 받아 두면 충분해요.
  • 쇼핑몰, 회원 서비스: 자동 백업에 더해 데이터베이스 덤프를 매일 만들고 다른 지역으로 한 벌 보내요. 주문 기록과 회원 정보를 시간 단위로 되찾을 수 있어요.
  • 개발, 시험 서버: 큰 실험 전에 스냅샷을 하나 남기고, 실험이 끝나면 스냅샷을 지워 저장 요금을 아껴요.
  • 같은 구성의 서버를 여러 대 쓸 때: 기준이 되는 서버의 스냅샷을 오래 보관해 두면 새 서버를 같은 상태로 빠르게 맞출 수 있어요.

어떤 조합이든 핵심은 사본이 서버 밖에도 한 벌 있는지, 그리고 그 사본으로 실제로 되돌려 본 적이 있는지예요. 이 두 가지만 챙기면 갑작스러운 실수나 장애에도 차분하게 서비스를 되살려요.

요금도 함께 생각해 보세요. 자동 백업은 서버 요금의 5.6%로 정해져 매달 같은 금액이고, 스냅샷은 저장한 용량만큼만 나가요. 서버 안 백업은 추가 요금 없이 디스크 공간만 쓰지만, 다른 곳으로 보내는 사본은 받는 쪽 저장 공간이 필요해요. 꼭 지켜야 할 데이터의 크기와 되돌려야 하는 빈도를 기준으로 고르면 비용과 안전을 함께 맞춰요.

복원 연습과 좋은 습관

백업은 되돌릴 수 있을 때 가치가 있어요. 한 달에 한 번쯤 작은 서버를 하나 만들어 백업 파일을 풀어 보고, 사이트가 열리는지 확인해 두면 실제 상황에서 순서를 헤매지 않아요. 확인이 끝난 시험 서버는 바로 삭제하면 돼요.

  • 큰 작업 바로 전에는 스냅샷이나 백업 파일을 하나 남겨요.
  • 백업 파일 이름에 날짜와 서버 이름을 넣어 어느 시점인지 바로 알게 해요.
  • 데이터베이스 비밀번호와 API 키 같은 비밀 정보가 담긴 백업은 안전한 곳에만 보관해요.
  • 서버를 재설치하기 전에는 재설치 가이드의 데이터 옮기기 단계를 먼저 해요.

디스크 공간이 모자라 백업을 오래 보관하기 어렵다면 서버에 NVMe 블록 디스크를 더해 백업 전용 공간으로 쓰는 방법도 있어요. Docker를 쓴다면 Docker 설치 가이드의 볼륨 관리도 함께 보세요.

함께 보면 좋은 가이드

이 가이드와 이어서 해 두면 좋은 설정이에요.

가이드 전체 보기