Bạn đang truyền một file dung lượng lớn qua lệnh scp và kết nối mạng đột ngột bị ngắt? Thật khó chịu khi phải bắt đầu lại từ đầu. Bài viết này sẽ hướng dẫn bạn cách sử dụng công cụ rsync mạnh mẽ để tiếp tục quá trình truyền file ngay tại điểm bị gián đoạn.

So sánh nhanh: scp và rsync

Cả hai đều là công cụ truyền file qua SSH, nhưng có sự khác biệt lớn:

  • scp (Secure Copy): Đơn giản, an toàn, phù hợp để sao chép các file nhỏ một lần. Tuy nhiên, nó không hỗ trợ tiếp tục khi bị gián đoạn.
  • rsync (Remote Sync): Mạnh mẽ hơn rất nhiều, có khả năng đồng bộ hóa (chỉ truyền những phần thay đổi), nén dữ liệu và quan trọng nhất là có thể tiếp tục các phiên truyền file bị lỗi.

Tình huống: Truyền file bằng scp và bị lỗi

Giả sử bạn đang cố gắng 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/user/backups/

Khi quá trình đang chạy giữa chừng thì kết nối mạng của bạn bị mất. Thay vì chạy lại lệnh scp từ đầu, chúng ta sẽ dùng rsync để tiếp tục.

Giải pháp: Dùng rsync để tiếp tục truyền file

Hãy mở lại terminal và thực hiện lệnh sau:

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

rsync sẽ kiểm tra file đã có một phần ở máy chủ đích và chỉ truyền những phần còn thiếu, giúp bạn tiết kiệm rất nhiều thời gian.

Giải thích lệnh rsync

Hãy cùng phân tích các cờ lệnh quan trọng đã được sử dụng:

  • -a (archive): Bật chế độ lưu trữ, tương đương với -rlptgoD. Nó sẽ giữ nguyên các thuộc tính của file như quyền hạn, chủ sở hữu, dấu thời gian, v.v.
  • -v (verbose): Hiển thị chi tiết quá trình thực hiện.
  • -P: Đây là cờ lệnh rất hữu ích, nó là sự kết hợp của --progress (hiển thị tiến trình) và --partial (giữ lại các file được truyền dở dang). Đây chính là yếu tố then chốt giúp rsync có thể tiếp tục truyền file.
  • --rsh=ssh: Chỉ định rằng rsync phải sử dụng giao thức SSH để kết nối, đảm bảo quá trình truyền file được mã hóa và an toàn, tương tự như scp.

Mẹo: Tạo Alias để sử dụng nhanh

Để không phải gõ lại lệnh dài mỗi lần, bạn có thể tạo một lệnh tắt (alias) trong file cấu hình shell của mình (ví dụ: ~/.bashrc hoặc ~/.zshrc).

Thêm dòng sau vào cuối file:

alias scpresume='rsync -avP --rsh=ssh'

Lưu file lại và chạy lệnh source ~/.bashrc (hoặc source ~/.zshrc). Từ lần sau, bạn chỉ cần gõ:

scpresume large-backup.tar.gz username@remote_server:/home/user/backups/

Kết luận

Trong khi scp là lựa chọn tuyệt vời cho việc sao chép nhanh các file nhỏ, rsync mới thực sự là công cụ chuyên nghiệp cho các tác vụ truyền file lớn hoặc trên các đường truyền không ổn định. Khả năng tiếp tục phiên bị lỗi của nó là một cứu cánh thực sự giúp tiết kiệm thời gian và công sức.

Chia sẻ:
Đánh giá:

( Có: 1 đánh giá. Trung bình 5, thang điểm: 1 đến 5 )