Tại sao rsync của tôi quá chậm so với cp thuần hoặc thậm chí là scp?


15

Tôi đang chuyển các tệp từ Linux sang Windows 7 thông qua chia sẻ được gắn kết (chia sẻ được gắn từ Windows trên Linux) .. Tôi đang sao chép nhiều dữ liệu (tức là gần một TB) từ máy cũ sang máy mới trong mạng LAN của tôi . Thật không may là tôi chỉ có 100MBit. Tự nhiên tôi mù quáng sử dụng rsync nhưng đã tự hỏi sau một ngày tại sao nó lại cảm thấy chậm như vậy. Kích hoạt đồng hồ đo tiến độ cho thấy tốc độ truyền của tôi khoảng 2MB / s.

Vì vậy, tôi đã lấy một tệp lớn hợp lý (800MB) và theo dõi thời gian chuyển (1):

cp : 05:33
scp (2): 06:33
rsync : 21:51

1) Tôi đã xóa các tệp giữa mỗi lần chạy
2) scp qua localhost vào cùng một máy Linux trực tiếp trên phần chia sẻ; hoàn toàn vô dụng nhưng cung cấp một máy đo tiến độ

Các xét nghiệm đơn giản như

(cp|scp|rsync) <source> <destination>

Không có đối số đặc biệt ngoại trừ máy chủ / cổng cho scp. Tôi thậm chí đã thử -Wchuyển đổi cho rsync nhưng đã hủy sau mười phút. rsync là 3.0.3 chạy trên Lenny. Để có thể làm gián đoạn quá trình sao chép bất cứ lúc nào và tiếp tục dẫn tôi đến rsync, nhưng bây giờ tôi nghĩ rằng tôi thực sự cần phải xem xét lại yêu cầu này.

Làm thế nào là một sự khác biệt lớn như vậy có thể?

Cập nhật / Giải quyết:

Nhờ rschuler tôi đã có thể giải quyết vấn đề: sử dụng daemon rsync thay vì gắn smb vì lý do hiệu quả. DeltaCopy cho biết hoạt động, nhưng người ta phải coi chừng một vài điều

  • đó là một trình bao bọc GUI đẹp nhưng nếu có lỗi xảy ra, thật tốt khi biết cách khắc phục. Có vẻ như tôi đã nhập thông tin đăng nhập của người dùng, theo đó để chạy dịch vụ rsync, lần đầu tiên tôi đã sai nhưng GUI không cho phép tôi đặt một thông tin mới. Tôi đã tìm ra nó đang hoạt động như một dịch vụ và có thể đặt thông tin xác thực phù hợp ở đó
  • Cần thêm thủ công cổng vào tường lửa để cho phép kết nối
  • Hương vị cá nhân: đảm bảo các cổ phiếu được bảo vệ bằng mật khẩu hoặc nếu không, có thể đảm bảo dịch vụ không tự động bắt đầu với windows; chỉ trong trường hợp
  • Nhị phân rsync được bao bọc không phải là một cổng Windows gốc mà được xây dựng trên cygwin. Tuy nhiên, DLL cygwin chứa không xử lý UTF8 đúng cách và đọc sai các ký tự không phải mã ascii. Nhận một DLL cố định từ http://www.okisoft.co.jp/esc/utf8-cygwin/ .

Sau đó, xếp hạng chuyển đã tăng vọt từ 2MB / s lên ~ 8MB / s; hoàn toàn tuyệt vời


Bạn đã xóa tệp đích giữa mỗi lần chạy thử chưa? Nếu tệp đích đã tồn tại và dữ liệu meta không chính xác thì nó sẽ cần kiểm tra cả nguồn và đích.
Zoredache

@Zoredache: Tôi đã xóa các tệp giữa các lần chạy; Ngoài ra, -Wcông tắc được cho là bỏ qua điều đó
đánh dấu

Câu trả lời:


18

(chia sẻ được gắn kết từ Windows trên Linux)

Đó là vấn đề của bạn. rsync đang thực hiện kiểm tra cán qua điểm đến. Các cửa sổ chia sẻ. Bạn đang kéo tất cả dữ liệu qua mạng để tính toán tổng. (Có thể nhiều hơn một lần).

Những gì bạn cần làm là có rsync chạy trên cả hai máy. Bằng cách đó, chỉ những khác biệt (và tổng kiểm tra) sẽ được chuyển qua cáp mạng. DeltaCopy là một rsync cửa sổ. Nó có tài liệu đủ tốt để giúp bạn đi.

Xem câu trả lời được bình chọn cho câu hỏi này để được giải thích rõ hơn tại sao tôi nghĩ bạn có thể đang lạm dụng rsync.


Bingo, câu trả lời của bạn không thể nhiều hơn đến điểm. Rất cám ơn, tôi đã học được bài học của mình.
đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.