Digamos que tengo un directorio con 2 archivos, ambos son idénticos y bastante grandes (por ejemplo, 2 GB cada uno). Quiero sincronizar ese directorio con un host remoto. Según tengo entendido (y podría estar equivocado), rsync calcula sumas de verificación de archivos. Seguramente, si ve 2 archivos con la misma suma de verificación, puede simplemente copiar el primer archivo y luego hacer una copia local en el host remoto para el segundo archivo. Eso lo haría más rápido ¿no?
En una nota similar, ¿rsync no aplica un hash a todos los archivos remotos antes de copiarlos? Si ve un archivo diferente con el mismo hash que un archivo que se va a transferir, puede hacer una copia local en el host remoto.
¿Rsync admite este tipo de cosas? ¿Hay alguna manera de encenderlo? ¿Existe una herramienta similar a rsync que haga este tipo de copias locales 'basadas en hash'?
Respuesta1
En una nota similar, ¿rsync no aplica un hash a todos los archivos remotos antes de copiarlos? Si ve un archivo diferente con el mismo hash que un archivo que se va a transferir, puede hacer una copia local en el host remoto.
no peroUnísonohace.
Respuesta2
No creo que exista ningún producto preparado para hacer eso hoy en día como un único paquete de software. Hay optimizadores de WAN que harán esto por usted y luego seguirá ejecutando RSYNC.
Lo que busca es un proceso de deduplicación/reduplicación. Idealmente, no querrás redupcionar, sino deduplicar localmente y luego realizar RSYNC. De esa manera, solo copiará enlaces en lugar de expandir los archivos en el otro lado.
Respuesta3
Si ambos archivos son realmente idénticos, entonces tendría que sincronizar uno de los archivos y luego hacer una copia local por separado en el lado remoto, fuera del proceso de rsync.
Si tiene dos archivos idénticos, rsync intentará copiarlos a ambos; el nombre del archivo, en lugar de la suma de comprobación, es el identificador más importante. (¡Acabo de probar esto en mi computadora portátil!)
Sin embargo, sería interesante ajustar rsync para hacer algunas de las cosas que mencionas...
Vale la pena leerlos:
Respuesta4
La opción --difusapodríahaz lo que buscas:
Desde la página de manual:
-y, --fuzzy
Esta opción le dice a rsync que debe buscar un archivo base para cualquier archivo de destino que falte. El algoritmo actual busca en el mismo directorio que el archivo de destino un archivo que tenga un tamaño y hora de modificación idénticos, o un archivo con un nombre similar. Si lo encuentra, rsync utiliza el archivo de base difusa para intentar acelerar la transferencia.
Si no es así, alguien con habilidades de programación relevantes debería poder modificar la opción para que se comporte como lo describe con bastante facilidad, ¡aunque probablemente no sea algo en lo que le gustaría involucrarse!