Một VPS có thể hỏng, bị xóa nhầm hoặc bị làm hỏng bởi một bản cập nhật lỗi. Sự bảo vệ duy nhất là một bản sao lưu bạn đã kiểm thử. Hướng dẫn này thiết lập các bản sao lưu mã hóa, tự động và đơn giản bằng công cụ miễn phí.
Quy tắc 3-2-1
Giữ 3 bản sao dữ liệu, trên 2 loại lưu trữ khác nhau, với 1 bản ở một nơi hoàn toàn khác. Với VPS, điều đó thường nghĩa là dữ liệu đang chạy, một snapshot cục bộ và một bản sao ngoài site ở nhà cung cấp khác hoặc ở quốc gia khác.
Cần sao lưu những gì
- Tệp website và các tệp tải lên (
/var/www). - Cơ sở dữ liệu, được dump ra tệp trước (không bao giờ sao chép trực tiếp tệp cơ sở dữ liệu đang chạy).
- Cấu hình:
/etc/nginx, các thay đổi trong/etc, tệp Docker Compose và volume. - Các cron job và mọi script tùy chỉnh.
Bạn có thể cài lại hệ điều hành trong vài phút. Thứ bạn không thể cài lại là dữ liệu và cài đặt của mình.
Dùng restic cho bản sao lưu mã hóa, khử trùng lặp
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
Hãy tạo tệp mật khẩu bằng một chuỗi ngẫu nhiên dài và cất một bản sao ở nơi an toàn. Nếu bạn mất mật khẩu này, các bản sao lưu sẽ không thể mở được. restic cũng hỗ trợ lưu trữ tương thích S3, nên bạn có thể đẩy lên bất kỳ object store nào.
Một script sao lưu
#!/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
Lưu nó thành /usr/local/bin/backup.sh, cấp quyền thực thi và lên lịch chạy:
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
Kiểm tra khôi phục
restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx
Một bản sao lưu chưa từng được khôi phục chỉ là một niềm hy vọng. Hãy kiểm thử mỗi quý một lần, và luôn kiểm thử sau khi thay đổi bất cứ thứ gì.
Snapshot có ích nhưng chưa đủ
Snapshot của nhà cung cấp nhanh và tiện trước những thay đổi rủi ro, nhưng chúng nằm cùng nhà cung cấp và cùng tài khoản. Hãy coi chúng là tiện ích và giữ một bản sao ngoài site độc lập.