Sao lưu và phục hồi dữ liệu volume cho DCP_PRODUCTION · GREAT_LOTUS
B00_Docker_Volume_DailyBackup/Sao lưu toàn bộ Docker volume thành file .tar.gz. Đã được cron chạy tự động 01:00 mỗi ngày — bình thường anh không cần chạy tay.
temp_restore_snapshot/ già hơn 24 giờ (do lệnh restore tạo ra)..tar.gz riêng bằng container alpine.Starting Docker volume backup at 20260717_010001 Backup location: /disk2/docker/backup_volumes -------------------------------------- Cleaning restore snapshots older than 24h in: temp_restore_snapshot - removing expired snapshot: 20260715_203045 -------------------------------------- Backing up volume: dcp_production_mysql_data ✔ Success: dcp_production_mysql_data -------------------------------------- Backing up volume: dcp_production_n8n_volume ✔ Success: dcp_production_n8n_volume -------------------------------------- All volumes backed up.
| Mục | Giá trị |
|---|---|
| Nơi lưu backup | /disk2/docker/backup_volumes/ (qua symlink backup_volumes) |
| Tên file | <tên_volume>_<YYYYMMDD>_<HHMMSS>.tar.gz |
| Lịch chạy | Cron · 01:00 mỗi ngày |
| Số bản giữ lại | 7 ngày gần nhất (cũ hơn tự xoá) |
| Dọn ảnh cứu hộ | Thư mục temp_restore_snapshot/ quá 24h bị xoá |
temp_restore_snapshot/ để anh có thể quay lại nếu lỡ. Những bản này chỉ cần sống ~1 ngày, nên chính script backup này dọn giúp — hai vòng đời tách bạch, không lẫn với backup 7 ngày.
./backup_all_docker_volumes.sh để có ngay một bản mới, thay vì chờ 01:00.
Script hỏi anh từng bước — không cần nhớ tham số. Chọn nguồn → chọn thời điểm → chọn volume → gõ RESTORE để xác nhận.
docker stop <container> trước, rồi chạy lại. Script cố ý không tự tắt hộ để khỏi kéo sập nhầm dịch vụ khác.
RESTORE để tiếp tục, gõ thứ khác để huỷ.4→ một volume số 43,9→ volume 3 và 91-5→ từ 1 đến 51-3,7→ kết hợpall→ tất cả▸ Bước 0/4 — Phục hồi từ nguồn nào? ┌────────────────────────────────────────────────┐ │ 1 📅 DAILY SNAPSHOT · giữ 7 ngày │ │ 2 ⏳ TEMPORARY RESTORE SNAPSHOT · 24h │ └────────────────────────────────────────────────┘ ❯ Chọn nguồn [1-2]: 1 ▸ Bước 1/4 — Chọn thời điểm phục hồi # NGÀY BACKUP TUỔI VOLUME 1 2026-07-17 01:00 hôm nay 17 ← mới nhất 2 2026-07-16 01:00 1 ngày 17 ❯ Chọn ngày [1-8]: 2 ▸ Bước 2/4 — Chọn volume · daily 2026-07-16 # VOLUME TRẠNG THÁI 5 dcp_production_n8n_volume ○ rảnh 4 dcp_production_mysql_data ● lotus_mysql (sẽ bị chặn) ❯ Chọn volume (vd: 3,9 · 1-5 · all): 5 ▸ Bước 3/4 — Xác nhận ┌────────────────────────────────────────────────┐ │ ⚠ HÀNH ĐỘNG NÀY GHI ĐÈ DỮ LIỆU HIỆN TẠI │ └────────────────────────────────────────────────┘ Phục hồi từ : daily 2026-07-16 01:00 ✔ dcp_production_n8n_volume ❯ Gõ RESTORE để tiếp tục: RESTORE ▸ Bước 4/4 — Đang chụp ảnh cứu hộ… [1/1] ✔ dcp_production_n8n_volume 88 M hoàn tất ┌────────────────────────────────────────────────┐ │ ✔ Nếu lỗi, quay về CŨ: nguồn 2 → 20260717_... │ └────────────────────────────────────────────────┘ ✔ Hoàn tất: 1/1 volume đã phục hồi Đừng quên: docker start lotus_n8n
| Ký hiệu | Ý nghĩa |
|---|---|
○ rảnh | Không container nào dùng → an toàn phục hồi. |
● lotus_x | Đang bị container chạy dùng → sẽ bị chặn, phải stop trước. |
○ chưa tồn tại | Volume chưa có → script tự tạo rồi phục hồi. |
| Cờ | Công dụng |
|---|---|
--dry-run | Diễn tập: in ra mọi việc sẽ làm nhưng không đụng volume nào. Dùng để xem trước cho chắc. |
--to <tên> | Giải nén sang một volume mới thay vì ghi đè volume gốc — để soi dữ liệu trước rồi mới quyết định. Chỉ dùng với 1 volume. |
--yes / -y | Bỏ qua màn xác nhận (cho kịch bản tự động hoá). Dùng cẩn thận. |
--no-color | Tắt màu ANSI. Màu vốn tự tắt khi ghi ra file/pipe, nên hiếm khi cần. |
-h / --help | Xem trợ giúp ngắn gọn. |
--dry-run để xem chính xác script sẽ làm gì mà không thay đổi gì cả. Yên tâm rồi mới chạy thật.