Różnice między rsync na zdalnym a rsync lokalnym na zamontowanym sshfs?


12

Czy jest jakaś różnica, jeśli uruchomię rsync ze zdalnym hostem (ssh: //) jako źródłem / miejscem docelowym lub użyję ścieżki lokalnej do współdzielenia zamontowanego katalogu przez sshfs?

Czy mogą istnieć różnice w zakresie bezpieczeństwa lub prędkości kopiowania bez użycia przełączników, po prostu wstrzymaj tryb archiwizacji rsync i ścieżkę zdalnego hosta (ssh). To samo dotyczy montowania sshfs tylko ze źródłem i miejscem docelowym (bez zmian szyfru, tylko domyślnie).

Odpowiedzi:


17

SSHFS jest wygodny, ale nie współpracuje dobrze z rsync lub bardziej ogólnie z narzędziami do synchronizacji.

Największym problemem jest to, że SSHFS w dużej mierze zabija optymalizacje wydajności rsync. W szczególności, dla średnich i dużych plików, gdy rsync widzi, że plik został zmodyfikowany, oblicza sumy kontrolne na częściach pliku po każdej stronie, aby przesłać tylko te części, które zostały zmodyfikowane. Jest to optymalizacja tylko wtedy, gdy przepustowość sieci jest znacznie mniejsza niż przepustowość dysku, co zwykle ma miejsce. Ale w przypadku SSHFS przepustowość „dysku” jest w rzeczywistości przepustowością sieci, więc rsync musiałby odczytać cały plik, aby ustalić, co skopiować. W rzeczywistości, z lokalną kopią (która jest, jeśli chodzi o rsync, nawet jeśli jedna ze stron jest na SSHFS), rsync po prostu kopiuje cały plik.

SSHFS ma również negatywny wpływ na wydajność, jeśli istnieje wiele małych plików. Rsync musi sprawdzić przynajmniej metadane każdego pliku, aby ustalić, czy został zmodyfikowany. W przypadku SSHFS wymaga to podróży w obie strony do sieci dla każdego pliku. Dzięki rsync przez SSH obie strony mogą pracować równolegle i przesyłać informacje zbiorczo, co jest znacznie szybsze.

Jeśli chodzi o ograniczenia dostępu, SSHFS wymaga dostępu SFTP, podczas gdy rsync wymaga zdolności do uruchamiania kodu (w szczególności programu rsync) przez powłokę. Jeśli użytkownik nie ma konta powłoki, jest możliwe i powszechne zapewnienie konta specjalnej powłoki, która pozwala na uruchomienie tylko kilku programów, w tym sftp-serveri rsync. Zobacz Czy potrzebujesz powłoki dla SCP?

Jeśli kopiujesz tylko nowe pliki i nie ma bardzo dużej liczby plików, nie ma znaczącej różnicy wydajności.

SSHFS ustanawia połączenie SSH, gdy system plików jest podłączony, i zachowuje to połączenie, dopóki nie zostanie odmontowane. Rsync tworzy nowe połączenie za każdym razem, gdy go uruchomisz, ale możesz użyć funkcji multipleksowania i funkcji piggyback na jednym głównym połączeniu, aby uniknąć uwierzytelnienia za każdym razem.

SSHFS jest systemem plików FUSE i dlatego obsługuje tylko tradycyjne unikatowe metadane i ACL. Rsync może przenosić atrybuty rozszerzone (musisz użyć rsync -aAX, pamiętaj, że zwykły -azachowuje tylko tradycyjne metadane uniksowe).


Na przykład mam pojedynczy skompresowany plik w zamontowanym katalogu SSHFS i ten plik jest kopiowany do mojego katalogu lokalnego. Później ten plik jest aktualizowany w zamontowanym katalogu i chcę skopiować tylko jego zaktualizowaną sekcję do mojego katalogu lokalnego za pomocą rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz. Kiedy używam rsyncdo tej operacji, podczas obliczania sumy kontrolnej w celu przesłania tylko zmodyfikowanych części, czy rsyncpowinien czytać cały plik, który doprowadzi do pobrania pełnych danych zamiast tylko zaktualizowanej sekcji? @Gilles
alper

1
@alper Kiedy używasz rsync nad sshfs, rsync musi odczytać cały plik. Nie może wiedzieć, co w przeciwnym razie wymaga aktualizacji. Nie ma sposobu na optymalizację poprzez przeniesienie tylko sum kontrolnych, ponieważ nie ma sposobu na obliczenie sum kontrolnych na serwerze.
Gilles „SO- przestań być zły”

Czy byłoby tak samo, gdyby docelową lokalizacją był zamontowany folder, a nie sshfspołączenie? Zobacz: unix.stackexchange.com/q/544404/198423 @Gilles
alper

4

Aby odpowiedzieć na twoje główne pytanie: tak, istnieją różnice. Przy sshfsistniejącym połączeniu umożliwiającym dostęp do zdalnych plików przez bezpieczny kanał, a przy rsync przez ssh, ten bezpieczny kanał jest skonfigurowany do komunikowania się ze zdalną instancją rsync .

Aby odpowiedzieć na drugie pytanie: rsync przez ssh będzie szybszy w większości, jeśli nie we wszystkich instancjach, ponieważ rsync w systemie zdalnym zapewnia większą inteligencję w wyszukiwaniu plików, które nie wymagają synchronizacji, ale przede wszystkim dlatego, że działa równolegle z twoim lokalny rsync, aby zebrać te informacje.

Bezpieczeństwo obu sposobów jest takie samo, zakładając, że podobna konfiguracja parametrów ssh (długość klucza, algorytmy) jest taka sama. Domyślne ustawienia dla systemu źródłowego i docelowego zależą od kombinacji dystrybucji w tych systemach.

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.