VPS는 고장 나거나, 실수로 삭제되거나, 잘못된 업데이트로 망가질 수 있습니다. 유일한 보호 수단은 테스트해 본 백업입니다. 이 가이드는 무료 도구로 간단하고 자동화된 암호화 백업을 설정합니다.
3-2-1 규칙
데이터 사본을 3개 보관하고, 2가지 서로 다른 종류의 저장소에 두며, 1개는 완전히 다른 곳에 두세요. VPS의 경우 보통 라이브 데이터, 로컬 스냅샷, 그리고 다른 제공업체나 다른 국가의 오프사이트 사본을 뜻합니다.
백업할 대상
- 웹사이트 파일과 업로드 (
/var/www). - 데이터베이스는 먼저 파일로 덤프하세요 (라이브 데이터베이스 파일을 복사하지 마세요).
- 설정:
/etc/nginx,/etc변경 사항, Docker Compose 파일과 볼륨. - Cron 작업과 모든 사용자 지정 스크립트.
운영 체제는 몇 분이면 다시 설치할 수 있습니다. 다시 설치할 수 없는 것은 데이터와 설정입니다.
restic으로 암호화되고 중복 제거된 백업 만들기
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
긴 무작위 문자열로 비밀번호 파일을 만들고 사본을 안전한 곳에 보관하세요. 이 비밀번호를 잃어버리면 백업을 열 수 없습니다. restic은 S3 호환 스토리지도 지원하므로 어떤 오브젝트 스토어로든 보낼 수 있습니다.
백업 스크립트
#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
/usr/local/bin/backup.sh로 저장하고, 실행 가능하게 만든 뒤 일정을 등록하세요.
sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup
복원 테스트
restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx
한 번도 복원해 보지 않은 백업은 희망일 뿐입니다. 분기마다 한 번, 그리고 무언가를 변경한 뒤에는 항상 테스트하세요.
스냅샷은 도움이 되지만 충분하지 않습니다
제공업체 스냅샷은 빠르고 위험한 변경 전에 편리하지만, 같은 제공업체와 같은 계정에 존재합니다. 편의 기능으로 여기고 독립적인 오프사이트 사본을 따로 보관하세요.