Dlaczego mój rsync jest tak wolny w porównaniu do czystego CP lub nawet SCP?


15

Przesyłam pliki z systemu Linux do systemu Windows 7 za pośrednictwem zamontowanego udziału (udział jest montowany z systemu Windows w systemie Linux). Kopiuję dużo danych (tj. Prawie TB) ze starego na nowy komputer w mojej sieci LAN . Mam już dość szczęścia, że ​​mam tylko 100 MB. Oczywiście na ślepo korzystałem z rsync, ale już po dniu zastanawiałem się, dlaczego tak wolno. Włączenie miernika postępu pokazało moją prędkość transferu około 2 MB / s.

Więc wziąłem rozsądny duży plik (800 MB) i śledziłem czas przesyłania (1):

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

1) Usunąłem pliki między każdym uruchomieniem
2) scp przez localhost na tym samym komputerze z Linuksem bezpośrednio do udziału; całkowicie bezużyteczne, ale zapewniło wskaźnik postępu

Testy były tak proste jak

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

Brak specjalnych argumentów oprócz hosta / portu dla scp. Próbowałem nawet -Wprzełącznika rsync, ale anulowałem go po dziesięciu minutach. rsync to 3.0.3 działający na Lennym. Aby móc przerwać proces kopiowania w dowolnym momencie i wznowić, poprowadź mnie do rsync, ale teraz myślę, że poważnie muszę ponownie rozważyć to wymaganie.

Jak możliwa jest tak duża różnica?

Aktualizacja / rozwiązana:

Dzięki rschuler udało mi się rozwiązać problem: użyj demona rsync zamiast montowania smb ze względów wydajnościowych. Wspomniana DeltaCopy działa, ale trzeba uważać na kilka rzeczy

  • to fajne opakowanie GUI, ale jeśli coś idzie nie tak, dobrze jest wiedzieć, jak to naprawić. Wygląda na to, że wprowadziłem moje poświadczenia użytkownika, pod którymi do uruchomienia usługi rsync, po raz pierwszy źle, ale GUI nie pozwoliło mi ustawić nowego. Doszedłem do wniosku, że działa jako usługa i byłem w stanie ustawić tam odpowiednie poświadczenia
  • Konieczne było ręczne dodanie portu do zapory, aby umożliwić połączenia
  • Osobisty gust: upewnij się, że udziały są chronione hasłem lub jeśli nie, może upewnij się, że usługa nie uruchamia się automatycznie w systemie Windows; w razie czego
  • Zawijany plik binarny rsync nie jest rodzimym portem Windows, ale opiera się na cygwin. Jednak zawarta biblioteka DLL cygwin nie obsługuje poprawnie UTF8 i zniekształconych znaków innych niż ascii. Uzyskaj stałą bibliotekę DLL ze strony http://www.okisoft.co.jp/esc/utf8-cygwin/ .

Następnie skala transferu wzrosła z 2 MB / s do ~ 8 MB / s; absolutnie fantastyczny!


Czy usunąłeś plik docelowy między każdym testem? Jeśli plik docelowy już istniał, a metadane były niepoprawne, musiałby suma kontrolna zarówno źródłowa, jak i docelowa.
Zoredache

@Zoredache: Usunąłem pliki między uruchomieniami; również -Wprzełącznik powinien to zignorować
zaznacz

Odpowiedzi:


18

(udział jest montowany z systemu Windows w systemie Linux)

To jest twój problem. rsync robi sumy kontrolne nad miejscem docelowym. Udostępnianie systemu Windows. Pobierasz wszystkie dane przez sieć, aby obliczyć sumy kontrolne. (Prawdopodobnie więcej niż raz).

Musisz tylko uruchomić rsync na obu komputerach. W ten sposób tylko różnice (i sumy kontrolne) zostaną przesłane przez kabel sieciowy. DeltaCopy to rsync z okienkami. Ma wystarczająco dobrych dokumentów, aby zacząć.

Zobacz lepiej głosowaną odpowiedź na to pytanie, aby uzyskać lepsze wyjaśnienie, dlaczego myślę, że niewłaściwie używasz rsync.


Bingo, twoja odpowiedź nie może być bardziej do rzeczy. Wielkie dzięki, nauczyłem się mojej lekcji.
zaznacz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.