Rsync przez ssh, czy coś jeszcze?

10

Próbowałem użyć rsync na OSX do Linuxa lub Unixa, nad którym nie mam dużej kontroli. Robiłem coś takiego

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 

Wystąpił błąd:

bash: rsync: nie znaleziono polecenia rsync: połączenie nieoczekiwanie zamknięte (do tej pory odebrano 0 bajtów) [odbiornik] błąd rsync: nie znaleziono polecenia zdalnego (kod 127) w /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [odbiornik = 2.6.9]

Jednak po przeczytaniu dokumentacji zaczynam myśleć, że tak naprawdę musiałbym zainstalować demona rsync na zdalnym hoście.

  1. Czy muszę zainstalować serwer rsync na zdalnym hoście?
  2. Darmowe alternatywy - GUI lub inne niż GUI - które nie wymagają instalowania niczego na zdalnym hoście ?

Dzięki!

Dan Rosenstark
źródło
1
Jakie dokładnie masz problemy z bieżącym poleceniem?
fideli
@fideli, przepraszam, zapomniałem o tym. Edycja pytania teraz
Dan Rosenstark
1
Dzięki za to pytanie, ale czy możesz je otagować rsync?
Andrew Grimm,

Odpowiedzi:

21

Potrzebujesz komendy rsync na serwerze, ale nie musisz uruchamiać demona.

Uzyskać rsync binarnego, który działa na serwerze, umieścić go gdzieś w domu, i dodać tę flagę do linii komend: --rsync-path=/home/user/path/to/rsync.

Jeśli nie chcesz kopiować rsync na serwery, możesz użyć scp lub sshfs.

sshfs user@host ~/sync/user-host
rsync -av ~/local-dir ~/sync/user-host/remote-dir

W takim przypadku rsync będzie działał całkowicie lokalnie, ale zmiany zostaną propagowane na serwer.

Tobu
źródło
Bardzo podoba mi się to rozwiązanie, szczególnie dlatego, że serwer to tani hosting na GoDaddy i wątpię, czy będę w stanie uruchomić rsync na serwerze. +1 na teraz!
Dan Rosenstark,
Jaka jest najłatwiejsza droga do instalacji sshfs na OSX? MacFuse czy jest coś łatwiejszego?
Dan Rosenstark,
MacFuse + (MacFusion lub sshfs-static-leopard), myślę (nie jestem użytkownikiem OSX)
Tobu
Tak, MacFuse to robi. Wystarczy, że strona pobierania pliku binarnego sshfs zawiera plik binarny z rozszerzeniem .gz. Musisz więc zmienić nazwę zamiast strzelać z pistoletu. Irytujące, ale teraz w porządku! Dzięki
Dan Rosenstark,
6

Musisz mieć rsync na zdalnym hoście - niekoniecznie serwer rsync (który, jak sądzę, i tak nie obsłuży połączenia ssl), ale rsync na lokalnym urządzeniu musi porozmawiać z rsync na zdalnym komputerze. Używasz ssh, aby połączyć dwa.

Zakładając, że rsync istnieje na zdalnym polu, nie znajduje się on w domyślnej ścieżce wyszukiwania dla ssh zalogowanej w powłoce. W zależności od preferencji i uprawnień na zdalnym urządzeniu możesz spróbować

  • przy użyciu opcji --rsync-path =
  • zmiana domyślnej PATH dla twojej zdalnej powłoki ssh
  • dodanie aliasu dla rsync w zdalnej powłoce ssh
  • zmiana wykonanego polecenia zdalnego na bezwzględną ścieżkę na rsync

lub coś podobnego. Jeśli rsync jako plik wykonywalny (serwer vice) nie istnieje na zdalnym hoście, należy go dodać.

mpez0
źródło
To było pomocne, więc daje +1, ale zastanawiam się, jak określić katalog startowy dla rsync po stronie Windows, jeśli uruchamiam go z komputera Mac na PC w następujący sposób: superuser.com/questions/1462861/…
Ryan
1

Nie ma sensu używanie rsync bez uruchamiania demona rsync na zdalnym hoście, pomimo kreatywnego rozwiązania sshfs zaproponowanego powyżej. Cała idea wydajności w rsync polega na tym, aby dwa wystąpienia porównywały swoje lokalne kopie zestawu danych, lokalnie obliczając sumy kontrolne, porównując je przez sieć i przesyłając tylko rzeczywiste dane dla tych części plików, które faktycznie się różnią.

Jeśli używasz sshfs lub dowolnego montowania w sieci, ukrywa to tylko fakt, że musi skopiować cały zestaw danych w sieci ze zdalnego hosta, aby obliczyć sumy kontrolne lokalnie, a następnie przesłać różnice. Szybsze i tańsze byłoby usunięcie wszystkiego lokalnie i „scp -r” partii.

olbrzymi
źródło
3
Nie do końca, ponieważ rsync sprawdza, czy pliki są modyfikowane według rozmiaru i datownika, a to wciąż jest o wiele bardziej wydajne niż scp'ing wszystkich plików. Ale w rzeczywistości mechanizm przyrostowej aktualizacji rsync w plikach nie ma sensu w stosunku do sshfs.
Jaap Eldering
0

Wypróbuj SCP . Ponieważ masz już dostęp do ssh, nie musisz instalować niczego innego na zdalnym hoście :)

Aby skopiować pliki ze zdalnego hosta na localhost użyj:

# scp -R remoteuser@remotehost:/remote/dir /this/dir/ 

Lub skopiuj pliki z hosta lokalnego na hosta zdalnego za pomocą:

# scp -R /this/dir remoteuser@remotehost:/remote/dir 
drzewo liściaste
źródło
1
Dzięki Lee, SCP jest świetne, ale nie wykonuje synchronizacji, prawda?
Dan Rosenstark,
1
musi to być małe „r”:scp -r
0x4a6f4672,