Manera simple, distribuida y desconectada de sincronizar un directorio

Manera simple, distribuida y desconectada de sincronizar un directorio

Quiero comenzar a hacer una copia de seguridad regular de mi directorio personal en mi computadora portátil Ubuntu, máquina X. Supongamos que tengo acceso a 2 servidores remotos (linux) diferentes en los que puedo realizar copias de seguridad, las máquinas A y B. La máquina X será la maestra y debería ser sincronizado con A y B. Podría ejecutar rsync regularmente de X a A y luego de X a B. Eso es todo lo que necesito.

Sin embargo, tengo curiosidad por saber si existe una forma más eficiente de ancho de banda y, por lo tanto, más rápida de hacerlo. Suponiendo que X va a estar en líneas de banda ancha de estilo residencial, y como no quiero absorber el ancho de banda, limitaría la transferencia desde X. A y B estarán encendidos todo el tiempo, sin embargo, X no lo estará. por lo que también me gustaría reducir la cantidad de tiempo que X se transfiere, lo que podría permitir que A y B dediquen más tiempo a la transferencia. Además, X no estará conectado todo el tiempo.

¿Cuál es la mejor manera de hacer esto? ¿rsync de X a A, luego de A a B? Sincronizar ese momento podría ser problemático. No quiero conservar archivos antiguos, por lo que si tuviera que sincronizar con rsync, se --delusaría la opción. ¿Podría eso significar que algo podría transferirse de A a B, luego eliminarse de B y luego transferirse de A a B nuevamente? Eso no es óptimo.

Sé que existen sistemas de archivos distribuidos sofisticados como gluster, pero creo que eso es excesivo en este caso y puede que no encaje con la naturaleza desconectada.

Respuesta1

Hay formas inteligentes y sencillas de hacer esto. Yo optaría por lo simple siempre que sea posible.

¿Podrías hacer X -> A y luego A -> B?

También existen métodos comoUnísono, pero parece que solo va a una réplica y es bidireccional, lo que parece no ser tan útil para una copia de seguridad. Sin embargo, si tanto A como B ejecutaron cosas en Unison, parece que el cliente X podría realizar una copia de seguridad en A.oB, y llegaría muy bien al otro.

Respuesta2

Quiere que X inicie la sincronización con A, que luego extraerá los datos de X y, cuando termine, los enviará a B. Una secuencia de comandos en A podría simplemente verificar la existencia de un archivo en algún lugar, que X carga en A cuando es en línea y listo para una sincronización. Cuando termine de extraer de X, debe empujar a B y, cuando termine, eliminar el archivo. Alternativamente, podría tener casi el mismo script tanto en A como en B, pero cuando A termina de extraer de X, coloca un archivo en B diciéndole que se sincronice con A. Si tuviera más de 2 máquinas para sincronizar, esta sería la camino a seguir desde entonces, la sincronización puede simplemente pasar en cascada a través de todos ellos (posiblemente en forma de árbol distribuido en lugar de lineal)

Respuesta3

¿Dropbox funcionaría para ti?

Respuesta4

Creo que la solución de Michael Graff es la mejor idea. rsync X -> A. Luego A -> B.

Si desea otra sugerencia que reduzca el tiempo de cálculo, puede consultar xdelta (http://xdelta.org/). Es esencialmente la misma solución que rsync de múltiples saltos, con el beneficio de que podría ahorrarle el tiempo de tener que calcular los retrasos en cada salto. Si los archivos involucrados son grandes, esto podría convertirse en un importante ahorro de tiempo.

Jim C. http://www.kleobackup.net

información relacionada