Bài 14: Backup và restore cơ bản
Bài này giúp anh hiểu backup đúng nghĩa: backup cái gì, ở đâu, giữ bao lâu và quan trọng nhất là restore được không.
- Phân biệt backup file, config, database.
- Dùng
tar,rsync, dump database. - Thiết kế retention đơn giản.
- Test restore thay vì chỉ tạo backup.
Chốt ý nhanh
| Chủ đề | Điểm cần nhớ |
|---|---|
| Backup tốt | Không chỉ là tạo file, mà là biết backup gì, lưu ở đâu, giữ bao lâu và restore thế nào. |
| Restore | Nếu chưa test restore thì chưa nên gọi là backup đáng tin. |
| Retention | Backup không có chính sách giữ/xóa sẽ sớm làm đầy disk hoặc mất kiểm soát. |
1. Backup không chỉ là copy file
Backup tốt phải trả lời: backup gì, lưu ở đâu, ai có quyền, giữ bao lâu, restore trong bao lâu và đã test chưa.
2. Những thứ thường cần backup
| Loại | Ví dụ |
|---|---|
| Config | /etc/nginx, systemd unit, env file |
| Code/app | /var/www/app |
| Database | MySQL/PostgreSQL dump |
| Upload/data | wp-content/uploads, user files |
3. Lab: backup file bằng tar
mkdir -p ~/backup-lab/source echo "hello" > ~/backup-lab/source/file.txt tar -czf ~/backup-lab/source-backup.tar.gz -C ~/backup-lab source ls -lh ~/backup-lab/source-backup.tar.gz
4. Lab: restore thử
mkdir -p ~/backup-lab/restore tar -xzf ~/backup-lab/source-backup.tar.gz -C ~/backup-lab/restore find ~/backup-lab/restore -type f -maxdepth 3 -print cat ~/backup-lab/restore/source/file.txt
5. Backup bằng rsync
rsync -avh /var/www/ /backup/var-www/ rsync -avh --delete /var/www/ /backup/var-www/
--delete sẽ xóa file ở đích nếu nguồn không còn. Chỉ dùng khi hiểu rõ.6. Tình huống thực tế
7. Lỗi thường gặp
- Backup cùng ổ production, disk hỏng là mất cả backup.
- Không mã hóa backup chứa dữ liệu nhạy cảm.
- Không test restore.
- Không có retention nên backup làm đầy disk.
8. Checklist backup
- Xác định dữ liệu quan trọng.
- Backup ra nơi khác server chính.
- Có retention rõ: 7 ngày/4 tuần/12 tháng.
- Test restore định kỳ.
- Ghi tài liệu restore.
9. Bài tập
- Tạo backup tar cho một thư mục lab.
- Restore sang thư mục khác.
- So sánh file nguồn và file restore.
- Viết kế hoạch backup cho một website nhỏ.
Phần thực hành mở rộng: biến backup thành thứ dùng được khi sự cố thật xảy ra
Rất nhiều người chỉ thấy yên tâm khi “đã có file backup”, nhưng tới lúc restore mới lộ ra file hỏng, thiếu dữ liệu hoặc quy trình quá chậm. Bài này cần ép người học nghĩ theo hướng phục hồi, không chỉ sao chép.
Lab 1: Backup một cây thư mục và xác minh nội dung
mkdir -p ~/backup-lab/source
echo 'config' > ~/backup-lab/source/app.env
echo 'hello' > ~/backup-lab/source/index.html
tar -czf ~/backup-lab/source-backup.tar.gz -C ~/backup-lab source
ls -lh ~/backup-lab/source-backup.tar.gz
tar -tzf ~/backup-lab/source-backup.tar.gz | head -20
Lab 2: Restore sang nơi khác và so sánh
mkdir -p ~/backup-lab/restore
tar -xzf ~/backup-lab/source-backup.tar.gz -C ~/backup-lab/restore
find ~/backup-lab/restore -type f -maxdepth 3 -print
cat ~/backup-lab/restore/source/index.html
Mục tiêu là nhìn backup như một vật cần mở ra kiểm chứng, không phải chỉ tạo xong rồi quên.
Lab 3: rsync và ý nghĩa của đồng bộ
rsync -avh ~/backup-lab/source/ ~/backup-lab/rsync-copy/
rsync -avh --delete ~/backup-lab/source/ ~/backup-lab/rsync-copy/
Hãy hiểu thật kỹ --delete trước khi dùng trong production, vì nó sẽ xóa ở đích để giống nguồn.
Lab 4: Viết chính sách backup đơn giản
Chọn một website hoặc app giả lập và tự trả lời:
- backup file gì
- backup database gì
- mấy giờ chạy
- lưu local bao lâu
- có copy sang chỗ khác không
- bao lâu test restore một lần
Tình huống thực tế
Một website WordPress chỉ backup code mà quên uploads và database thì gần như vô nghĩa. Một hệ thống khác backup đầy đủ nhưng để trên cùng ổ production, tới lúc disk chết thì mất cả bản chính lẫn bản sao.
Lỗi phổ biến
- Có backup nhưng không có quy trình restore viết ra.
- Không mã hóa backup chứa dữ liệu nhạy cảm.
- Không có retention nên backup làm đầy ổ.
- Không kiểm tra tính toàn vẹn sau khi tạo.
Kết bài
Nếu bài này làm đúng, anh sẽ bắt đầu nhìn backup như một phần của năng lực phục hồi hệ thống, chứ không phải thủ tục cho đủ. Điều quan trọng nhất không phải “có file backup”, mà là “phục hồi được trong lúc căng thẳng”. Bài tiếp theo sẽ khép phase 2 bằng monitoring và alert, tức là cách phát hiện vấn đề đủ sớm để còn kịp hành động.
