Cách tiếp tục (resume) file truyền bị gián đoạn bằng Rsync

rsync cho phép tiếp tục (resume) quá trình truyền file bị gián đoạn qua SSH mà không cần truyền lại từ đầu – giải pháp hoàn hảo thay thế cho lệnh scp khi xử lý các file dữ liệu lớn.

Tóm tắt nhanh (Quick Answer)

Nếu file truyền bằng scp bị gián đoạn giữa chừng, bạn có thể thay thế bằng rsync để tiếp tục truyền từ phần đang dở dang:

rsync -avP --rsh=ssh file.zip user@remote:/path/

Tùy chọn -P (bao gồm --progress--partial) cho phép rsync giữ lại phần file đã truyền và tiếp tục truyền từ vị trí bị gián đoạn.

Việc đứt kết nối mạng khi đang chuyển một file backup dung lượng vài chục GB trên VPS Linux là một thảm họa nếu bạn dùng lệnh scp (bắt buộc phải truyền lại từ byte số 0). Bài viết này sẽ hướng dẫn bạn sử dụng công cụ chuyên nghiệp rsync để khắc phục triệt để vấn đề này, giúp tiết kiệm thời gian và băng thông hiệu quả.

Nội dung chính

1. Các lệnh Rsync Resume nhanh (Bảng tra cứu)

Dưới đây là các cấu trúc lệnh rsync chuẩn nhất để Resume trong từng tình huống cụ thể (Upload/Download):

Tác vụ (Task) Lệnh thực thi (Command)
Resume Upload (Đẩy lên VPS) rsync -avP file.zip user@server_ip:/path/
Resume Download (Tải về Local) rsync -avP user@server_ip:/path/file.zip .
Nối file cứng (Append Verify) rsync -av --append-verify file.zip user@server_ip:/path/
Cổng SSH tùy chỉnh (Custom Port) rsync -avP -e 'ssh -p 2222' file.zip user@server_ip:/path/

2. Ví dụ thực tế: Cách tiếp tục file truyền bị gián đoạn

Giả sử bạn đang sao chép file large-backup.tar.gz đến máy chủ từ xa bằng lệnh scp large-backup.tar.gz username@remote_server:/home/backups/ và bị đứt kết nối mạng ở mức 40%.

Đừng dùng lại lệnh cũ! Hãy mở terminal và chạy lệnh sau:

RSYNC RESUME UPLOAD
rsync -avP --rsh=ssh large-backup.tar.gz username@remote_server:/home/backups/

Hệ thống rsync sẽ quét 40% file hiện có trên máy chủ đích, phát hiện phần giống nhau và chỉ bắt đầu truyền dữ liệu từ mức 41% trở đi.

3. Vì sao Rsync tốt hơn SCP khi truyền file lớn?

  • SCP (Secure Copy): Rất nhanh và an toàn cho file nhỏ. Nhược điểm chí mạng là nó không thể "Resume". Nếu truyền file 100GB mà rớt mạng ở mức 99GB, SCP sẽ bắt đầu lại từ 0GB. Nó cũng ghi đè (overwrite) toàn bộ file đích không thương tiếc.
  • Rsync (Remote Sync): Sử dụng thuật toán "Delta-transfer". Nó cắt file ra thành nhiều khối (block) nhỏ để so sánh hash giữa file nguồn và đích. Vì vậy, Rsync có khả năng "chắp vá" và phục hồi (Resume) chính xác những block bị thiếu.

4. Giải thích các tham số Rsync hữu ích

Để thực sự làm chủ quá trình đồng bộ, bạn cần hiểu các cờ (flags) điều khiển hành vi của rsync:

  • -a (archive): Bật chế độ lưu trữ (tương đương -rlptgoD). Giữ nguyên toàn bộ cấu trúc quyền hạn (permissions), owner và timestamp gốc.
  • -v (verbose): Hiển thị chi tiết danh sách file đang xử lý trên màn hình.
  • -P (Progress & Partial): Đây là cờ quan trọng nhất để Resume.
    • --progress: Hiển thị thanh tiến trình, tốc độ và ETA (thời gian dự kiến hoàn thành).
    • --partial: Giữ lại phần file bị lỗi thay vì xóa đi. Nhờ đó, rsync mới có cơ sở dữ liệu để chạy tiếp ở lần sau.
  • --append-verify (Tùy chọn nâng cao): Chế độ nối file siêu tốc. Thay vì so sánh băm toàn bộ 40% file đầu tiên (rất ngốn CPU và ổ cứng đối với file siêu lớn), nó mặc định đoạn đầu giống nhau, nối thẳng đoạn thiếu vào đuôi file và chỉ verify checksum khi hoàn tất.

5. Mẹo: Tạo Alias (phím tắt) để sử dụng nhanh

Để không phải gõ cụm rsync -avP dài dòng, bạn có thể tạo một alias trong file cấu hình Shell (~/.bashrc hoặc ~/.zshrc).

CREATE ALIAS
echo "alias scpresume='rsync -avP --rsh=ssh'" >> ~/.bashrc
source ~/.bashrc

Từ nay, thay vì dùng lệnh scp, bạn chỉ cần gõ scpresume file.zip user@server:/path/.

6. Kết luận

Đối với các System Administrator, lệnh rsync -avP là kỹ năng sinh tồn (survival skill) khi làm việc trên môi trường mạng không dây hoặc kết nối quốc tế chập chờn. Hãy luôn dùng rsync thay cho scp khi cần di chuyển các gói dữ liệu có dung lượng từ vài trăm MB trở lên.

Quá trình đồng bộ dữ liệu đang làm nghẽn mạng và CPU của bạn?

Truyền tải các bản backup khổng lồ giữa các máy chủ thường tiêu tốn rất nhiều chu kỳ I/O và băng thông mạng. Sử dụng hạ tầng có cổng mạng lớn và SSD tốc độ cao sẽ giảm thiểu rủi ro đứt kết nối và rút ngắn thời gian đồng bộ rsync đi nhiều lần.

Các hướng dẫn kỹ thuật khác

Khám phá thêm các hướng dẫn kỹ thuật, thủ thuật quản trị hệ thống và bài viết phân tích giúp tối ưu hiệu năng và vận hành VPS hoặc máy chủ hiệu quả.