Pregunta

Tengo una gran cantidad de datos para mantener sincronizados en 4 o 5 sitios en todo el mundo, alrededor de medio terabyte en cada sitio. Esto cambia (se agrega o cambia) en alrededor de 1.4 Gigabytes por día, y los datos pueden cambiar en cualquiera de los cuatro sitios.

Un gran porcentaje (30%) de los datos son paquetes duplicados (quizás JDK empaquetados), por lo que la solución tendría que incluir una forma de detectar el hecho de que hay cosas así en la máquina local y Agárrelos en lugar de descargarlos desde otro sitio.

El control de las versiones no es un problema, esto no es un código base por sí mismo.

Me interesa si hay alguna solución (preferiblemente de código abierto) que se acerque a tal cosa.

Mi script de bebé que usa rsync ya no corta la mostaza, me gustaría hacer una sincronización más compleja e inteligente.

Gracias

Editar: Esto debería estar basado en UNIX :)

¿Fue útil?

Solución

¿Has probado Unison ?

He tenido buenos resultados con él. Básicamente es un rsync más inteligente, que tal vez es lo que quieres. Hay una lista que compara las herramientas de sincronización de archivos aquí .

Otros consejos

Suena como un trabajo para BitTorrent.

Para cada archivo nuevo en cada sitio, cree un archivo semilla bittorrent y póngalo en un directorio centralizado accesible desde la web.

Cada sitio descarga (a través de bittorrent) todos los archivos. Esto le permitirá compartir el ancho de banda y reutilizar automáticamente la copia local.

La receta real dependerá de su necesidad. Por ejemplo, puede crear 1 semilla de bittorrent para cada archivo en cada host y establecer que el tiempo de modificación del archivo semilla sea el mismo que el tiempo de modificación del archivo en sí. Ya que lo harás diariamente (¿cada hora?) Es mejor usar algo como " make " para (re) crear archivos semilla solo para archivos nuevos o actualizados.

Luego copia todos los archivos semilla de todos los hosts a la ubicación centralizada (" directorio de seguimiento ") con la opción " sobrescribir solo si es más reciente " ;. Esto le proporciona un conjunto de semillas de torrent para todas las copias más recientes de todos los archivos.

Luego cada host descarga todos los archivos semilla (nuevamente, con '' sobrescribir si la configuración más nueva '') e inicia la descarga de bittorrent en todos ellos. Esto descargará / volverá a descargar todos los archivos nuevos / actualizados.

Enjuague y repita, diariamente.

Por cierto, no habrá "descarga de sí mismo", como dijiste en el comentario. Si el archivo ya está presente en el host local, se verificará su suma de comprobación y no se realizará ninguna descarga.

¿Qué tal algo como el Sistema de archivos global de Red Hat, para que toda la estructura sea ¿Se divide en todos los sitios en múltiples dispositivos, en lugar de tener todo replicado en cada ubicación?

O tal vez un sistema de almacenamiento de red comercial como el de LeftHand Networks (descargo de responsabilidad: tengo No tengo idea del costo, y no los he usado).

Tienes muchas opciones:

  • Puede intentar configurar DB replicados para almacenar datos.
  • Use la combinación de rsync o lftp y los scripts personalizados, pero eso no le conviene.
  • Use repositorios git con compresiones máximas y sincronice entre ellos usando algunos scripts
  • Dado que la cantidad de datos es bastante grande y probablemente importante, realice algún desarrollo personalizado contratando a un experto;)

Vea super flexible ... es muy bueno, no lo he usado en un entorno a gran escala, pero en un sistema de 3 nodos parece funcionar perfectamente.

Suena como un trabajo para Foldershare

¿Has probado el parche detect-renamed para rsync ( http://samba.anu.edu.au/ftp/rsync/dev/patches/detect-renamed.diff )? No lo he probado yo mismo, pero me pregunto si detectará no solo los archivos renombrados sino también duplicados. Si no detecta archivos duplicados, entonces, supongo, podría ser posible modificar el parche para hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top