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-server
y 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 -a
conserva solo los metadatos tradicionales de Unix).
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
. Cuando usorsync
para esta operación, durante el cálculo de la suma de verificación para transferir solo las partes que se han modificado, ¿rsync
debería leer todo el archivo, lo que llevará a que se descarguen los datos completos en lugar de solo su sección actualizada? @Gillessshfs
conexión? Por favor, vea: unix.stackexchange.com/q/544404/198423 @GillesPara responder a su pregunta principal: sí, hay diferencias. Con
sshfs
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 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.
fuente