VPS 백업 자동화 완벽 가이드 2026: restic + cron으로 증분 백업 구축

Restic을 활용하면 VPS 환경에서 빠르고 안전하게 백업을 자동화할 수 있습니다.

데이터를 안전하게 보존하고 장애 발생 시 즉각적으로 복구하는 체계를 갖출 수 있습니다.

이러한 설정은 실무 환경에서 즉시 효과를 발휘하며 시스템의 안정성을 크게 높여줍니다.

VPS 백업, 2026년에는 restic이 정답이다는 무엇일까요?

VPS 한 대에 서비스를 올리고 나면 가장 먼저 해야 할 일이 백업입니다. 디스크 고장, 랜섬웨어, 실수로 날린 rm -rf — 언제든 데이터를 잃을 가능합니다. 전통적인 rsync 풀백업은 매번 전체 파일을 복사하므로 느리고 저장 공간을 많이 먹습니다.

VPS 백업 자동화 완벽 가이드 2026: restic + cron으로 증분 백업 구축
사진: Jemimus / flickr (BY)

restic은 증분 백업·중복 제거(deduplication)·암호화를 기본으로 지원하는 오픈소스 백업 도구입니다. 최초 1회 전체 백업 이후에는 변경된 블록만 전송하므로, 매일 백업해도 수 초 안에 끝납니다. 이 튜토리얼에서는 restic으로 VPS 백업을 자동화하고 원격 저장소까지 연동하는 전체 과정을 다룹니다.

1. restic 설치는 어떻게 하나요?

Ubuntu/Debian 기준:

sudo apt update && sudo apt install -y restic

또는 최신 버전을 직접 다운로드:

curl -L https://github.com/restic/restic/releases/download/v0.16.4/restic_0.16.4_linux_amd64.bz2 | bunzip2 > restic
sudo mv restic /usr/local/bin/ && sudo chmod +x /usr/local/bin/restic

2. 백업 저장소(repo) 초기화는 무엇일까요?

로컬 디렉토리, S3, B2, SFTP 등 어디든 저장소로 쓸 가능합니다. 로컬 예시:

export RESTIC_REPOSITORY="/mnt/backup/restic"
export RESTIC_PASSWORD="강력한비밀번호"
restic init

원격 S3(B2/MinIO 호환)를 쓰는 경우:

export RESTIC_REPOSITORY="s3:s3.example.com/my-bucket/restic"
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
restic init
3. 첫 백업 실행 — 요약

3. 첫 백업 실행는 어떻게 하나요?

restic backup /var/www /etc /home --tag daily

백업이 끝나면 스냅샷 목록을 확인합니다:

restic snapshots

4. 증분 백업의 원리 — deduplication는 무엇일까요?

restic은 파일을 작은 블록(chunk)으로 쪼개고 각 블록의 해시를 저장합니다. 두 번째 백업부터는 변경된 블록만 전송하므로, 수 GB 데이터도 변경분이 적으면 수 초 만에 끝납니다. 저장 공간도 변경분만큼만 추가로 사용합니다.

5. cron으로 매일 자동 백업는 무엇일까요?

sudo tee /etc/cron.daily/restic-backup >/dev/null <<'EOF'
#!/bin/bash
export RESTIC_REPOSITORY="/mnt/backup/restic"
export RESTIC_PASSWORD="강력한비밀번호"

// 백업
restic backup /var/www /etc /home --tag daily

// 오래된 스냅샷 정리 (30일 보관)
restic forget --keep-daily 30 --keep-weekly 12 --keep-monthly 12 --prune

// 저장소 최적화
restic check
EOF
sudo chmod +x /etc/cron.daily/restic-backup
6. 복구(restore) 실습 — 요약

6. 복구(restore) 실습는 무엇일까요?

복구가 안 되는 백업은 백업이 아닙니다. 반드시 복구 테스트를 합니다:

// 스냅샷 확인
restic snapshots

// 특정 스냅샷에서 파일 복구
restic restore latest --target /tmp/restore

// 특정 파일만 추출
restic restore latest --target /tmp/restore --include /var/www/index.html

7. retention policy — 저장 공간 관리는 어떻게 하나요?

백업을 무한정 쌓으면 저장 공간이 부족해집니다. restic forget --prune으로 보관 정책을 설정합니다:

restic forget --keep-daily 30 --keep-weekly 12 --keep-monthly 12 --prune

최근 30일치 일일 백업 + 12주치 주간 백업 + 12개월치 월간 백업을 유지하고 나머지는 삭제합니다.

마무리: 백업은 자동화가 전부다는 무엇일까요?

수동 백업은 결국 까먹습니다. restic + cron 한 줄로 매일 자동 증분 백업을 구축해 두면, 디스크가 고장 나도 어젯밤 상태로 5분 만에 복구할 가능성이 있습니다. 원격 저장소(S3/B2)까지 연동하면 VPS 자체가 날아가도 데이터는 안전합니다.

추천 VPS: 이 튜토리얼은 Vultr, DigitalOcean, Hetzner 어떤 VPS에서도 동일하게 적용됩니다.

자주 묻는 질문 (FAQ)

Q1. rsync 대신 restic을 쓰면 뭐가 좋아지나요?

rsync 풀백업은 매번 전체 파일을 복사하지만, restic은 파일을 블록 단위로 쪼개 해시로 관리해 두 번째 백업부터는 변경된 블록만 전송합니다. 수 GB 데이터도 변경분이 적으면 수 초 만에 끝나고 저장 공간도 변경분만큼만 늘어납니다.

Q2. 백업 저장소를 원격에 둘 수도 있나요?

로컬 디렉터리 외에 S3, B2, MinIO, SFTP를 저장소로 쓸 가능합니다. RESTIC_REPOSITORY를 s3:s3.example.com/my-bucket/restic 형태로 지정하고 액세스 키를 환경변수로 넘기면 됩니다. VPS 자체가 날아가는 상황까지 대비하려면 원격 저장소 연동이 필요합니다.

Q3. 백업이 계속 쌓이는데 저장 공간은 어떻게 관리하나요?

restic forget –prune으로 보관 정책을 겁니다. –keep-daily 30 –keep-weekly 12 –keep-monthly 12는 최근 30일치 일일 백업, 12주치 주간 백업, 12개월치 월간 백업만 남기고 나머지를 정리합니다.

Q4. 복구가 실제로 되는지 어떻게 확인하나요?

복구가 안 되는 백업은 백업이 아닙니다. restic snapshots로 스냅샷을 확인한 뒤 restic restore latest –target /tmp/restore로 임시 경로에 복구해 보세요. –include 옵션을 쓰면 특정 파일만 꺼내 확인할 가능성도 있습니다.

관련 글