Artykuł na temat konfigurowania blogów Ghost mówi o używaniu scp
do kopiowania z mojego komputera lokalnego na zdalny serwer:
scp -r ghost-0.3 root@*your-server-ip*:~/
Jednak Railscast 339: Chef Solo Basics używa scp
do kopiowania w przeciwnym kierunku (z serwera zdalnego do komputera lokalnego):
scp -r [email protected]:/var/chef .
W tym samym Railscast, gdy autor chce skopiować pliki na zdalny serwer (w tym samym kierunku, co w pierwszym przykładzie), używa rsync
:
rsync -r . [email protected]:/var/chef
Po co używać rsync
polecenia, jeśli scp
kopiuje się w obu kierunkach? Czym się scp
różni rsync
?
Odpowiedzi:
Główną różnicą między tymi narzędziami jest sposób kopiowania plików.
scp
w zasadzie czyta plik źródłowy i zapisuje go w miejscu docelowym. Wykonuje zwykłą liniową kopię, lokalnie lub przez sieć.rsync
kopiuje także pliki lokalnie lub przez sieć. Ale wykorzystuje specjalny algorytm transferu delta i kilka optymalizacji, aby znacznie przyspieszyć działanie. Rozważ połączenie.rsync
sprawdzi rozmiary plików i znaczniki czasu modyfikacji zarówno A, jak i B , i pominie dalsze przetwarzanie, jeśli się zgadzają.Jeśli plik docelowy B już istnieje, algorytm transferu delta upewni się, że tylko różnice między A i B zostaną przesłane przewodem.
rsync
będzie zapisywać dane do pliku tymczasowego T , a następnie zastąpić plik docelowy B z T , aby wygląd update „atomowy” do procesów, które mogą być z wykorzystaniem B .Kolejna różnica między nimi dotyczy inwokacji.
rsync
ma mnóstwo opcji wiersza poleceń, co pozwala użytkownikowi dokładnie dostosować jego zachowanie. Obsługuje złożone reguły filtrowania, działa w trybie wsadowym, w trybie demona itp.scp
Ma tylko kilka przełączników.Podsumowując, używaj
scp
do codziennych zadań. Polecenia, które wpisujesz raz na jakiś czas w interaktywnej powłoce. Jest prostszy w użyciu, a w takich przypadkachrsync
optymalizacje niewiele pomogą.Do powtarzających się zadań, takich jak
cron
zadania, użyjrsync
. Jak wspomniano, przy wielu wywołaniach skorzysta z danych już przesłanych, działa bardzo szybko i oszczędza zasoby. Jest to doskonałe narzędzie do synchronizacji dwóch katalogów w sieci.Również, gdy mamy do czynienia z dużymi plikami, korzystać
rsync
z-P
opcji. Jeśli transfer zostanie przerwany, możesz go wznowić w miejscu, w którym został zatrzymany, ponownie wydając polecenie. Zobacz Sid Kshatriya za odpowiedź .źródło
scp
jest bardziej prawdopodobne, że będzie dostępny w systemie podobnym do Uniksa, więc od czasu do czasu zapobiegasz irytującemu poleceniu „nie znaleziono”.scp
irsync
:rsync -a
wscp -rp
celu zachowania czasów modyfikacji i uprawnień.rysnc może być przydatny do uruchamiania na wolnych i zawodnych połączeniach. Więc jeśli pobieranie zostanie przerwane w środku dużego pliku, rysnc będzie mógł kontynuować od miejsca, w którym przerwał po ponownym wywołaniu.
Posługiwać się
rsync -vP username@host:/path/to/file .
Opcja -P zachowuje częściowo pobrane pliki, a także pokazuje postęp.
Jak zwykle sprawdź
man rsync
źródło
Różnica b / w scp i rsync dla różnych parametrów
1. Wydajność w stosunku do opóźnienia
scp
: scp jest stosunkowo mniej optymalizowany i szybszyrsync
: rsync jest stosunkowo bardziej zoptymalizowany i przyspieszahttps://www.disk91.com/2014/technology/networks/compare-performance-of-different-file-transfer-protocol-over-latency/
2. Obsługa przerwań
scp
: narzędzie wiersza polecenia scp nie może wznowić przerwanego pobierania z utraconych połączeń sieciowychrsync
: Jeśli powyższa sesja rsync zostanie przerwana, możesz ją wznowić tyle razy, ile chcesz, wpisując to samo polecenie. rsync automatycznie zrestartuje transfer w miejscu, w którym zostało przerwane.http://ask.xmodulo.com/resume-large-scp-file-transfer-linux.html
3. Przykład polecenia
scp
rsync
-P
Opcja jest taka sama jak--partial --progress
, pozwalając rsync do pracy z częściowo pobranych plików. Ta--rsh=ssh
opcja mówi rsync, aby używała ssh jako zdalnej powłoki.4. Bezpieczeństwo:
scp jest bezpieczniejszy. Musisz użyć,
rsync --rsh=ssh
aby uczynić go tak bezpiecznym jak scp.dokument, aby dowiedzieć się więcej:
źródło
The scp protocol is outdated, inflexible and not readily fixed. We recommend the use of more modern protocols like sftp and rsync for file transfer instead.
Jedną z głównych cech
rsync
overscp
(oprócz algorytmu delta i szyfrowania, jeśli jest używany w / ssh) jest to, że automatycznie weryfikuje, czy przesłany plik został poprawnie przesłany. Scp tego nie zrobi, co czasami może spowodować uszkodzenie podczas przesyłania większych plików. Ogólnie więc rsync jest kopią z gwarancją .Strony Centos wspominają o tym na końcu
--checksum
opisu opcji:źródło
Jest dla mnie rozróżnienie, które
scp
zawsze jest szyfrowane za pomocą ssh (bezpieczna powłoka), alersync
niekoniecznie jest szyfrowane. Mówiąc dokładniej,rsync
sam nie wykonuje żadnego szyfrowania; nadal może korzystać z innych mechanizmów (na przykład ssh) do szyfrowania.Oprócz bezpieczeństwa szyfrowanie ma również duży wpływ na szybkość przesyłania, a także na obciążenie procesora. (Moje doświadczenie jest takie, że
rsync
może być znacznie szybsze niżscp
.)Sprawdź ten wpis, kiedy
rsync
jest włączone szyfrowanie.źródło
scp jest najlepszy dla jednego pliku.
LUB połączenie
tar
i kompresja dla mniejszych zestawów danych, takich jak drzewa kodu źródłowego z małymi zasobami ( np . Obrazy, sqlite itp .).Jednak kiedy zaczynasz zajmować się większymi tomami, powiedz:
Niepraktyczne staje się budowanie pliku zip / tar.gz , który w tym momencie zostanie przesłany za pomocą scp do fizycznych ograniczeń hostowanego serwera.
Jako ćwiczenie można zrobić kilka gimnastyka jak rurociągi
tar
dossh
i przekierowanie wyników do zdalnego pliku. (oszczędzając konieczności zbudowania swapu lub tymczasowego klonowania, czyli zip lub tar.gz)Jednakże ,
Proces rsync upraszcza ten proces i umożliwia przesyłanie danych bez zajmowania dodatkowego miejsca na dysku.
również ,
Ciągłe aktualizacje (cron?) Wykorzystują minimalne zmiany w porównaniu z pełnymi klonowanymi kopiami, które przyspieszają migrację dużych danych w czasie.
tl; dr
scp
== mała skala (z miejscem na skompresowane pliki na tym samym dysku)rsync
== duża skala (z koniecznością tworzenia kopii zapasowych dużych danych i bez miejsca)źródło
lepiej myśleć w praktycznym kontekście. W naszym zespole
rsync -aP
zastępujemy złego hosta Cassandra w naszym klastrze. Nie możemy tego zrobić za pomocą scp (powolne i bez zachowania postępu).źródło