OffshoreVps
보안2026년 9월 25일읽는 시간 6분작성: OffshoreVps 팀

Restic 또는 Borg로 VPS 백업하기

두 번째 서버로 보내는 암호화 및 중복 제거 백업: restic과 borg 명령어, 데이터베이스 덤프, 보존 정책, 스케줄링, 복원 테스트를 다룹니다.

복원할 수 있는 백업은 짜증나는 오후 한나절과 프로젝트를 잃는 일의 차이를 만듭니다. 기본 VPS 백업 가이드에서 개념을 다뤘습니다. 이 글은 한 걸음 더 나아가 restic과 BorgBackup을 다룹니다. 두 도구 모두 두 번째 서버나 오브젝트 스토리지에 암호화 및 중복 제거 백업을 만들어 줍니다.

restic 또는 borg로 VPS를 백업하는 데 사용하는 명령어를 보여 주는 VPS의 터미널 창으로, “sudo apt install -y restic”로 시작함
이 가이드에서 서버에서 실행하게 될 명령어의 종류입니다.

단순 복사 대신 restic이나 borg를 쓰는 이유

  • 중복 제거. 변경된 데이터만 저장되므로 매일 찍는 스냅샷도 작게 유지됩니다.
  • 암호화. 데이터는 서버를 떠나기 전에 암호화됩니다.
  • 스냅샷. 과거 어느 날의 상태로든 복원할 수 있습니다.
  • 검증. 두 도구 모두 저장소 무결성을 검사할 수 있습니다.

하나를 고르세요. Restic은 간단하며 SFTP와 S3 호환 스토리지를 포함한 다양한 스토리지 유형에서 작동합니다. Borg는 매우 효율적이며 borg가 설치된 서버에 SSH로 연결하여 작동합니다.

백업을 보낼 곳

유일한 백업을 같은 서버에 저장하지 마세요. 다른 위치의 두 번째 VPS, S3 호환 버킷, 또는 스토리지 박스를 사용하세요. 디스크가 큰 소형 VPS는 저렴한 백업 대상이 됩니다. VPS 요금제를 참고하세요.

Restic: 설정

sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init

길고 무작위한 비밀번호로 비밀번호 파일을 만들고 사본을 오프라인에 보관하세요. 이 비밀번호가 없으면 백업을 복원할 수 없습니다.

restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
이 가이드의 단계를 순서대로 나열하면 다음과 같습니다. 1. 단순 복사 대신 restic이나 borg를 쓰는 이유; 2. 백업을 보낼 곳; 3. Restic: 설정; 4. 데이터베이스는 주의가 필요함; 5. 스케줄 설정; 6. 복원 테스트
이 가이드의 단계를 순서대로 나열한 것입니다.

Borg: 설정

sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check

borg key export로 저장소 키를 내보내 보관하세요.

데이터베이스는 주의가 필요함

실행 중인 데이터베이스 파일을 그대로 복사하지 마세요. 먼저 덤프한 다음 덤프를 백업하세요.

mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz

스케줄 설정

systemd 타이머나 cron으로 백업을 실행하세요. 간단한 cron 줄은 다음과 같습니다.

15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

실패했을 때 알림을 받도록 하세요. 예를 들어 스크립트 끝에 모니터링 핑을 넣을 수 있습니다.

복원 테스트

restic restore latest --target /tmp/restore-test --include /etc/nginx
ls /tmp/restore-test

가끔 여분의 장비에서 실제 복원을 테스트하세요. 한 번도 테스트하지 않은 백업은 희망일 뿐입니다.