¿Diferencias entre rsync en remoto y rsync local en sshfs montados?


12

¿Hay alguna diferencia si ejecuto rsync con el host remoto (ssh: //) como origen / destino o uso la ruta local para compartir el directorio montado a través de sshfs?

¿Podría haber diferencias con respecto a la seguridad o la velocidad de copia sin el uso de interruptores, solo puse el modo de archivo rsync y la ruta de host remota (ssh). Lo mismo con sshfs mount solo con origen y destino (sin cambios de cifrado, solo por defecto).

Respuestas:


17

SSHFS es conveniente, pero no combina bien con rsync o, más generalmente, con herramientas de sincronización.

El mayor problema es que SSHFS mata en gran medida las optimizaciones de rendimiento de rsync. En particular, para archivos medianos a grandes, cuando rsync ve que un archivo ha sido modificado, calcula sumas de verificación en partes del archivo en cada lado para transferir solo las partes que se han modificado. Esta es una optimización solo si el ancho de banda de la red es significativamente menor que el ancho de banda del disco, que suele ser el caso. Pero con SSHFS, el ancho de banda del "disco" es de hecho el ancho de banda de la red, por lo que rsync tendría que leer todo el archivo para determinar qué copiar. De hecho, con una copia local (que es, en lo que respecta a rsync, incluso si uno de los lados está en SSHFS), rsync simplemente copia todo el archivo.

SSHFS también es perjudicial para el rendimiento si hay muchos archivos pequeños. Rsync necesita verificar al menos los metadatos de cada archivo para determinar si se ha modificado. Con SSHFS, esto requiere un viaje de ida y vuelta de red para cada archivo. Con rsync sobre SSH, las dos partes pueden trabajar en paralelo y transferir información en masa, lo cual es mucho más rápido.

En términos de restricciones de acceso, SSHFS requiere acceso SFTP, mientras que rsync requiere la capacidad de ejecutar código (específicamente, el programa rsync) a través de un shell. Si el usuario no tiene una cuenta de shell, es posible y común proporcionar una cuenta con un shell especial que solo permite ejecutar algunos programas, incluidos sftp-servery rsync. Consulte ¿Necesita un shell para SCP?

Si solo está copiando archivos nuevos y no hay una gran cantidad de archivos, no hay una diferencia de rendimiento significativa.

SSHFS establece una conexión SSH cuando se monta el sistema de archivos y retiene esa conexión hasta que se desmonta. Rsync establece una nueva conexión cada vez que la ejecuta, pero puede usar la función de multiplexación y usar una única conexión principal para evitar la autenticación cada vez.

SSHFS es un sistema de archivos FUSE y, por lo tanto, solo admite metadatos y ACL tradicionales de Unix. Rsync puede transferir atributos extendidos (debe usar rsync -aAX, tenga en cuenta que un plano -aconserva solo los metadatos tradicionales de Unix).


Por ejemplo, tengo un solo archivo comprimido en el directorio SSHFS montado y ese archivo se copia en mi directorio local. Más tarde ese archivo se actualiza en el directorio montado y quiero copiar solo su sección actualizada a mi directorio local usando rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz. Cuando uso rsyncpara esta operación, durante el cálculo de la suma de verificación para transferir solo las partes que se han modificado, ¿ rsyncdebería leer todo el archivo, lo que llevará a que se descarguen los datos completos en lugar de solo su sección actualizada? @Gilles
alper

1
@alper Cuando usa rsync sobre sshfs, rsync tiene que leer todo el archivo. De lo contrario, no puede saber qué necesita actualizarse. No hay forma de optimizar transfiriendo solo sumas de verificación porque no hay forma de calcular sumas de verificación en el servidor.
Gilles 'SO- deja de ser malvado'

¿Sería lo mismo si la ubicación de destino es una carpeta montada en lugar de una sshfsconexión? Por favor, vea: unix.stackexchange.com/q/544404/198423 @Gilles
Alper

4

Para responder a su pregunta principal: sí, hay diferencias. Con sshfsuna conexión existente para permitir el acceso a archivos remotos a través de un canal seguro y con rsync a través de ssh, ese canal seguro está configurado para comunicarse con una instancia remota de rsync .

Para responder a su pregunta secundaria: rsync sobre ssh será más rápido para la mayoría, si no para todas las instancias, porque rsync en el sistema remoto proporciona más inteligencia para encontrar archivos que no necesitan sincronización, sino principalmente porque se ejecuta en paralelo a su rsync local para recopilar esa información.

La seguridad de ambas formas es, suponiendo que una configuración similar de los parámetros ssh (longitud de la clave, algoritmos) sea la misma. Los valores predeterminados para su sistema de origen y destino dependen de las combinaciones de distribuciones en esos sistemas.

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.