Trang chủ/Backup website tự động: chiến lược 3-2-1 và cách làm thực tế (có số đo)
Tháng 10 8, 2026

Backup website tự động: chiến lược 3-2-1 và cách làm thực tế (có số đo)

Bởi Lê Thanh Sang

Backup website tự động theo chiến lược 3-2-1 với số đo thật trên một website WordPress

Backup website theo quy tắc 3-2-1 nghĩa là luôn có 3 bản dữ liệu, trên 2 loại nơi chứa, trong đó 1 bản nằm ngoài nhà cung cấp hosting — và cả quy trình phải tự chạy hằng ngày, được thử khôi phục định kỳ. Chúng tôi làm thử trên chính website này ngày 14/09/2026: một bản sao lưu đầy đủ (mã nguồn, ảnh và cơ sở dữ liệu) nén còn khoảng 96,5MB, mất chưa tới 20 giây. Giữ 30 bản hằng ngày chỉ tốn khoảng 2,9GB — nằm gọn trong mức 10GB miễn phí của nhiều kho object storage.

Quy tắc 3-2-1 là gì?

3-2-1 là nguyên tắc sao lưu được Cơ quan An ninh mạng và Hạ tầng Hoa Kỳ (CISA) khuyến nghị cho doanh nghiệp nhỏ: 3 bản dữ liệu quan trọng, 2 loại phương tiện lưu trữ khác nhau, 1 bản đặt ở nơi khác. CISA còn nhắc thêm: sao lưu phải tự động, có bản ngoại tuyến hoặc được bảo vệ, và thử khôi phục để chắc chắn quay lại được dữ liệu ít nhất 7 ngày trước.

Quy tắc sao lưu 3-2-1 áp dụng cho website: 3 bản, 2 loại nơi chứa, 1 bản ngoài nhà cung cấp hosting
Cách hiểu 3-2-1 cho một website đặt trên hosting hoặc VPS.

Áp vào một website, ba bản thường là: website đang chạy; bản sao lưu tự động nằm trên hosting hoặc VPS; và một bản ở kho lưu trữ của công ty khác. Bản sao lưu mà nhà cung cấp hosting giữ hộ vẫn có ích, nhưng nó nằm cùng công ty, thường cùng trung tâm dữ liệu — không tính là “bản ở nơi khác”. Nhiều nhà cung cấp còn loại sự cố tại trung tâm dữ liệu khỏi cam kết bồi thường, như chúng tôi đã tổng hợp ở bài so sánh SLA.

Website WordPress cần sao lưu những gì?

Hai phần bắt buộc: toàn bộ tệp (mã nguồn, giao diện, plugin, ảnh tải lên, tệp cấu hình) và cơ sở dữ liệu. Thiếu cơ sở dữ liệu thì mất toàn bộ bài viết, đơn hàng, tài khoản; thiếu thư mục ảnh thì bài còn chữ mà mất hình.

  • Nên sao lưu: thư mục website, đặc biệt wp-content/uploads, wp-content/themes, wp-content/plugins và tệp wp-config.php; toàn bộ cơ sở dữ liệu.
  • Có thể bỏ qua: thư mục bộ nhớ đệm (cache), nhật ký tường lửa, các bản sao lưu cũ nằm lẫn trong thư mục website — chúng tự sinh lại và chỉ làm bản sao lưu phình to.

Sao lưu một website thật tốn bao nhiêu dung lượng và thời gian?

Với website này, một bản đầy đủ nén còn khoảng 96,5MB và mất khoảng 18,5 giây trên VPS 1 nhân.

Dung lượng và thời gian nén bản sao lưu mã nguồn và cơ sở dữ liệu của website dexuat.com
Đo ngày 14/09/2026 trên VPS 1 nhân đặt tại Singapore; bản thử đã được kiểm tra toàn vẹn rồi xóa.
Phần Dung lượng gốc Sau khi nén Thời gian
Tệp website (bỏ cache và nhật ký) khoảng 215MB 80,2MB 12,0 giây
Cơ sở dữ liệu (61 bảng) 209MB 16,4MB 6,4 giây
Tổng một bản khoảng 96,5MB khoảng 18,5 giây

