Tại sao Restic lại vượt trội hơn rsync hay tar truyền thống?
Sau nhiều năm quản lý hệ thống Linux, mình nhận ra việc phó mặc dữ liệu cho các script rsync hoặc tar thủ công là một nước đi khá mạo hiểm. Cách làm cũ thường gặp hai vấn đề lớn: tốn dung lượng lưu trữ và cực kỳ chậm khi dữ liệu phình to. Nếu bạn đang quản lý một server 500GB, việc nén tar mỗi ngày rồi đẩy lên Google Drive sẽ sớm trở thành ác mộng về băng thông và chi phí.
Restic giải quyết triệt để bài toán này nhờ công nghệ Deduplication (Chống trùng lặp). Hãy tưởng tượng bạn backup một database 10GB mỗi ngày. Với cách cũ, sau 10 ngày bạn tốn 100GB. Với Restic, nếu dữ liệu chỉ thay đổi 1%, bạn chỉ tốn khoảng 10.1GB cho tổng cộng 10 bản backup đó. Ngoài ra, mọi dữ liệu đều được mã hóa AES-256 ngay tại máy khách. Ngay cả khi nhà cung cấp Cloud bị hack, dữ liệu của bạn vẫn là những khối mã hóa vô nghĩa với kẻ tấn công.
3 khái niệm “nằm lòng” khi dùng Restic
Để không bị bối rối khi thao tác, bạn cần phân biệt rõ ba thành phần sau:
- Repository: Nơi chứa dữ liệu backup. Đây có thể là ổ cứng gắn ngoài, server qua SSH, hoặc các object storage như AWS S3, Backblaze B2, MinIO.
- Snapshot: Một phiên bản dữ liệu tại thời điểm cụ thể. Bạn có thể coi đây là một “điểm khôi phục”. Restic cho phép bạn quay ngược thời gian về bất kỳ snapshot nào cực nhanh.
- Password: Restic dùng mật khẩu này để tạo khóa mã hóa dữ liệu. Hãy nhớ kỹ: Mất mật khẩu là mất sạch dữ liệu. Không có nút “Quên mật khẩu” ở đây đâu nhé.
Cài đặt Restic trong “một nốt nhạc”
Vì được viết bằng Go và đóng gói dưới dạng file thực thi duy nhất, Restic chạy rất nhẹ và ổn định. Bạn có thể cài đặt nhanh qua trình quản lý gói:
# Ubuntu / Debian
sudo apt update && sudo apt install restic -y
# CentOS / RHEL / AlmaLinux
sudo dnf install restic -y
# Kiểm tra cài đặt thành công chưa
restic version
Khởi tạo và thực hiện bản backup đầu tiên
Bước 1: Tạo Repository cục bộ
Trước khi đẩy lên Cloud, hãy thử nghiệm tại local để hiểu luồng hoạt động. Tạo một repo tại /srv/my-backup:
restic init --repo /srv/my-backup
Hệ thống sẽ yêu cầu đặt mật khẩu. Đừng quên lưu nó vào Bitwarden hay 1Password của bạn.
Bước 2: Chạy Backup
Thử sao lưu thư mục cấu hình /etc và code web /var/www/html:
restic -r /srv/my-backup backup /etc /var/www/html
Lần đầu Restic sẽ quét toàn bộ dữ liệu nên hơi lâu. Từ lần thứ hai, nó chỉ đẩy những khối dữ liệu (chunks) thực sự thay đổi, tốc độ sẽ nhanh hơn gấp nhiều lần.
Đẩy dữ liệu lên Cloud (Backblaze B2 hoặc AWS S3)
Dùng Cloud là lựa chọn khôn ngoan để tránh rủi ro hỏng hóc vật lý tại chỗ. Mình thường ưu tiên Backblaze B2 vì giá chỉ khoảng $6/TB/tháng, rẻ hơn 4 lần so với AWS S3 tiêu chuẩn.
Để tránh việc phải nhập thông tin mỗi lần gõ lệnh, hãy thiết lập biến môi trường (Environment Variables):
export B2_ACCOUNT_ID="your_id"
export B2_ACCOUNT_KEY="your_key"
export RESTIC_REPOSITORY="b2:ten-bucket-cua-ban:backup-folder"
export RESTIC_PASSWORD="mat_khau_repo_cua_ban"
Bây giờ, mọi lệnh Restic sẽ tự động hiểu là thao tác với Cloud:
# Khởi tạo repo trên Cloud
restic init
# Backup dữ liệu quan trọng
restic backup /home/user/data
Quản lý Snapshot và Khôi phục
Kiểm tra danh sách bản sao lưu
Dùng lệnh sau để xem bạn đang có những gì trong tay:
restic snapshots
Restic sẽ liệt kê bảng dữ liệu với các ID duy nhất (ví dụ: 76c12f34). Bạn sẽ dùng ID này để khôi phục.
Khôi phục dữ liệu (Restore)
Khi cần cứu dữ liệu, hãy chỉ định một folder đích để Restic xả nén vào đó:
restic restore 76c12f34 --target /tmp/restore-point
Tự động hóa và dọn dẹp định kỳ
Đừng để dữ liệu backup cũ làm đầy ví tiền của bạn. Restic có cơ chế tự động xóa các bản backup quá hạn rất thông minh.
Ví dụ: Giữ lại 7 bản backup của 7 ngày gần nhất, 4 bản của 4 tuần và 12 bản của 12 tháng.
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
Mẹo nhỏ: Lệnh forget chỉ xóa chỉ mục, bạn bắt buộc phải có thêm --prune để Restic thực sự xóa các khối dữ liệu thừa và giải phóng dung lượng trên Cloud.
Dưới đây là script mẫu để bạn đặt Cronjob chạy lúc 2h sáng:
#!/bin/bash
source /path/to/env_vars.sh
restic backup /var/www/html --quiet
restic forget --keep-daily 14 --prune --quiet
restic check --quiet # Kiểm tra lỗi dữ liệu
Lời kết từ thực tế
Một sai lầm kinh điển của các bạn Junior là tin tưởng tuyệt đối vào backup mà không bao giờ kiểm tra. Thỉnh thoảng, hãy chạy restic check để đảm bảo cấu trúc dữ liệu không bị lỗi. Việc tách biệt mật khẩu Repository và Key truy cập Cloud cũng là quy tắc bảo mật tối thượng. Khi đã làm chủ được Restic, bạn sẽ thấy việc quản lý dữ liệu trở nên nhẹ nhàng hơn bao giờ hết, dù hệ thống có gặp sự cố nghiêm trọng đến đâu.

