Rsync przez ssh, działa świetnie za każdym razem.
Jednak próba rsynchronizacji z hostem, który zezwala tylko na logowanie sftp, ale nie na logowanie ssh, powoduje następujący błąd:
rsync -av / source ssh user @ remotehost: / target /
niezgodność wersji protokołu - czy twoja powłoka jest czysta? (wyjaśnienie znajduje się na stronie podręcznika użytkownika rsync) błąd rsync: niezgodność protokołu (kod 2) w kompatybil.c (171) [sender = 3.0.6]
Oto odpowiednia sekcja ze strony man rsync:
Ten komunikat jest zwykle spowodowany przez skrypty startowe lub narzędzie zdalnej powłoki produkujące niechciane śmieci w strumieniu używanym przez rsync do transportu. Aby zdiagnozować ten problem, uruchom zdalną powłokę w następujący sposób:
ssh remotehost /bin/true > out.dat
następnie spójrz na out.dat. Jeśli wszystko działa poprawnie, plik out.dat powinien być plikiem o zerowej długości. Jeśli otrzymujesz powyższy błąd z rsync, prawdopodobnie przekonasz się, że plik out.dat zawiera tekst lub dane. Spójrz na zawartość i spróbuj ustalić, co ją produkuje. Najczęstszą przyczyną są niepoprawnie skonfigurowane skrypty startowe powłoki (takie jak .cshrc lub .profile), które zawierają instrukcje wyjściowe dla nieinteraktywnych loginów.
Wypróbowanie tego w moim systemie spowodowało, że w out.dat:
ssh-dummy-shell: Polecenie niedozwolone.
Tak jak myślałem, host nie pozwala na logowanie ssh.
Poniższy link pokazuje, że możliwe jest wykonanie tego zadania za pomocą bezpiecznika z sshfs - jednak jest on bardzo wolny i nie nadaje się do użytku produkcyjnego.
Czy jest jakaś szansa na uruchomienie rsync sftp?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
zobacz tę odpowiedź .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port