Hai điều rút ra. Cơ sở dữ liệu dạng chữ nén rất tốt — 209MB còn 16,4MB, tức chưa tới 8%. Còn ảnh và mã nguồn vốn đã nén sẵn nhiều nên giảm ít hơn. Sau khi tạo, chúng tôi kiểm tra bản nén không lỗi (gzip -t), đếm được hơn 10.000 tệp trong gói và đủ 61 lệnh tạo bảng trong bản cơ sở dữ liệu — bước kiểm tra này hay bị bỏ qua nhất.

Nhà cung cấp nào rẻ nhất để lưu bản sao lưu?

Với website cỡ vài trăm MB, giữ 30 bản hằng ngày ở object storage gần như miễn phí. 30 × 96,5MB ≈ 2,9GB; giữ 90 bản ≈ 8,7GB — vẫn dưới mức 10GB miễn phí của Backblaze B2 và Cloudflare R2 theo bảng giá ngày 14/09/2026. Cần lưu ý ba điều khoản:

  • Phí tải dữ liệu ra (egress): sao lưu thì tải lên nhiều, tải về ít, nhưng khi cần khôi phục bạn sẽ tải về toàn bộ. B2 miễn phí tải ra tới 3 lần dung lượng lưu, R2 không tính phí tải ra.
  • Mức tối thiểu: Wasabi tính tối thiểu 1TB mỗi tháng và tính tiền tệp bị xóa trước 90 ngày — không hợp với bản sao lưu nhỏ, xoay vòng hằng ngày.
  • Xóa bản cũ: đặt quy tắc vòng đời (lifecycle) trên bucket để tự xóa bản quá hạn, tránh dung lượng tăng mãi.

Chi tiết giá và 4 kịch bản tính tiền có ở bài Backblaze B2 vs Wasabi vs Cloudflare R2; khái niệm nền ở object storage là gì.

Cách thiết lập backup tự động

Có ba cách, chọn theo loại dịch vụ bạn đang dùng.

Cách Hợp với Ưu Nhược
Công cụ sao lưu trong bảng điều khiển hosting Shared hosting Không cần cài gì, khôi phục vài cú nhấp Bản sao nằm cùng nhà cung cấp; muốn đẩy ra ngoài phải tải về thủ công
Plugin sao lưu WordPress Hosting không cho chạy lệnh Hẹn giờ và gửi thẳng lên kho ngoài Chạy bằng PHP nên dễ hết thời gian với website lớn; kiểm tra plugin có hỗ trợ kho tương thích S3 bạn chọn không
Lệnh hẹn giờ (cron) + công cụ đồng bộ như rclone VPS Nhanh, kiểm soát hoàn toàn, hỗ trợ B2, R2, Wasabi Cần biết dùng dòng lệnh

Ví dụ kịch bản cho VPS chạy WordPress có WP-CLI và rclone đã cấu hình sẵn một kho tên kho-ngoai (thay đường dẫn và tên bucket của bạn):

#!/bin/bash
set -e
NGAY=$(date +%F)
mkdir -p /backup
cd /home/example.com/public_html
wp db export - --single-transaction --quick | gzip > /backup/db-$NGAY.sql.gz
tar -czf /backup/files-$NGAY.tgz --exclude=wp-content/cache .
gzip -t /backup/db-$NGAY.sql.gz
rclone copy /backup kho-ngoai:ten-bucket/example.com --max-age 24h
find /backup -type f -mtime +7 -delete

