¿Cómo resuelve los conflictos rsync?

14

¿Qué sucede si los recursos compartidos de la máquina A y la máquina B tienen un directorio previamente sincronizado mediante rsync, y A cambia un archivo y B cambia el mismo archivo, y usted rsyncde A a B?

¿Es acaso algo así como un conflicto de fusión git?

¿Se puede resolver el conflicto fácilmente?

lindhe
fuente

Respuestas:

25

Rsync no intenta resolver conflictos. Este no es su trabajo. Rsync ni siquiera tiene una forma de detectar que ambas partes han modificado el archivo, porque no tiene información sobre ningún antepasado común.

Con las opciones predeterminadas, el archivo de origen se copia incondicionalmente en el destino, sobrescribiendo el archivo de destino. Con la opción -u, el archivo de origen se copia solo si falta el archivo de destino o es anterior al archivo de origen. Con la opción --ignore-existing, el archivo de origen solo se copia si el archivo de destino no existe.

Si desea detectar conflictos, necesita una herramienta que sepa cuándo se sincronizaron los archivos por última vez, para que pueda distinguir {destino = versión anterior, fuente = nueva versión} de {destino = nueva versión 1, origen = nueva versión 2 }. Use Unison , que hace precisamente eso. Unison es un sincronizador bidireccional: copia el archivo que se ha modificado desde la última sincronización al lado donde el archivo no se ha modificado. Si ninguno de los lados ha sido modificado, o si ambos lados se han modificado de manera idéntica, no hace nada. Si ambos lados se han modificado de diferentes maneras, le informa y le permite elegir omitir, copiar en una dirección o copiar en la otra dirección.

Si desea una resolución automática de conflictos, es decir, fusiones automáticas (cuando sea posible, siempre hay casos en los que es necesaria una fusión manual), utilice un sistema de control de revisión como git.

Gilles 'SO- deja de ser malvado'
fuente