¿Puede rsync actualizar un file grande que solo ha cambiado parcialmente sin una retransmisión completa?

Estoy haciendo un pequeño cambio en un file de image de file muy grande (solo unos pocos píxeles de diferencia), que tarda mucho time en transferirse a través de la networking.

¿Hay alguna manera de que rsync identifique la diferencia en el file y solo envíe el pequeño diff a través de la networking?

rsync algorithm rsync delta-transfer lo hace de forma pnetworkingeterminada. Citando la página de manual de rsync :

DESCRIPCIÓN

Rsync es una herramienta de copy de files rápida y extraordinariamente versátil. Puede copyr localmente, hacia / desde otro host a través de cualquier shell remoto, o hacia / desde un daemon rsync remoto. Ofrece una gran cantidad de opciones que controlan cada aspecto de su comportamiento y permiten una especificación muy flexible del set de files que se copyrán. Es famoso por su algorithm de transferencia delta, que networkinguce la cantidad de datos enviados a través de la networking al enviar solo las diferencias entre los files fuente y los files existentes en el destino . Rsync es ampliamente utilizado para copys de security y duplicación y como un command de copy mejorado para el uso diario.

Si desea deshabilitarlo, tendrá que usar la opción -W o --whole-file .

-W, –todo el file

Esta opción deshabilita el algorithm de transferencia delta de rsync, que hace que todos los files transferidos se envíen completos. La transferencia puede ser más rápida si se usa esta opción cuando el ancho de banda entre las máquinas de origen y de destino es mayor que el ancho de banda al disco (especialmente cuando el "disco" es en realidad un sistema de files en networking). Este es el valor pnetworkingeterminado cuando tanto el origen como el destino se especifican como routes locales, pero solo si no está en vigencia ninguna opción de escritura por lotes.

Si realmente sabe cuánto ha cambiado su file, incluso podría optimizar este comportamiento de transferencia delta ajustando su tamaño de bloque delta:

-B, –block-size = BLOCKSIZE

Esto fuerza el tamaño de bloque utilizado en el algorithm de transferencia delta de rsync a un valor fijo. Normalmente se selecciona en function del tamaño de cada file que se actualiza. Ver el informe técnico para más detalles.

Y si desea get más información sobre el algorithm en sí, puede encontrarlo aquí: El algorithm Rsync