He estado usando rsync con éxito para sincronizar mis directorios personales entre mi computadora portátil y mi netbook (ambos usando ext4 con Linux). Mi único problema con esto es que de vez en cuando me gusta reorganizar completamente ciertos directorios, y rsync ve esto como eliminaciones y creación de nuevos archivos, lo que lo hace muy lento e ineficiente.
¿Alguien sabe de un buen software que maneja bien los movimientos de archivos?
Descubrí que el unísono debería ser capaz de esto, pero no parece funcionar en la práctica. Probé unísono mediante la sincronización de dos directorios locales, cada uno con un archivo grande en ella, y todavía detecté mi movimiento como una creación eliminación + y estaba en efecto aún más lento que rsync .
Por otra parte, si no recuerdo mal de mi mirando al unísono 's código fuente hace un par de meses, se trató de hacer algo como haciendo sha sumas-y yo no quiero que mi solución ideal para hacer sumas-que sha es demasiado lento en gran archivos / directorios. Me gustaría algo que note cosas como:
"La última contraparte de origen de este archivo parece haber sido eliminada y hay un nuevo archivo en otra parte del árbol del directorio de origen que tiene el mismo número de fecha, tamaño e inodo, así que voy a suponer que esto fue un movimiento y mover su contraparte objetivo en consecuencia en lugar de hacer una eliminación + copia ".
Para mí es importante poder sincronizar estas máquinas rápidamente.
¿Alguna sugerencia?
fuente
Unison hace lo que quiere, pero solo para la sincronización remota. Intenta usarlo
ssh://localhost/path/to/dir
como una de las raíces.Unison basa sus decisiones en el contenido del archivo, no realiza un seguimiento de los números de inodo.
fuente
Puede manejar archivos movidos y renombrados con rsync si los sistemas de archivos en el directorio de origen y destino tienen soporte para enlaces duros. La idea es dejar que rsync reconstruya enlaces duros antes de una transferencia real. Puedes encontrar una buena explicación aquí
Terminamos con una solución simple que crea un árbol oculto de enlaces duros dentro del directorio fuente / destino, el script básico podría ser así:
Tengo un script de ejemplo en GitHub . Pero le aconsejo que haga una gran cantidad de pruebas antes de usar este método en la producción.
fuente
Si desea sincronizar archivos entre varias máquinas, entonces puede querer simplemente usar un sistema de control de versiones centralizado como Subversion (o FSVS, que usa SVN como back-end). Lo bueno es que todo en su / home (que agrega al control de versiones) se versiona y se puede sincronizar fácilmente con otras máquinas o revertir.
fuente
lsyncd también maneja los archivos movidos con el comportamiento rsync + ssh, aunque algo defectuoso (obtengo alrededor del 15% de los movimientos manejados como eliminar / copiar, aún para descubrir por qué). La mayoría de las veces funciona.
fuente