
¿Hay alguna diferencia si ejecuto rsync con un 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? Simplemente use el modo de archivo rsync y la ruta del host remoto (ssh). Lo mismo ocurre con el montaje sshfs solo con origen y destino (sin cambios de cifrado, solo predeterminado).
Respuesta1
SSHFS es conveniente, pero no combina bien con rsync o, más generalmente, con herramientas de sincronización.
El mayor problema es que SSHFS acaba en gran medida con 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 han sido modificadas. 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 lo es, en lo que respecta a rsync, incluso si uno de los lados está en SSHFS), rsync simplemente copia el archivo completo.
SSHFS también perjudica 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 en la red para cada archivo. Con rsync sobre SSH, las dos partes pueden trabajar en paralelo y transferir información de forma masiva, 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 proporcionarle una cuenta con un shell especial que solo permita ejecutar algunos programas, incluidos sftp-server
y rsync
. Ver¿Necesitas un caparazón para SCP?
Si solo está copiando archivos nuevos y no hay una gran cantidad de archivos, no hay una diferencia significativa en el rendimiento.
SSHFS establece una conexión SSH cuando el sistema de archivos está montado y retiene esa conexión hasta que se desmonta. Rsync realiza una nueva conexión cada vez que lo ejecuta, pero puede usar elfunción de multiplexación y conexión a cuestas en una única conexión principalpara evitar autenticarse 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 (es necesario utilizar rsync -aAX
, tenga en cuenta que un plano -a
conserva solo los metadatos tradicionales de Unix).
Respuesta2
Para responder a su pregunta principal: sí, hay diferencias. Si sshfs
existe una 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 hablar 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 todos los casos, porque rsync en el sistema remoto proporciona más inteligencia para encontrar archivos que no necesitan sincronización, pero principalmente porque se ejecuta en paralelo a su rsync local para recopilar esa información.
La seguridad de ambas formas es la misma, asumiendo una configuración similar de los parámetros ssh (longitud de clave, algoritmos). Los valores predeterminados para su sistema de origen y destino dependen de las combinaciones de distribuciones en esos sistemas.