2010-12-08 13 views
7

¿Puedo sincronizar los cambios desde un sitio "modelo" que trabajo, a través de cientos de sitios en el mismo servidor usando rsync?
Actualizaría archivos comunes de plantillas y scripts JS. Si es posible, ¿cómo podría configurar esto?
(estoy en un servidor dedicado Hostgator, corriendo Apache)¿Puede la compatibilidad de rsync One to Many syncing?

Respuesta

11

leer mi respuesta extendida para la cuestión editado por debajo.

El enfoque más trivial e ingenuo sería probablemente configurar un script que solo ejecute rsync para cada servidor que desee sincronizar.

Esto está muy bien en la mayoría de los casos, pero no creo que esto es lo que busca, porque se habría dado cuenta de eso mismo ...

Este método también tiene las siguientes desventajas:

  • Un servidor envía todo el tráfico, no hay conexión en cascada. Así que es un punto único de falla y un cuello de botella

  • Es muy ineficiente. Rsync es una gran herramienta, pero al analizar la lista de archivos y la comprobación de las diferencias no es muy rápido, si desea sincronizar cientos de servidores

Pero qué se puede hacer?

La configuración de rsync para servidores múltiples es obviamente la forma más fácil de hacerlo. Entonces debería comenzar con eso y optimizar dónde están sus problemas.

Puede acelerarlo, por ejemplo, usando el Sistema de archivos correcto. XFS probablemente será 50 veces más rápido que Ext3.

También puede usar unison, que es una herramienta un poco más poderosa y mantiene una lista de archivos en el caché.

También puede configurar una cascada (el servidor A se sincroniza con el servidor B sincronizando con el servidor C).

También podría configurar tirando en lugar de presionar por sus clientes. Podría tener un subdominio para eso, que es el punto de entrada a un equilibrador de carga, donde tiene uno o más servidores detrás del cual se sincroniza presionando desde su servidor de origen.

La razón por la que te digo todo esto es porque no existe la manera perfecta de hacerlo, tienes que resolverlo según tus necesidades.

Sin embargo, definitivamente recomendaría buscar en GIT.

Git es un sistema de control de versiones que es muy potente y eficiente.

Puede crear un repositorio de git y enviarlo a las máquinas de su cliente.

Funciona muy bien y es flexible, flexible y escalable, por lo que puede construir casi cualquier cosa en esta estructura, incluidos sistemas de archivos distribuidos, cascadas, equilibrio de carga, etc.

Espero les di algunos puntos en las direcciones correctas que pueden ver.

Editar:

Así que parece que desea sincronizar los cambios en el mismo servidor - o incluso el mismo disco duro (que no lo sé, pero es muy importante para las posibilidades que tienes).

Bueno, básicamente es todo lo mismo. Insertar - Sobrescribir - Eliminar ... Rsync es también una gran herramienta para eso porque transfiere cambios incrementales. No solo "reanuda las transferencias interrumpidas".

Pero yo diría que depende completamente del contenido.

Si tiene muchos archivos pequeños, como por ejemplo plantilla, javascript, etc., rsync puede ser muy lento. Incluso podría ser más rápido eliminar completamente la carpeta fuente y copiar los archivos allí nuevamente. Entonces rsync (o cualquier otra herramienta) no tiene que verificar todos los archivos para cambios, etc.

También puede simplemente copiar todo con el modificador -rf para que todo se sobrescriba, pero entonces podría tener archivos viejos allí que borrado

También conozco muchos casos en que tales cosas se hacen usando subversión, porque la gente tiene ganas de tener más control o algo que no sé. También es más flexible.

Sin embargo, hay una cosa que usted debe pensar en:

Existe el concepto de datos compartidos.

Hay enlaces simbólicos y enlaces duros.

Puede ponerlos en archivos y carpetas (enlaces duros solo en los archivos. No sé por qué).

Si coloca un enlace simbólico A en un destino B, el archivo parece estar ubicado y nombrado como el enlace simbólico, pero el recurso subyacente es completamente diferente. Pero las aplicaciones PUEDEN distinguir. Apache, por ejemplo, tiene que configurarse para seguir enlaces simbólicos (de lo contrario, sería un problema de seguridad).

Si todos los cambios están en una sola carpeta, puede poner un enlace simbólico llamado esa carpeta, apuntando a su carpeta allí, y nunca tendrá que preocuparse por sincronizar nuevamente, porque comparten el mismo recurso.

Sin embargo, hay razones por las que no quieres que lo haga:

  • tienen un aspecto distinto. -que suena absurdo, pero en realidad, esa es la razón más común por la que a las personas no les gustan los enlaces simbólicos. La gente se queja porque "se ven tan raros en su programa" o lo que sea.

  • Los enlaces simbólicos tienen ciertas capacidades limitadas, pero tienen otras ventajas enormes. Como señalar sistemas de archivos cruzados, etc. Sin embargo. Casi todas las desventajas pueden ser tratadas y trabajadas en su aplicación. La triste verdad es que los enlaces simbólicos son una característica fundamental de Linux y sistemas de archivos, pero su existencia a veces se olvida al desarrollar una aplicación. Es como desarrollar un tren pero olvidando que también hay personas con piernas largas o algo ...

Los enlaces duros, por el contrario, se parecen exactamente a los archivos porque son archivos.

Y cada apunta a un archivo de vínculo físico es que muy archivo.

Suena confuso, pero pensar en ello como sigue:

Cada archivo es algunos datos en el disco. Luego hay un puntero de inodos que dentro de algún directorio con algún nombre apuntando a ese recurso.

Los enlaces duros son solo eso. Solo hay múltiples "listas" del archivo.

En consecuencia, comparten el mismo bloqueo de lectura, se modifican/eliminan/etc. juntos.

Sin embargo, esto solo se puede hacer en un sistema de archivos/dispositivo y no en varios dispositivos.

Los enlaces tienen algunas grandes ventajas. Ellos son bastante evidentes:

Usted no tiene datos duplicados. Lo que elimina el potencial de inconsistencias y no tiene que actualizar y necesita menos espacio en el disco.

Sin embargo, esto a veces tiene mucha más importancia.

Por ejemplo si se ejecuta el sitio web múltiples y todos ellos utilizan el Zend Framework.

Esto es una gran estructura de mierda y el almacenamiento en caché de código de operación se llenará como 50 megas de su ram o algo así.

Si tiene la misma carpeta de biblioteca zend para sus sitios web, solo necesita una vez.

+0

Esta es una gran respuesta. He estado leyendo sobre cada una de las cosas que mencionaste y me parece muy útil. Debería haber sido más claro, sin embargo, de que en realidad solo estoy trabajando con un servidor y la sincronización debe ocurrir entre los directorios principales de los sitios. ¿No es esto totalmente para lo que son las herramientas como rsync? – filip

+0

Gracias esta es una información muy útil. He estado experimentando con enlaces simbólicos y creo que pueden resolver mi problema mejor que rsync. – filip

Cuestiones relacionadas