Tenho tentado descobrir se a opção -e é necessária? Não estou fazendo ssh sem ele simplesmente fazendo user@server
ao executar o rsync?
Responder1
Supondo que você não precise considerar o rsync
protocolo em si, isso depende das opções de compilação usadas para sua versão do rsync
.
Costumava ser o caso que rsync
usava o rsh
protocolo por padrão (a menos que o padrão de tempo de construção tivesse sido alterado), mas o padrão de tempo de construção mudou para ssh
2004.
Em caso de dúvida, inicie o rsync
processo transferindo um arquivo relativamente grande (ou coleção de arquivos) e em outro terminal execute ps -ef | grep '[r]sync'
. Isso mostrará se você está ou não usando ssh
um transporte. Aqui está um exemplo de um dos meus servidores, que mostra claramente o ssh
transporte:
root 28057 27173 1 09:48 pts/4 00:00:00 rsync -avHP --dry-run /home roaima@otherserver:
root 28058 28057 0 09:48 pts/4 00:00:00 ssh -l roaima otherserver rsync --server -vnlHogDtpre.iLsfx --partial . .
Finalmente, esteja ciente de que o padrão de compilação pode ser substituído pela RSYNC_RSH
variável de ambiente. (Veja a página de manual para mais detalhes.)
Responder2
-e
é para quando você deseja um shell remotooutro que não sejao padrão ssh
. rsync
usa ssh
como transporte por padrão, mas pode usar qualquer shell remoto (com algumas restrições*), não importacomoele se conecta a um servidor remoto.
* O shell remoto que você usa deve se comportar como um shell. Ele deve interpretar seu argumento zero como o destino e cada argumento seguinte como um comando a ser executado; o comando que o rsync passa pelo shell remoto é um rsync --server …
comando que inicia um servidor rsync na extremidade remota. Deve também anexar o seuSTDINpara o comandoSTDIN, e o comandoSTDOUTparaSTDOUT, para que o rsync e o servidor rsync possam se comunicar pelo shell remoto.