Backup tự động với rclone và cron: Bảo vệ dữ liệu không phụ thuộc cloud

Backup tự động với rclone và cron: Bảo vệ dữ liệu không phụ thuộc cloud

rclone là công cụ dòng lệnh mạnh mẽ, đồng bộ hóa file đến hơn 40 dịch vụ lưu trữ bao gồm Amazon S3, Google Drive, Dropbox, Microsoft OneDrive, SFTP, WebDAV, Backblaze B2 và nhiều hơn nữa. Kết hợp với cron, bạn có thể thiết lập chiến lược backup tự động, định kỳ, không cần cài đặt phần mềm GUI phức tạp hay trả phí cho dịch vụ backup chuyên dụng. Bài viết hướng dẫn cài đặt rclone, cấu hình remote, viết script backup an toàn, và lên lịch chạy tự động.

Hình minh họa nội dung phần đầu bài viết
Hình minh họa nội dung phần đầu bài viết

Cài đặt và cấu hình rclone

Trên Linux, macOS hoặc Windows (WSL), cài đặt nhanh bằng script chính thức:

curl https://rclone.org/install.sh | sudo bash

Sau khi cài xong, chạy rclone config để tạo remote mới. Ví dụ cấu hình Google Drive:

rclone config
# Chọn n (New remote)
# Name: gdrive
# Type: drive
# Scope: drive (toàn bộ Drive)
# Root folder ID: (để trống cho thư mục gốc)
# Service account: (để trống, dùng OAuth mặc định)
# Advanced config: n
# Remote config: y (auto config - mở trình duyệt xác thực)

Quá trình sẽ mở trình duyệt, yêu cầu đăng nhập tài khoản Google và cấp quyền truy cập Drive. Token OAuth được lưu vào ~/.config/rclone/rclone.conf. Để kiểm tra: rclone lsd gdrive: sẽ liệt kê thư mục gốc trên Drive.

Đối với S3-compatible storage (AWS S3, MinIO, Wasabi, Backblaze B2), cấu hình tương tự nhưng chọn type s3, nhập access_key_id, secret_access_key, regionendpoint nếu dùng provider không phải AWS.

Hình minh họa phần giữa bài viết
Hình minh họa phần giữa bài viết

Script backup tự động an toàn

Tạo file ~/scripts/backup.sh với nội dung sau, thiết kế để chạy ổn định trong cron:

#!/usr/bin/env bash
set -euo pipefail

# Cấu hình nguồn và đích
SRC="/home/user/important-data"
DEST="gdrive:Backups/$(date +%F)"
LOG="/var/log/rclone-backup.log"

# Tạo thư mục log nếu chưa có
mkdir -p "$(dirname "$LOG")"

# Chạy sync với các tham số an toàn
rclone sync "$SRC" "$DEST" 
  --progress 
  --transfers 4 
  --checkers 8 
  --retries 3 
  --low-level-retries 10 
  --stats 30s 
  --log-file "$LOG" 
  --log-level INFO 
  --stats-file-name-length 0

Giải thích các tùy chọn quan trọng:

  • sync: Làm cho đích giống hệt nguồn, xóa file ở đích nếu không còn ở nguồn. Dùng copy nếu muốn giữ file tại đích.
  • --transfers 4: Số luồng tải song song, điều chỉnh theo băng thông.
  • --retries 3: Thử lại tối đa 3 lần khi gặp lỗi tạm thời.
  • --stats 30s: In tiến độ mỗi 30 giây vào file log.
  • --log-level INFO: Mức log cân bằng giữa chi tiết và gọn gàng.

Cấp quyền thực thi: chmod +x ~/scripts/backup.sh. Kiểm tra thủ công một lần: ~/scripts/backup.sh.

Lên lịch chạy tự động với cron

Mở crontab của người dùng: crontab -e, thêm dòng sau để chạy lúc 2 giờ sáng mỗi ngày:

0 2 * * * /home/user/scripts/backup.sh >/dev/null 2>&1

Các biến thể lịch thường dùng:

  • Mỗi 6 tiếng: 0 */6 * * *
  • Mỗi giờ: 0 * * * *
  • Chỉ cuối tuần: 0 2 * * 0,6

Cron chạy với môi trường tối thiểu, nên script phải dùng đường dẫn tuyệt đối cho mọi lệnh và file. Nếu rclone được cài ở /usr/bin/rclone thì không vấn đề, còn nếu cài ở /usr/local/bin/rclone hãy thêm export PATH=/usr/local/bin:$PATH vào đầu script.

Các lớp bảo vệ nâng cao

  • Versioning: Bật versioning trên remote (Google Drive, S3, B2) để khôi phục file bị xóa hoặc sửa nhầm. rclone hỗ trợ --backup-dir để lưu bản cũ trước khi ghi đè.
  • Encryption: Dùng rclone crypt tạo remote mã hóa phía trên remote gốc. Dữ liệu được mã hóa AES-256 trước khi upload, key chỉ do bạn nắm giữ. Cấu hình: rclone config, chọn type crypt, remote gốc là gdrive:Encrypted.
  • Dry-run trước khi sync thật: Chạy rclone sync --dry-run "$SRC" "$DEST" để xem danh sách file sẽ thay đổi mà không thực sự ghi.
  • Monitoring và cảnh báo: Thêm vào script việc gửi webhook Telegram hoặc email khi hoàn thành hoặc gặp lỗi. Ví dụ dùng curl gửi tới Telegram Bot API.
  • Rotate log: Thiết lập logrotate cho /var/log/rclone-backup.log để tránh log đầy ổ đĩa.

Kết luận

Với rclone và cron, bạn có một giải pháp backup toàn diện: miễn phí, mở, hỗ trợ hàng chục nơi lưu trữ, có khả năng mã hóa phía client, và chạy hoàn toàn tự động. Không phụ thuộc vào một nhà cung cấp cloud đơn lẻ, bạn có thể dễ dàng thay đổi đích backup hoặc thêm nhiều đích song song để tăng tính dự phòng. Hãy bắt đầu bằng một script đơn giản, sau đó gia cố dần các lớp bảo vệ nâng cao theo nhu cầu thực tế.

Nguồn tham khảo: DEV Community — Automated Backups with cron and RCloneKBeezie — Automated Off-Site Backups with rclone

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Tailscale VPN Mesh: Kết Nối Mạng An Toàn Từ Mọi Nơi

Tailscale là giải pháp VPN mesh dựa trên WireGuard cho phép kết nối tất cả thiết bị của bạn thành một mạng an toàn duy nhất. Với Tailscale, bạn không…

Xem thêm

Tmux: Quản Lý Nhiều Terminal Phiên Đồng Thời

Tmux: Quản Lý Nhiều Terminal Phiên Đồng Thời Developer làm việc trên nhiều tmux session tăng năng suất Tmux là terminal multiplexer cho phép bạn chạy nhiều phiên terminal trong…

Xem thêm

OBS Studio: Phần mềm quay màn hình miễn phí cho mọi nền tảng

OBS Studio: Phần mềm quay màn hình miễn phí cho mọi nền tảng OBS Studio (Open Broadcaster Software) là phần mềm mã nguồn mở miễn phí dùng để quay màn…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất