¿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
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.
- 1. one-to-many bidireccional con
- 2. Django One-To-Many Models
- 3. Cómo implementar ONE-TO-MANY en una base de datos
- 4. NHibernate Many-to-many
- 5. Hibernate genera m + 1 consultas en Many-to-one
- 6. Nosql many-to-many
- 7. Many-to-Many con "Primary"
- 8. MySQL Many-To-Many Select
- 9. MySQL Many-To-Many Problema de consulta
- 10. Rails (ActiveRecord) many to many table
- 11. Django filter many-to-many with contains
- 12. sqlalchemy many-to-many, pero inverso?
- 13. SQL: tabla Many-To-Many Y consulta
- 14. Entity Framework - Linq To Entities - Many-To-Many Query Problems
- 15. Linq to Sql Many-Many Join Table
- 16. Liferay Service Builder - many-to-many relaciones
- 17. RestKit mapeo many-to-many, ¿cómo?
- 18. Many-to-many en la misma tabla con columnas adicionales
- 19. Relación ONE-TO-ONE de Symfony
- 20. ListProperty de claves vs Many-to-Many en App Engine
- 21. Hibernate: ¿por qué usar many-to-one para representar uno a uno?
- 22. Relaciones de Objectify: One-to-Many, ¿Puedo hacer esto de manera eficiente?
- 23. ¿Cómo manejar Many-To-Many en Grails sin belongsTo?
- 24. ¿Cómo se debe definir esta asociación Many-To-Many doctrine2?
- 25. Grails one-many mapping stalestaleexception en la clave compuesta
- 26. Many-to-many sin tabla intermedia - ¿es posible?
- 27. Redbean, Multiple many-to-many utilizando el mismo objeto
- 28. Entity Framework 4 No guarde mis filas Many-To-Many
- 29. Datos básicos, NSPredicate y to-many clave
- 30. Tengo una tabla de personas, a la que quiero vincular, many-to-many, con enlaces bidireccionales
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
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