OffshoreVps
Bảo mật25 thg 9 20266 phút đọcBởi đội ngũ OffshoreVps

Sao lưu VPS bằng Restic hoặc Borg

Sao lưu mã hóa, khử trùng lặp sang máy chủ thứ hai: lệnh restic và borg, dump cơ sở dữ liệu, lưu giữ, lập lịch và kiểm tra khôi phục.

Một bản sao lưu bạn có thể khôi phục là sự khác biệt giữa một buổi chiều khó chịu và việc mất cả một dự án. Hướng dẫn sao lưu VPS cơ bản trình bày ý tưởng này. Bài này đi xa hơn với restic và BorgBackup: hai công cụ tạo bản sao lưu mã hóa, khử trùng lặp sang máy chủ thứ hai hoặc object storage.

Cửa sổ terminal trên VPS hiển thị các lệnh dùng để sao lưu VPS bằng restic hoặc borg, bắt đầu bằng “sudo apt install -y restic”
Loại lệnh bạn sẽ chạy trên máy chủ của mình trong hướng dẫn này.

Vì sao dùng restic hoặc borg thay vì sao chép thông thường

  • Khử trùng lặp. Chỉ dữ liệu thay đổi được lưu, nên snapshot hằng ngày luôn nhỏ.
  • Mã hóa. Dữ liệu được mã hóa trước khi rời khỏi máy chủ của bạn.
  • Snapshot. Bạn có thể khôi phục trạng thái của bất kỳ ngày nào trong quá khứ.
  • Xác minh. Cả hai công cụ đều có thể kiểm tra tính toàn vẹn của kho lưu trữ.

Hãy chọn một. Restic đơn giản và hoạt động với nhiều loại lưu trữ, gồm SFTP và lưu trữ tương thích S3. Borg rất hiệu quả và hoạt động qua SSH đến máy chủ đã cài borg.

Gửi bản sao lưu đến đâu

Đừng bao giờ lưu bản sao lưu duy nhất trên cùng máy chủ. Hãy dùng một VPS thứ hai ở vị trí khác, một bucket tương thích S3 hoặc một storage box. Một VPS nhỏ với đĩa lớn là nơi nhận bản sao lưu giá rẻ. Xem các gói VPS.

Restic: thiết lập

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

Tạo tệp mật khẩu với một mật khẩu ngẫu nhiên dài và lưu một bản sao ngoại tuyến. Nếu không có mật khẩu đó, các bản sao lưu không thể được khôi phục.

restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Các bước của hướng dẫn này theo thứ tự: 1. Vì sao dùng restic hoặc borg thay vì sao chép thông thường; 2. Gửi bản sao lưu đến đâu; 3. Restic: thiết lập; 4. Cơ sở dữ liệu cần cẩn thận; 5. Lập lịch; 6. Kiểm tra khôi phục
Các bước trong hướng dẫn này, theo thứ tự.

Borg: thiết lập

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

Xuất và lưu khóa của kho lưu trữ bằng borg key export.

Cơ sở dữ liệu cần cẩn thận

Đừng sao chép các tệp cơ sở dữ liệu đang chạy. Hãy dump chúng trước rồi sao lưu bản dump:

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

Lập lịch

Chạy sao lưu từ systemd timer hoặc cron. Một dòng cron đơn giản:

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

Tự cảnh báo khi thất bại, ví dụ bằng một ping giám sát ở cuối script.

Kiểm tra khôi phục

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

Thỉnh thoảng hãy kiểm tra khôi phục thực tế trên một máy dự phòng. Một bản sao lưu chưa từng được kiểm tra chỉ là hy vọng.