Sự khác biệt chính giữa các công cụ này là cách chúng sao chép các tập tin.
scp
về cơ bản đọc tệp nguồn và ghi nó đến đích. Nó thực hiện một bản sao tuyến tính đơn giản, cục bộ hoặc qua mạng.
rsync
cũng sao chép các tập tin cục bộ hoặc qua mạng. Nhưng nó sử dụng một thuật toán chuyển delta đặc biệt và một vài tối ưu hóa để làm cho hoạt động nhanh hơn rất nhiều. Hãy xem xét cuộc gọi.
rsync A host:B
rsync
sẽ kiểm tra kích thước tệp và dấu thời gian sửa đổi của cả A và B và bỏ qua mọi xử lý tiếp theo nếu chúng khớp.
Nếu tệp đích B đã tồn tại, thuật toán chuyển delta sẽ đảm bảo chỉ có sự khác biệt giữa A và B được gửi qua dây.
rsync
sẽ ghi dữ liệu vào một tập tin tạm thời T , và sau đó thay thế file đích B với T để thực hiện cập nhật cái nhìn "nguyên tử" để quá trình mà có thể được sử dụng B .
Một sự khác biệt khác giữa họ liên quan đến việc gọi. rsync
có rất nhiều tùy chọn dòng lệnh, cho phép người dùng tinh chỉnh hành vi của nó. Nó hỗ trợ các quy tắc lọc phức tạp, chạy trong chế độ hàng loạt, chế độ daemon, v.v. scp
chỉ có một vài công tắc.
Tóm lại, sử dụng scp
cho các nhiệm vụ hàng ngày của bạn. Các lệnh mà bạn gõ một lần trong vỏ tương tác của bạn. Việc sử dụng đơn giản hơn và trong những trường hợp đó, việc rsync
tối ưu hóa sẽ không giúp ích nhiều.
Đối với các nhiệm vụ định kỳ, như cron
công việc, sử dụng rsync
. Như đã đề cập, trên nhiều yêu cầu, nó sẽ tận dụng dữ liệu đã được chuyển, thực hiện rất nhanh và tiết kiệm tài nguyên. Nó là một công cụ tuyệt vời để giữ cho hai thư mục được đồng bộ hóa qua mạng.
Ngoài ra, khi xử lý các tệp lớn, sử dụng rsync
với -P
tùy chọn. Nếu quá trình chuyển bị gián đoạn, bạn có thể tiếp tục chuyển đến nơi đã dừng bằng cách phát lại lệnh. Xem câu trả lời của Sid Kshatriya .