¿Cómo? O TL; DR
El método más rápido que he encontrado es una combinación de tar, mbuffery ssh.
P.ej:
tar zcf - bigfile.m4p | mbuffer -s 1K -m 512 | ssh otherhost "tar zxf -"
Con esto, he logrado transferencias de red locales sostenidas de más de 950 Mb / s en enlaces de 1 Gb. Reemplace las rutas en cada comando tar para que sean apropiadas para lo que está transfiriendo.
¿Por qué? mbuffer!
El mayor cuello de botella en la transferencia de archivos grandes a través de una red es, con mucho, la E / S de disco. La respuesta a eso es mbuffero buffer. Son en gran medida similares pero mbuffertiene algunas ventajas. El tamaño predeterminado del búfer es de 2 MB para mbuffery 1 MB para buffer. Es más probable que los tampones más grandes nunca estén vacíos. Elegir un tamaño de bloque que sea el múltiplo común más bajo del tamaño de bloque nativo tanto en el sistema de archivos de destino como en el de destino dará el mejor rendimiento.
Buffering es lo que hace que todo la diferencia! ¡Úselo si lo tiene! Si no lo tienes, ¡consíguelo! Usar (m}?buffermás cualquier cosa es mejor que cualquier cosa por sí mismo. Es casi literalmente una panacea para las transferencias lentas de archivos de red.
Si está transfiriendo varios archivos, úselos tarpara agruparlos en una sola secuencia de datos. Si es un archivo único que puede usar cato redirección de E / S. La sobrecarga de tarvs. cates estadísticamente insignificante, por lo que siempre uso tar(o zfs -senddonde puedo) a menos que ya sea un tarball . Ninguno de estos está garantizado para darle metadatos (y en particular catno lo hará). Si desea metadatos, lo dejaré como un ejercicio para usted.
Finalmente, el uso sshde un mecanismo de transporte es seguro y lleva muy poca sobrecarga. Nuevamente, la sobrecarga de sshvs. nces estadísticamente insignificante.