Rsync sobre ssh, o algo más?


10

He estado tratando de usar rsync en OSX to Linux o Unix box sobre el cual no tengo mucho control. He estado haciendo algo como esto

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

El error devuelto es:

bash: rsync: comando no encontrado rsync: conexión inesperadamente cerrada (0 bytes recibidos hasta ahora) [receptor] error rsync: comando remoto no encontrado (código 127) en /SourceCache/rsync/rsync-37.3/rsync/io.c(452 ) [receptor = 2.6.9]

Sin embargo, después de leer los documentos, empiezo a pensar que realmente necesitaría instalar un demonio rsync en el host remoto.

  1. ¿Debo instalar un servidor rsync en el host remoto?
  2. ¿Alternativas gratuitas, GUI o no GUI, que no requieren instalar nada en el host remoto ?

¡Gracias!


1
¿Cuáles son los problemas exactos que tiene con su comando actual?
fideli

@fideli, lo siento, se olvidó de eso. Pregunta de edición ahora
Dan Rosenstark

1
Gracias por esta pregunta, pero ¿puedes etiquetarla por rsyncfavor?
Andrew Grimm

Respuestas:


21

Necesita un comando rsync en el servidor, pero no necesita ejecutar un demonio.

Obtener un binario de rsync que funciona en el servidor, lo puso en algún lugar de su casa, y añadir este indicador en la línea de comandos: --rsync-path=/home/user/path/to/rsync.

Si no desea copiar rsync a los servidores, puede usar scp o sshfs.

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

En ese caso, rsync se ejecutará completamente localmente, pero los cambios se propagarán al servidor.


Me gusta mucho esa solución, particularmente porque el servidor es un plan de alojamiento económico en GoDaddy y dudo que pueda ejecutar rsync en el servidor. +1 por ahora!
Dan Rosenstark

¿Cuál es la ruta más fácil para la instalación de sshfs en OSX? MacFuse o hay algo más fácil?
Dan Rosenstark

MacFuse + (MacFusion o sshfs-static-leopard), creo (no soy un usuario de OSX)
Tobu

Sí, MacFuse lo hace. Solo que la página de descarga para el binario sshfs le da el binario con una extensión .gz. Así que debes cambiarle el nombre en lugar de dispararle. Molesto pero está bien ahora! Gracias
Dan Rosenstark

6

Debe tener rsync en el host remoto, no necesariamente un servidor rsync (que, creo, no manejará la conexión SSL de todos modos), pero rsync en el cuadro local necesita hablar con un rsync en el cuadro remoto. Estás usando ssh para vincular los dos.

Suponiendo que rsync existe en el cuadro remoto, no está en la ruta de búsqueda predeterminada para su shell de inicio de sesión ssh. Dependiendo de sus preferencias y permisos en la caja remota, puede intentar

  • usando la opción --rsync-path =
  • cambiando la RUTA predeterminada para su shell ssh remoto
  • Agregar un alias para rsync en el shell ssh remoto
  • cambiar el comando remoto ejecutado a la ruta absoluta a rsync

o algo similar. Si rsync como ejecutable (vice servidor) no existe en el host remoto, tendría que agregarse.


Esto fue útil, así que +1, pero me pregunto cómo especificar el directorio de inicio para rsync en el lado de Windows si lo estoy ejecutando de Mac a PC de esta manera: superuser.com/questions/1462861/…
Ryan

1

No tiene mucho sentido usar rsync sin ejecutar un demonio rsync en el host remoto, a pesar de la solución creativa sshfs propuesta anteriormente. La idea general de la eficiencia en rsync es hacer que las dos instancias comparen sus copias locales del conjunto de datos calculando sumas de verificación localmente, comparándolas a través de la red y solo transmitiendo los datos reales para aquellas partes de esos archivos que realmente difieren.

Si usa sshfs o cualquier montaje de red, solo oculta el hecho de que tiene que copiar todo el conjunto de datos a través de la red desde el host remoto para calcular las sumas de verificación localmente y luego transmitir las diferencias además de eso. Sería más rápido y más barato eliminar todo localmente y 'scp -r' el lote.


3
No exactamente, porque rsync comprueba si los archivos están modificados por tamaño y marca de tiempo, y eso sigue siendo mucho más eficiente que scp'ing todos los archivos. Pero, de hecho, el mecanismo de actualización incremental rsync dentro de los archivos no tiene sentido sobre sshfs.
Jaap Eldering

0

Prueba SCP . Como ya tiene acceso ssh, no necesita instalar nada más en el host remoto :)

Para copiar archivos del host remoto al uso localhost:

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

O copie archivos desde el host local al host remoto con:

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

1
Gracias Lee, SCP es genial pero no hace "sincronización" ¿verdad?
Dan Rosenstark

1
debe ser una pequeña "r":scp -r
0x4a6f4672
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.