Dlaczego rsync -avz jest szybszy niż scp -r?

55

Jestem tym trochę zaskoczony? Dlaczego rsync jest szybszy niż scp? Czy rsync nie używa scp poniżej, czy robi coś bardziej wydajnego? Czy jest jakiś sposób na przyspieszenie SCP?

grm
źródło
1
To świeża kopia.
grm

Odpowiedzi:

68

Rsync będzie oczywiście szybszy niż scp, jeśli cel zawiera już niektóre pliki źródłowe, ponieważ rsync kopiuje tylko różnice. Ale podejrzewam, że twoje pytanie dotyczyło robienia prostej kopii na pusty cel.

Przekazałeś -zopcję rsync; włącza się kompresja. Jeśli przepustowość sieci jest czynnikiem ograniczającym (często jest), kompresja może poprawić szybkość transferu o zauważalną wielkość.

Możesz także włączyć kompresję scp, przekazując tę -Copcję. Powinno to dotyczyć nawet rsync. Kompresja nie jest domyślnie włączona w ssh, ponieważ oszczędza przepustowość, ale dodaje opóźnienie i obciążenie procesora; opóźnienie jest złe dla sesji interaktywnych (nie dotyczy scp), a obciążenie procesora jest bezużyteczne, jeśli kopiowane pliki są już skompresowane.

Starsze wersje rsyncużywały rsh zamiast ssh jako domyślnej warstwy transportowej, więc uczciwe porównanie byłoby pomiędzy rsynci rcp. Ale ssh jest domyślną wersją od wersji 2.6.0 wydanej 01.01.2004.

Przy identycznych ustawieniach kompresji oczekiwałbym rsynci scpmiałby zasadniczo taką samą prędkość. Udostępnij wyniki testów porównawczych, jeśli znajdziesz inne.

Gilles „SO- przestań być zły”
źródło
3
Fajnie, użycie -C sprawiło, że moja prędkość transferu wzrosła z 5 MB do 20 MB
3ɾɾǝʞ 03
Właśnie przetestowałem to dla katalogu zawierającego 16 plików o wielkości około 3-9 MB i rsync -zwciąż jest DROGA szybszy niż scpprzy jakiejkolwiek kompresji sugerowanej w tych odpowiedziach. Jest także szybszy niż ręczne kompresowanie i archiwizowanie do jednego pliku i scp„odczytywanie” tego pliku ( scpz kompresją nawet wolniejszą). Tak więc pytanie PO pozostaje bez odpowiedzi: wth jest scptak wolny w porównaniu do rsync?
ohcibi
12

spróbuj scp w szybki sposób

scp -p -C -o 'CompressionLevel 9' -o 'IPQoS throughput'  -c arcfour machine:file .

te opcje przyspieszają scp 5 razy w mojej konfiguracji w porównaniu do zwykłego komputera scp: plik.

Aktualizacja, 2017 r

W rzeczywistości scp działa powoli z powodu złego zarządzania szczegółami TCP, takimi jak MTU i rozmiar bufora. Na szczęście zostało to naprawione przez projekt HPN SSH . O ile mi wiadomo, możesz użyć HPN SSH jako transportu rsync.

Peter K.
źródło
1
Wielkie dzieki!! Zawsze jednak zawsze rób to scp -p(zachowaj datę / czas) jako domyślną i prawdopodobnie -r(rekurencyjną) tak scp -pr -C .... (Musiałem tylko wyszorować i zrestartować zadanie scp 40 Gb za pomocą tych, ponieważ zapomniałem -p)
smci 24.10.17
Dodałem -p do polecenia, dzięki za podpowiedź.
Peter K
4

Kiedyś było na odwrót, ale sądzę, że prędkość rsync znacznie się poprawiła w ostatnich kilku wersjach. Zależy to również od liczby kopiowanych plików. Jeśli to dużo, rsync zwykle będzie szybszy, ponieważ scp spawnuje nowy proces dla każdego kopiowanego pliku. Możesz spróbować osłabić użycie szyfru scp, aby sprawdzić, czy przyspieszy. Pamiętam, że szyfr w arcfour był najszybszy.

churnd
źródło
2
Scp nie odradza nowego procesu dla każdego kopiowanego pliku. Masz jeden proces po stronie wysyłającej i jeden po stronie odbierającej, podobnie jak w przypadku rsync.
Kenster
3

W przypadku dużej liczby małych plików rysnc jest znacznie szybszy niż scp. Mówią, że to dlatego, że ma mniejszy narzut. W przypadku jednego dużego pliku oczekiwałbym podobnych wyników.

sencer
źródło
3

Do moich testów rsync jest szybszy niż scp , możesz użyć iotop do przetestowania ich podczas przesyłania tego samego pliku:

sudo iotop -o

Może otrzymasz inny wynik, ale możesz sam je przetestować. BTW, podczas korzystania z scp , nie zapominaj, aby wybrać swój szyfr za pomocą:

scp -c arcfour <source> <dest>

Chociaż arcfourmoże przyspieszyć szyfrowanie.

coanor
źródło
0

Czy ponownie kopiujesz pliki na istniejące? Jeśli tak, istotna będzie zdolność rsync do blokowania porównania i kopiowania tylko różnic.

Linker3000
źródło