¿Cuál es la mejor solución para mantener el control de revisiones y copias de seguridad en sitios web activos?

StackOverflow https://stackoverflow.com/questions/27292

  •  09-06-2019
  •  | 
  •  

Pregunta

¿Cuál es la mejor solución para mantener el control de revisiones y copias de seguridad en sitios web activos?

Como parte de mi trabajo, trabajo con varios sitios web activos.Necesitamos un medio eficiente para mantener copias de seguridad de las carpetas activas a lo largo del tiempo.Además, actualizar estos sitios puede ser complicado, especialmente si se produce un cambio en el entorno en vivo por cualquier motivo.

Lo ideal sería un control de fuente sin complicaciones.Implementé SVN por un tiempo, lo cual fue excelente como semisolución para respaldo y control de revisiones (fácil reversión de cambios temporales o importantes), etc.

Desafortunadamente, SVN coloca directorios ocultos .SVN en todas partes, lo que causa problemas, especialmente cuando otros desarrolladores realizan cambios en la estructura de carpetas o copian/mueven directorios de sitios web.He escuchado el argumento de que esto es una cuestión de educación, etc.pero el enfoque adoptado por SVN simplemente no es una solución práctica para nosotros.

Estoy pensando que tal vez una solución de copia de seguridad incremental sea mejor.

Otras posibilidades incluyen:

  1. eslovaco, que es solo línea de comandos, lo que se convierte en un problema.Además, no estoy seguro de qué tan apropiado sería esto.
  2. Mercurial, quizás con algunos activadores para ocultar el componente distribuido que no es necesario en este caso y sería innecesariamente complicado para otros desarrolladores.

    Experimenté brevemente con Mercurial pero no pude encontrar una buena manera de separar el repositorio y mantenerlo constantemente sincronizado con la copia de trabajo de la carpeta en vivo.Tal vez como solución de control de fuente (hacer que el repositorio y la carpeta en vivo sean el mismo lugar) combinada con otra solución de respaldo, este podría ser el camino a seguir.

    Una desventaja de Mercurial es que no coloca las carpetas vacías bajo control de código fuente, lo cual es problemático para los sitios web que a menudo tienen carpetas vacías como ubicaciones de marcador de posición para la carga de archivos, etc.

  3. sincronización, que realmente no he investigado.

Realmente agradecería su consejo sobre la mejor manera de mantener copias de seguridad de sitios web activos, idealmente con un medio sencillo para recuperar rápidamente versiones anteriores.

La respuesta responde:

  • @Kibbee:

    • No se trata tanto de educación sino de falta de familiaridad con algo más que VSS y falta de tiempo/esfuerzo para aprender algo más.

    • Supongo que el enfoque xcopy/7-zip parece razonable, pero rápidamente ocuparía mucho espacio, ¿verdad?

    • En cuanto al control de fuente, creo que me gustaría que el control de fuente simplemente dijera "este es el estado de la carpeta ahora, me ocuparé de eso y si no puedo hacer coincidir las cosas, es culpa tuya". Simplemente comenzaremos nuevas historias" en lugar de fracasar estrepitosamente.

  • @SteveM:

    • Sí, esa es una forma más agradable de hacerlo, pero requeriría un cambio cultural significativo.Dicho esto, me gusta mucho este enfoque.
  • @mk:

    • Bien, no pensé en usar Rsync para implementar.¿Esto solo sube las diferencias?Sobrescribir todo el directorio activo cada vez que realizamos un cambio sería problemático debido al tiempo de inactividad del sitio.

Todavía tengo curiosidad por ver si hay opciones más tradicionales.

¿Fue útil?

Solución

Aún puede usar SVN, pero en lugar de realizar una verificación en su entorno en vivo, realice una exportación, de esa manera no se crearán directorios .svn.La desventaja, por supuesto, es que no se pueden realizar cambios en el código de su entorno en vivo.Ésto es una cosa buena.

Como regla general, nunca se deben permitir cambios de código en los sistemas de producción.El cambio debe realizarse y probarse en un entorno de desarrollo/prueba/UAT, luego, una vez confirmado que está bien, puede etiquetar ese código en SVN con algo como RELEASE-x-x-x.Luego, en el sistema en vivo, exporte el código con esa etiqueta.

Otros consejos

Usamos la opción 3.Rsync.Escribí un script bash para hacer esto junto con algunas comprobaciones adicionales, pero estos son los conceptos básicos de lo que hace.

  1. Haz una etiqueta para empujar a vivir.
  2. Ejecute svn export en esa etiqueta.
  3. rsync para vivir.

Hasta ahora ha ido funcionando.No tenemos que preocuparnos por conflictos de usuarios ni tener un usuario separado para ejecutar svn en la máquina de producción.

Cualquier solución de control de fuente que elija tendrá problemas si las personas mueven, eliminan o agregan archivos y no se lo informan al sistema de control de fuente.No conozco ningún elemento de control de fuente que pueda resolver este problema.

En el caso de que simplemente no puedas educar a las personas que trabajan en el proyecto[1], entonces quizás tengas que recurrir a instantáneas diarias.Algo tan simple como un archivo por lotes usando xcopy en una unidad de red y posiblemente 7-zip en la línea de comando para comprimirlo para que no ocupe demasiado espacio probablemente sería la solución más simple.

[1] No lo creería en absoluto, probablemente se trata más bien de un caso de personas que son demasiado testarudas y no están dispuestas a aprender o hacer "trabajo extra".No importa cuánto tiempo podría ahorrarles el control de fuente cuando tienen que volver a versiones anteriores o dos personas han editado el mismo archivo.

rsync solo cargará las diferencias.No lo he usado personalmente, pero Marcos peregrino Escribí hace mucho tiempo sobre cómo incluso maneja las diferencias binarias brillantemente.

svn+rsync parece una solución fantástica.Tendré que intentarlo en el futuro.

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