He examinado esta pregunta y esta pregunta , pero no parecen abordar los síntomas que estoy viendo.
Tengo un archivo de registro grande (alrededor de 600 MB) que estoy tratando de transferir a través de una red celular. Debido a que es un archivo de registro al que solo se agrega (aunque en realidad está en una base de datos SQLite con solo INSERTAR, por lo que no es tan simple como eso, pero con la excepción de la última página de 4k (o tal vez un pocos) el archivo es idéntico cada vez. Es importante que solo se envíen los cambios (y las sumas de verificación que deban transmitirse) porque la conexión de datos se mide.
Sin embargo, cuando realizo una prueba a través de una conexión no medida (por ejemplo, punto de acceso wifi gratuito) no veo una transferencia de datos acelerada o reducida observada o informada. A través de una conexión WiFi lenta, veo en el orden de 1 MB / so menos, informando que la transferencia tomará casi 20 minutos. A través de una conexión WiFi rápida, veo una velocidad uniforme más rápida, pero no hay informes de aceleración, y un segundo intento de transferencia (que ahora debería ser más rápido porque los dos archivos son idénticos) ahora no muestra ninguna diferencia.
El comando (desinfectado para eliminar información confidencial) que estoy usando es:
rsync 'ssh -p 9999' --progress LogFile michael@my.host.zzz:/home/michael/logs/LogFile
El resultado que obtengo al final se ve así:
LogFile
640,856,064 100% 21.25MB/s 0:00:28 (xfr$1, to-chk=0/1)
No se menciona ningún tipo de aceleración.
Sospecho que el problema puede ser uno de los siguientes:
- Me falta alguna opción de línea de comando. Sin embargo, releer la página del manual parece sugerir que las transferencias delta están habilitadas de manera predeterminada: solo veo opciones para deshabilitarlas.
- Estoy usando rsync sobre ssh (incluso en un puerto no estándar) debido a que el servidor está detrás de un firewall que solo permite ssh. Sin embargo, no he visto nada que diga explícitamente que las transferencias delta no funcionarán si el demonio rsync no se está ejecutando. Intenté usar la notación "::" en lugar de ":" pero la página del manual no tiene muy claro qué es un "módulo", y mi comando es rechazado por especificar un módulo no válido.
He descartado lo siguiente:
- transferencias delta no realizadas en una red local. Se descartó porque estoy intentando realizar la transferencia a través de Internet
- gastos generales debido al cálculo de la suma de verificación. He visto este comportamiento tanto en una conexión Wifi rápida como lenta y la velocidad de transferencia no parece estar vinculada al cálculo.
rsync --stats
, y también -v -v
para obtener estadísticas aún más detalladas. Rsync le dirá cuántos datos coincidentes y no coincidentes había.
but with the exception of the last 4k page (or maybe a few) the file is identical each time.
¿Realmente verificaste eso concmp
? O mejor, conxdelta
o algo? Si realmente desea minimizar el tamaño de transferencia, conserve las versiones antiguas y nuevas localmente, de modo que pueda calcular una diferencia binaria mínima localmente (con algo diferente a rsync) y simplemente enviarla sin tener que enviar sumas de verificación a través de la conexión medida. Hacer esto en el nivel de registro de base de datos en lugar del nivel de archivo binario es probablemente aún mejor, como sugiere derobert.