Sao lưu website: chuyện mất web và cách để không mất
Năm cách mất web hay gặp nhất ở tiệm nhỏ Việt Nam, danh sách ba thứ phải sao lưu (nhiều người quên cái thứ ba), và bài diễn tập phục hồi làm mỗi quý một lần.
Chị Thảo bán thời trang online, web WordPress trên một hosting giá 89k/tháng. Chị đổi thẻ ngân hàng, quên cập nhật, hosting tự động thu tiền thất bại. Email nhắc rơi vào thư rác. Hai tháng sau chị vào web thì thấy trang trắng — nhà cung cấp đã xóa dữ liệu theo chính sách. 400 sản phẩm chị ngồi nhập tay suốt bốn tháng, mất sạch. Ảnh gốc thì nằm trong điện thoại cũ đã bán. Bài này để bạn không phải trải qua buổi tối đó.
Web mất thật sự vì những lý do gì
Không phải vì hacker Nga. Ở tiệm nhỏ Việt Nam, đây là năm nguyên nhân mình gặp thật, xếp theo tần suất:
- Quên gia hạn hosting hoặc tên miền. Số một, cách biệt lớn. Thẻ hết hạn, email nhắc vào spam, hoặc người từng đứng tên đã nghỉ việc.
- Cập nhật plugin/theme làm sập web. Bấm “Update All” lúc 11 giờ đêm, sáng ra trang trắng hoặc lỗi PHP đỏ toàn màn hình.
- Bị chèn mã quảng cáo cờ bạc. Rất phổ biến với WordPress dùng theme lậu hoặc plugin không cập nhật. Triệu chứng: Google báo “Trang này có thể bị tấn công”, hoặc khách vào từ điện thoại bị đá sang trang cá cược. Nặng thì Google gỡ luôn khỏi kết quả tìm kiếm.
- Nhân viên cũ hoặc bên làm web cũ xóa. Nghỉ việc không vui vẻ, hoặc chỉ là dọn tài khoản mà không hỏi ai.
- Nhà cung cấp nhỏ đóng cửa. Vài hosting giá rẻ trong nước biến mất không báo trước, kéo theo dữ liệu.
Để ý: bốn trên năm nguyên nhân không liên quan tới kỹ thuật cao siêu gì cả. Chúng là chuyện quản lý.
Quy tắc 3-2-1, nói bằng tiếng người
Dân kỹ thuật hay đọc thần chú “3-2-1”. Dịch ra:
- 3 bản của mọi thứ quan trọng: bản đang chạy trên web + 2 bản sao.
- 2 nơi khác loại: đừng để cả hai bản sao trên cùng một hosting. Ví dụ một bản trên Google Drive, một bản trên ổ cứng ngoài ở nhà.
- 1 bản ở chỗ khác hẳn: không nằm cùng chỗ với web. Nếu hosting đóng cửa hay tài khoản bị khóa, bản đó vẫn còn.
Câu hỏi kiểm tra nhanh: nếu sáng mai bạn mất hoàn toàn quyền truy cập tài khoản hosting, bạn còn gì? Trả lời “không còn gì” nghĩa là bạn đang có 1 bản, không phải 3.
Sao lưu cái gì — ba thứ, đừng bỏ cái thứ ba
1. File. Ảnh, video, theme, plugin, mã nguồn. Đây là phần nặng nhất về dung lượng.
2. Cơ sở dữ liệu. Với WordPress hay web bán hàng, đây mới là phần quý nhất: bài viết, sản phẩm, giá, đơn hàng, tài khoản khách. File còn mà mất cơ sở dữ liệu thì bạn có một cái vỏ rỗng. Định dạng xuất ra thường là .sql.
3. Thông tin đăng nhập. Đây là thứ hầu hết người ta quên, và là thứ khiến việc phục hồi kéo dài từ 2 tiếng thành 2 tuần. Bạn có đầy đủ file, nhưng không nhớ mua tên miền ở đâu, không đăng nhập được hosting, không biết email nào đứng tên Google Search Console.
Mình gọi cái thứ ba là “giấy tờ tùy thân của website”. Nên cất chung một chỗ, ghi rõ:
| Mục | Cần ghi gì |
|---|---|
| Tên miền | Nhà đăng ký, email tài khoản, ngày hết hạn |
| Hosting | Nhà cung cấp, email tài khoản, gói, ngày hết hạn |
| Trang quản trị web | Địa chỉ đăng nhập, tài khoản admin |
| Google Search Console | Email đang sở hữu, cách đã xác minh |
| Google Business Profile | Email đang quản lý, ai còn quyền |
| Mã xác minh | Bản ghi TXT đang dùng để xác minh sở hữu |
Cất ở đâu: một trình quản lý mật khẩu (Bitwarden miễn phí), hoặc tệ nhất là một file Google Docs mà chỉ email cá nhân của bạn sở hữu — không phải email bên làm web. Chuyện ai đứng tên là chuyện sống còn, mình viết kỹ ở bài tên miền và hosting.
Bao lâu sao lưu một lần
Đừng theo công thức, theo mức độ thay đổi:
- Web giới thiệu, landing page (cả tháng không sửa gì): mỗi tháng một lần, cộng thêm một bản ngay sau mỗi lần bạn sửa nội dung.
- Web có blog, đăng bài đều: mỗi tuần.
- Web bán hàng có đơn thật: mỗi ngày, giữ ít nhất 14 bản gần nhất. Đơn hàng hôm qua không có bản thứ hai ở đâu cả.
Nguyên tắc: hỏi “mất bao nhiêu công là mình chấp nhận được?” Trả lời “một ngày” thì sao lưu hằng ngày.
Điều quan trọng nhất bài này
Bản sao lưu chưa từng thử phục hồi thì coi như chưa có.
Mình gặp nhiều trường hợp file backup vẫn nằm đó, tải về mở ra thì thiếu cơ sở dữ liệu, hoặc file .zip hỏng, hoặc plugin backup âm thầm ngừng chạy từ tám tháng trước mà không ai để ý. Người ta chỉ phát hiện đúng vào lúc cần nó nhất.
Bài diễn tập phục hồi — làm 1 lần mỗi quý, mất khoảng 30 phút:
- Tải bản sao lưu mới nhất về máy tính. Nếu tải không được, bạn vừa tìm ra vấn đề rồi đó.
- Giải nén ra. Kiểm tra có đủ cả thư mục file lẫn file
.sqlkhông. - Mở file
.sqlbằng Notepad, kéo xuống giữa. Có thấy tên sản phẩm, tên bài viết của bạn không? Nếu chỉ có mấy dòng cấu trúc rỗng, bản sao lưu đó vô dụng. - Muốn diễn tập đầy đủ: hầu hết hosting cho tạo một subdomain thử (
test.tiemcuaban.com). Phục hồi bản sao lưu lên đó, xem web có lên đúng không, rồi xóa. - Ghi ngày diễn tập vào file “giấy tờ tùy thân” ở trên.
Đặt lịch lặp lại: mỗi 3 tháng, tối thứ Bảy, 30 phút. Rẻ hơn nhiều so với ngồi nhập lại 400 sản phẩm.
Cách làm cụ thể theo loại web
Nếu bạn dùng WordPress:
Cài UpdraftPlus (bản miễn phí đủ dùng). Vào Settings → UpdraftPlus Backups:
- Đặt lịch: Files = Weekly, Database = Daily (web bán hàng thì cả hai để Daily).
- Giữ lại: 4 bản với file, 14 bản với cơ sở dữ liệu.
- Chọn “Remote Storage” là Google Drive, bấm xác thực tài khoản. Đây chính là bước biến bản sao lưu thành “ở chỗ khác hẳn” — backup nằm cùng hosting với web thì hosting chết là mất cả hai.
- Bấm “Backup Now” ngay một lần, rồi vào Google Drive kiểm tra file đã lên thật chưa.
Thêm một thói quen: trước mỗi lần bấm Update plugin, bấm “Backup Now” trước. Mất 2 phút, cứu bạn khỏi nguyên nhân số 2. Quy tắc này áp dụng cho mọi thao tác đụng vào cơ sở dữ liệu, kể cả lúc đổi toàn bộ đường dẫn sang https.
Nếu web bạn là web tĩnh:
Bạn nhẹ hơn hẳn. Mã nguồn nằm trên Git (GitHub/GitLab) đã là một bản sao đầy đủ, có lịch sử từng lần sửa, ở chỗ khác hẳn hosting. Việc còn lại chỉ là đảm bảo bạn — chứ không phải bên làm web — có quyền truy cập kho mã đó. Đây là một trong những lý do mình hay khuyên tiệm nhỏ chọn hướng này, mình so sánh kỹ ở bài web tĩnh vs web động.
Dù dùng gì đi nữa — xuất CSV:
Mỗi tháng một lần, vào trang quản trị, xuất danh sách sản phẩm và danh sách khách/đơn hàng ra file CSV, tải về máy, bỏ vào một thư mục Drive riêng. CSV mở được bằng Excel, đọc được bằng mắt thường, không phụ thuộc nền tảng nào. Chị Thảo ở đầu bài, nếu có một file CSV 400 dòng, buổi tối đó đã chỉ mất một tiếng thay vì bốn tháng.
Làm được ngay tối nay
- Mở một ghi chú mới, gõ ra sáu dòng “giấy tờ tùy thân của website” ở bảng trên. Chỗ nào không trả lời được — đó là lỗ hổng của bạn.
- Đăng nhập tên miền và hosting, bật auto-renew, kiểm tra thẻ thanh toán còn hạn.
- WordPress: cài UpdraftPlus, nối Google Drive, bấm Backup Now, vào Drive kiểm tra file đã tới.
- Xuất CSV sản phẩm và khách hàng, tải về, cất vào một thư mục Drive riêng.
- Đặt hai lời nhắc lặp lại: “kiểm tra backup” mỗi tháng, “diễn tập phục hồi” mỗi quý.
Web mình dựng được sao lưu hằng đêm và giữ một bản ngoài Cloudflare, nhưng mình vẫn khuyên bạn tự giữ thêm một bản riêng — người duy nhất chắc chắn không biến mất trong đời website của bạn là bạn. Nếu đang tính làm web bán hàng có dữ liệu thật, xem bảng giá và hướng dẫn dùng trang quản trị để biết chỗ xuất CSV nằm ở đâu.