
Estoy estudiando rsync para sincronizar carpetas locales y remotas en Windows (usando cwrsync). Tengo una duda: ¿es posible subir solo una parte de los cambios?
Por ejemplo, inicialmente tengo un archivo de 100 MB. Lo subiré usando el comando,
rsync -a /source/path/ /dest/path/
Luego haré algunos cambios en ese archivo. Si ejecuto el mismo comando nuevamente, se cargará nuevamente el archivo completo de 100 MB. En cambio, ¿cómo agregar los cambios realizados a ese archivo mientras se carga?
Respuesta1
Lo que necesitas es la --inplace
opción.
Le recomiendo encarecidamente que lea la parte relacionada demanual de sincronizacióny entender lo que implica esta opción:
--en su lugarEsta opción cambia la forma en que rsync transfiere un archivo cuando es necesario actualizar sus datos: en lugar del método predeterminado de crear una nueva copia del archivo y moverlo a su lugar cuando esté completo, rsync escribe los datos actualizados directamente en el archivo de destino. .
Esto tiene varios efectos:
- Los enlaces físicos no están rotos. Esto significa que los nuevos datos serán visibles a través de otros enlaces físicos al archivo de destino. Además, los intentos de copiar diferentes archivos de origen en un archivo de destino con enlaces múltiples resultarán en un "tira y afloja" en el que los datos de destino cambian de un lado a otro.
- Los archivos binarios en uso no se pueden actualizar (el sistema operativo impedirá que esto suceda o los archivos binarios que intenten intercambiar sus datos se comportarán mal o fallarán).
- Los datos del archivo estarán en un estado inconsistente durante la transferencia y permanecerán así si la transferencia se interrumpe o si falla una actualización.
- Un archivo en el que rsync no puede escribir no se puede actualizar. Si bien un superusuario puede actualizar cualquier archivo, a un usuario normal se le debe conceder permiso de escritura para abrir el archivo para que la escritura se realice correctamente.
- La eficiencia del algoritmo de transferencia delta de rsync puede reducirse si algunos datos del archivo de destino se sobrescriben antes de poder copiarlos a una posición posterior en el archivo. Esto no aplica si usas --respaldo, ya que rsync es lo suficientemente inteligente como para utilizar el archivo de copia de seguridad como archivo base para la transferencia.
ADVERTENCIA: no debe usar esta opción para actualizar archivos a los que otras personas acceden, así que tenga cuidado al elegir usarla para una copia.
Esta opción es útil para transferir archivos grandes con cambios basados en bloques o datos adjuntos, y también en sistemas vinculados a disco, no a red. También puede ayudar a evitar que una instantánea del sistema de archivos de copia en escritura diverja todo el contenido de un archivo que solo tiene cambios menores.
La opción implica--parcial(ya que una transferencia interrumpida no elimina el archivo), pero entra en conflicto con--dir-parcialy --actualizaciones-delay. Antes de rsync 2.6.4--en su lugarTambién era incompatible con--comparar-destinoy--enlace-destino.
Es posible que también le interese --append
una --append-verify
opción para archivos en crecimiento únicamente.
Respuesta2
Estás usando rsync para copiar de un directorio a otro directorio: la opción--archivo completoestá en vigor entonces:
-W, --archivo completoCon esta opción, no se utiliza el algoritmo de transferencia delta de rsync y, en su lugar, el archivo completo se envía tal cual. La transferencia puede ser más rápida si se utiliza esta opción cuando el ancho de banda entre las máquinas de origen y de destino es mayor que el ancho de banda del disco (especialmente cuando el "disco" es en realidad un sistema de archivos en red).Este es el valor predeterminado cuando tanto el origen como el destino se especifican como rutas locales, pero solo si no hay ninguna opción de escritura por lotes vigente.
Debe iniciar rsync en el modo demonio en un lado para activar el algoritmo rsync con transferencias delta.