Odpowiedzi:
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ś -z
opcję 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ę -C
opcję. 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 rsync
używały rsh zamiast ssh jako domyślnej warstwy transportowej, więc uczciwe porównanie byłoby pomiędzy rsync
i rcp
. Ale ssh jest domyślną wersją od wersji 2.6.0 wydanej 01.01.2004.
Przy identycznych ustawieniach kompresji oczekiwałbym rsync
i scp
miałby zasadniczo taką samą prędkość. Udostępnij wyniki testów porównawczych, jeśli znajdziesz inne.
rsync -z
wciąż jest DROGA szybszy niż scp
przy jakiejkolwiek kompresji sugerowanej w tych odpowiedziach. Jest także szybszy niż ręczne kompresowanie i archiwizowanie do jednego pliku i scp
„odczytywanie” tego pliku ( scp
z kompresją nawet wolniejszą). Tak więc pytanie PO pozostaje bez odpowiedzi: wth jest scp
tak wolny w porównaniu do rsync
?
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.
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
)
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.
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ż arcfour
może przyspieszyć szyfrowanie.
Czy ponownie kopiujesz pliki na istniejące? Jeśli tak, istotna będzie zdolność rsync do blokowania porównania i kopiowania tylko różnic.