He estado intentando averiguar si la opción -e es necesaria. ¿No estoy haciendo ssh sin él simplemente haciéndolo user@server
cuando ejecuto rsync?
Respuesta1
Suponiendo que no necesita considerar el rsync
protocolo en sí, esto depende de las opciones de compilación utilizadas para su versión de rsync
.
Solía ser el caso que rsync
se usaba el rsh
protocolo de forma predeterminada (a menos que se hubiera cambiado el valor predeterminado del tiempo de compilación), pero el valor predeterminado del tiempo de compilación cambió ssh
en 2004.
Si tienes dudas, inicia el rsync
proceso transfiriendo un archivo relativamente grande (o una colección de archivos) y en otra terminal ejecuta ps -ef | grep '[r]sync'
. Esto le mostrará si lo está utilizando o no ssh
para un transporte. Aquí hay un ejemplo de uno de mis servidores, que muestra claramente el 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, tenga en cuenta que el valor predeterminado de compilación se puede anular con la RSYNC_RSH
variable de entorno. (Consulte la página de manual para obtener más detalles).
Respuesta2
-e
es para cuando quieres un shell remotootro queel valor por defecto ssh
. rsync
usosssh
como transporte de forma predeterminada, pero puede usar cualquier shell remoto (con un par de restricciones*), no importacómose conecta a un servidor remoto.
* El shell remoto que utilice debe comportarse como un shell. Debe interpretar su argumento cero como el destino y cada argumento siguiente como un comando a ejecutar; el comando que rsync pasa a través del shell remoto es unrsync --server …
comando que inicia un servidor rsync en el extremo remoto. También deberá adjuntar suESTDINal comandoESTDIN, y el comandoSALIDA ESTÁNDARaSALIDA ESTÁNDAR, para que rsync y el servidor rsync puedan comunicarse a través del shell remoto.