Rsync sobre ssh, funciona muito bem todas as vezes.
No entanto, tentar rsync para um host que permite apenas logins sftp, mas não logins ssh, fornece o seguinte erro:
rsync -av /source ssh user@remotehost:/target/
incompatibilidade de versão do protocolo - seu shell está limpo? (consulte a página de manual do rsync para obter uma explicação) erro de rsync: incompatibilidade de protocolo (código 2) em compat.c(171) [sender=3.0.6]
Aqui está a seção relevante da página de manual do rsync:
Essa mensagem geralmente é causada por seus scripts de inicialização ou recurso de shell remoto produzindo lixo indesejado no fluxo que o rsync está usando para seu transporte. A maneira de diagnosticar esse problema é executar seu shell remoto assim:
ssh remotehost /bin/true > out.dat
então olhe para out.dat. Se tudo estiver funcionando corretamente, out.dat deve ser um arquivo de comprimento zero. Se você estiver recebendo o erro acima do rsync, provavelmente descobrirá que out.dat contém algum texto ou dados. Olhe para o conteúdo e tente descobrir o que está produzindo. A causa mais comum são scripts de inicialização de shell configurados incorretamente (como .cshrc ou .profile) que contêm instruções de saída para logins não interativos.
Tentar isso no meu sistema produziu o seguinte em out.dat:
ssh-dummy-shell: Comando não permitido.
Como eu pensei, o host não está permitindo logins ssh.
O link a seguir mostra que é possível realizar esta tarefa usando fuse com sshfs - porém é extremamente lento e não adequado para uso em produção.
Existe alguma chance de fazer o rsync sftp funcionar?