Rồi hẹn chạy lúc 3 giờ 15 sáng mỗi ngày bằng cron: 15 3 * * * /root/backup-web.sh >> /var/log/backup-web.log 2>&1. Kịch bản giữ 7 ngày gần nhất trên VPS (bản thứ hai) và đẩy bản mới lên kho ngoài (bản thứ ba). Vì bản sao lưu chứa wp-config.php có mật khẩu cơ sở dữ liệu, nên dùng chế độ mã hóa của rclone (crypt) hoặc bật mã hóa phía kho, và cấp khóa truy cập chỉ được ghi vào đúng bucket đó. Nếu VPS còn mới, đọc thêm VPS là gì để nắm những việc quản trị cơ bản.

Thử khôi phục: bước quyết định bản sao lưu có dùng được không

  1. Kiểm tra tệp nén ngay sau khi tạo: gzip -t cho cơ sở dữ liệu, tar -tzf cho gói tệp.
  2. Mỗi tháng khôi phục thử một lần lên một tên miền phụ hoặc môi trường thử nghiệm: giải nén tệp, nhập cơ sở dữ liệu, mở website xem bài, ảnh, đăng nhập quản trị.
  3. Ghi lại thời gian khôi phục — đó là thời gian website của bạn sẽ chết nếu sự cố xảy ra thật.
  4. Tạo thêm một bản thủ công trước mỗi lần cập nhật lớn: đổi giao diện, nâng phiên bản PHP, chuyển hosting. Khi chuyển nhà cung cấp, bản này cũng là thứ bạn mang theo — xem ví dụ so sánh hai nhà hosting nếu đang cân nhắc đổi.

5 lỗi sao lưu hay gặp

  • Chỉ dựa vào bản sao lưu của nhà cung cấp hosting.
  • Sao lưu tệp mà quên cơ sở dữ liệu (hoặc ngược lại).
  • Để bản sao lưu nằm trong chính thư mục website, vừa phình dung lượng vừa có thể bị tải về công khai.
  • Không mã hóa bản sao lưu dù trong đó có mật khẩu cơ sở dữ liệu.
  • Chưa từng thử khôi phục.

Số đo do Được Đề Xuất thực hiện trên máy chủ của chính website ngày 14/09/2026; nguyên tắc 3-2-1 theo hướng dẫn sao lưu dữ liệu doanh nghiệp của CISA; giá kho lưu trữ theo trang chính thức cùng ngày. Bài không có liên kết giới thiệu.

Câu hỏi thường gặp về backup website

Quy tắc sao lưu 3-2-1 là gì?
Là giữ 3 bản dữ liệu quan trọng, trên 2 loại phương tiện lưu trữ khác nhau, trong đó 1 bản đặt ở nơi khác. Với website, thường là bản đang chạy, bản sao lưu trên hosting hoặc VPS và một bản ở kho lưu trữ của công ty khác.
Backup website bao lâu một lần?
Website cập nhật thường xuyên nên sao lưu tự động mỗi ngày và giữ ít nhất 7 ngày gần nhất; CISA khuyên phải quay lại được dữ liệu ít nhất 7 ngày trước. Tạo thêm bản thủ công trước mỗi lần cập nhật lớn.
Một bản backup website WordPress nặng bao nhiêu?
Tùy website. Với dexuat.com đo ngày 14/09/2026, tệp website khoảng 215MB nén còn 80,2MB và cơ sở dữ liệu 209MB nén còn 16,4MB, tổng khoảng 96,5MB mỗi bản.
Backup của nhà cung cấp hosting có đủ không?
Chưa đủ để coi là an toàn. Bản đó nằm cùng công ty và thường cùng trung tâm dữ liệu, nên cần thêm ít nhất một bản ở kho lưu trữ của nhà cung cấp khác.
Lưu backup website ở đâu rẻ nhất?
Với website vài trăm MB, giữ 30 bản hằng ngày chỉ khoảng 3GB, nằm trong mức 10GB miễn phí của Backblaze B2 hoặc Cloudflare R2 theo bảng giá ngày 14/09/2026. Tránh kho có mức tối thiểu 1TB hoặc tính tiền tệp xóa sớm.