respaldo realizar qué para obligatoriamente información hacer formas deben datos actividades version-control backup

version-control - hacer - qué actividades obligatoriamente se deben realizar para el respaldo de la información



¿Qué estrategia de respaldo usas para tu código? (28)

Sin embargo, hay ocasiones en que su copia local no está sincronizada con el repositorio. Además, algunos proyectos de tipo recinto de seguridad pueden no tener aún ;-) lo convirtieron en SCC.

En primer lugar, debes tratar de minimizar el tiempo que tu código está ''fuera'' de SCC. No con fines de copia de seguridad, sino para hacer un seguimiento de lo que se hizo cuando, y en particular por qué . cometer comentarios es invaluable . Un gran checkin que contenga 3000 archivos con el mensaje "Revisión inicial" no es muy útil.

El argumento de los proyectos de la caja de arena tiene algo de peso, pero debería tratarlo de la misma manera que trata a todos sus otros archivos. Realice una copia de seguridad en una unidad USB externa, o lo que sea. Si no está respaldando todos sus otros archivos, le sugiero que empiece ahora.

Y, por supuesto, nadie quiere tener que reconstruir todo su directorio de proyectos desde SCC si la unidad de disco muere, mucho mejor simplemente restaurar desde una copia de seguridad real.

¿No es esto solo svn checkout ? ¿Por qué no simplemente ''reconstruir desde SCC''?

Todos usan control de código fuente para administrar versiones (¿no?) Y esto proporciona cierto nivel de respaldo. Sin embargo, hay ocasiones en que su copia local no está sincronizada con el repositorio. Además, algunos proyectos de tipo recinto de seguridad pueden no tener aún ;-) lo convirtieron en SCC.

EDITAR : Tengo múltiples proyectos en mis directorios de proyectos. No todos están en desarrollo actual, pero cualquiera de ellos podría necesitar ser "reparado" cada vez que se encuentre un error. La restauración de un único proyecto activo de SCC parece perfectamente razonable. La restauración de todos los proyectos de la docena de docenas que apoyo de SCC parece menos razonable que la restauración de una copia de seguridad y sincronización según sea necesario desde SCC.

¿Qué estrategias de respaldo, aparte del control de código fuente, usa para mantener su código seguro?

Puede encontrar una pregunta similar en https://stackoverflow.com/questions/38388/organization-wide-backup-strategy , pero estoy más interesado en escuchar las estrategias personales de los demás si trabaja en una organización que no tiene estrategia general Proporcionaré mi estrategia en una respuesta.


nadie quiere tener que reconstruir todo su directorio de proyectos desde SCC si la unidad de disco muere

¿Huh? Siempre lo hacemos de esta manera. De hecho, tenemos un servidor de compilación que realiza continuamente compilaciones nuevas desde un proceso de pago limpio. Si la restauración desde una copia de seguridad parece ser una mejor manera que la restauración desde el SCC, debe mejorar su SCC.

Para todos los códigos que no están listos para producción, tenemos un directorio llamado "patio de juegos" y "basura" en el SCC.


(Además del control de fuente a un servidor remoto) utilizo la versión gratuita de SyncBack (www.2brightsparks.com) y este archivo por lotes: (donde los argumentos a syncback.exe especifican los perfiles de respaldo de sincronización previamente configurados)

@echo off echo Stop and start SQL Server echo ------------------------- net stop "SQL Server (SQLEXPRESS)" net stop "SQL Server (SQLSERVER2008)" echo ----------------------------------------------------------- echo Back up running now... please wait. "C:/Program Files/2BrightSparks/SyncBack/SyncBack.exe" c e-contents f-contents echo Backing up done. Starting SQL Server... echo ----------------------------------------------------------- net start "SQL Server (SQLEXPRESS)" net start "SQL Server (SQLSERVER2008)" echo ----------------------------------------------------------- echo Back up is done and SQL Server is running now. echo ----------------------------------------------------------- pause

con dos unidades flash de 8 gb todos los días. Al final de la semana, hago lo mismo pero luego selecciono un disco externo de escritorio.

SyncBack es genial!


Además de la subversión, utilizo crashplan para copias de seguridad externas en línea. También puede realizar copias de seguridad en el almacenamiento local y otras computadoras (aunque desafortunadamente parece requerir que el mismo conjunto de respaldo se almacene en cada destino actualmente, es decir, no puede almacenar un conjunto pequeño de elementos vitales fuera del sitio y un conjunto más grande localmente).

También uso unison (para cosas demasiado grandes para realizar copias de seguridad fuera del sitio: música, películas, etc.) y una cápsula de tiempo OSX, de modo que en caso de pérdida de datos, espero poder restaurar sin recurrir a la copia de seguridad en línea. La copia de seguridad en línea está destinada a un desastre como la casa incendiada o robada.


Al final del día, verifico mi código en el control de fuente.

Alrededor de la medianoche, Mozy inicia y respalda mi código fuera del sitio.

Alrededor de la 1 a.m., la caja de SC se copia en una cinta.

Alrededor de las 3am Syncback SE se activa y realiza una copia de seguridad de mi código en una HD externa.

Durante todo el día, mi buzón de trabajo se sincroniza con mi casa usando Live Sync


Aunque esta es una respuesta subjetiva, creo que no está utilizando el control de fuente correctamente.

Sí, su copia local a menudo no está sincronizada con el repositorio, pero cualquier cambio dado debería ser solo una pequeña cantidad de trabajo (p. Ej., No debería tener elementos que no estén registrados durante días). Si se compromete con frecuencia, en el caso de una pérdida de unidad (robo / falla / etc.) pierde una pequeña cantidad (generalmente <1 día) de trabajo.

Si estás haciendo algo totalmente loco que es perjudicial para otros desarrolladores, entonces deberías estar trabajando en una sucursal. Cuando hayas terminado, fusiona tus cambios.

También debería poder reconstruir el proyecto desde su sistema SCC en cualquier momento. Es una buena cosa hacer de vez en cuando, solo para asegurarse de que todo lo que necesita para compilar está en SCC; a veces los archivos se pierden, y nunca se da cuenta porque siempre compila a partir de la copia de trabajo que ha estado usando para los últimos 6 meses.


Cuando escribes algo que aún no pertenece a la construcción principal, crea una rama. Cuando debería entrar en la compilación principal, combine su rama con ella.

Los VCS distribuidos también hacen que las sucursales locales sean realmente fáciles, el repositorio central nunca sabrá que existieron.

Realizar una copia de seguridad de un repositorio local (de un VCS distribuido) mediante el envío de cambios a una copia remota es tan trivial que utilizo git como mi método principal de copia de seguridad para la mayoría de los documentos, archivos de configuración, básicamente, cualquier cosa no binaria.


Desde que uso TFS (Team Foundation Server) hago una copia de seguridad de la base de datos de SQL Server como cualquier otra base de datos que uso


El código que no está registrado (y, por lo tanto, respaldado) en su VCS, no existe . No es más real que el código que tienes en tu cabeza. Es realmente así de simple.


En caso de que algo falle, a veces me enviaré por correo electrónico piezas importantes en las que estoy trabajando a cuentas de correo web como Yahoo o Hotmail. Sé que todo el mundo está hablando de cambiar de papel a digital, pero a veces uno nunca sabe lo que va a suceder, así que imprimiré copias impresas. Obviamente, esta no es la mejor solución, especialmente para un proyecto grande, por lo que generalmente limitaré las copias impresas a piezas más pequeñas e importantes. También tiendo a ser un poco paranoico, así que terminaré tomando una copia de seguridad de una copia de seguridad de una copia de seguridad.


En mi opinión, reconstruir todo de SCC de vez en cuando es una buena práctica (durante la noche, por ejemplo). Al hacerlo, asegúrese de no haber olvidado agregar ningún archivo esencial al depósito. El procedimiento completo debe requerir de todos modos como máximo un par de pasos.



Mi estrategia siempre es verificar y hacer una copia de seguridad de todo el repositorio.

Nunca dejo nada fuera del control de la fuente y me aseguro de que las copias de seguridad periódicas (rotación incremental diaria, completa semanal y mensual) estén sucediendo y sean funcionales.


Para todo menos para las pruebas más simples de 5 minutos, uso el control de versiones, Subversion en mi caso.

He usado hardware antiguo con el que ejecuto Linux y un servidor de Subversion al que me comprometo. Luego tengo un script cron que archiva el repositorio (si se modificó desde la última vez) todas las noches y lo adjunta en un correo a mi cuenta de gmail con el registro de cambios en el cuerpo. Con el límite de archivos adjuntos de 20 mb en Gmail, todos los repositorios intensivos binarios se pueden respaldar con la división de los archivos.

Planeo volver a trabajar en esto para poner las copias de seguridad en Amazon S3 pero todavía no he tenido tiempo para hacerlo.

Lo más importante en mi humilde opinión es tener siempre una copia de seguridad en otro lugar (geográficamente), no solo en una unidad USB o algo así.

En caso de muy pequeño 5 min. Las pruebas las puse en mi DropBox (www.getdropbox.com).


Si diverges de tu control fuente durante un tiempo considerable, entonces necesitas un control de fuente distribuido.


Subversion: el servidor es administrado por Beanstalk, el cliente usa Tortoise SVN. Después de cada sesión de codificación, todo vuelve al repositorio SVN, por lo que no tengo que preocuparme por perder el código. También respaldo periódicamente el último código en un CD y lo fijo en una bóveda solo para estar seguro.

Además, tenga en cuenta que su código es solo una parte de la ecuación. La mayoría de los entornos de desarrollo modernos requieren una personalización importante por sí mismos (la integración de herramientas de terceros es el ejemplo obvio, pero basta instalar también el IDE con las opciones adecuadas). Por lo tanto, también realizo todo mi desarrollo en una máquina virtual que puedo respaldar fácilmente en un disco duro externo. Estos se bloquean en la bóveda también.

Finalmente, respaldo una base de datos de "referencia" para completar la imagen. No puedo simplemente hacer una copia de seguridad del esquema porque, en mi producto, hay datos importantes del sistema guardados en la base de datos (por ejemplo, contenido entregado con el sitio web).


También verificamos todo (check in temprano y con frecuencia) y realizamos una copia de seguridad de todo el repositorio (CVS) con tar y ftp en nuestro servidor de respaldo.


Uso Unison para replicar todo el directorio de inicio en dos máquinas diferentes en casa. De esta forma, si soy descuidado o si tengo archivos de hace 20 años que no están bajo el control de fuente ( .emacs ), todavía tengo una medida de protección. También reproduzco todo, excepto los archivos personales (fotos, música) en una máquina en el trabajo también.


Uso Mercurial como mi sistema de control de versiones. Utilizo el repositorio en mi computadora portátil con Windows como mi repositorio principal pero uso la función de clonación de Mercurial para respaldarlo en mi servidor ubuntu cada dos o tres días. También utilizo Sync Toy para realizar copias de seguridad de importantes directores en una unidad de memoria flash, incluida la copia del repositorio que se encuentra en mi computadora portátil.


Uso rdiff-backup para realizar una copia de seguridad incremental diaria de mi computadora portátil a través de SSH. Utiliza la compresión deltra (como rsync) por lo que es muy rápido. También le permite retroceder en cualquier número de días en los datos de la copia de seguridad para que pueda volver inmediatamente después de haber terminado algún código complicado, pero antes de que accidentalmente lo borre todo.

Es un poco complicado comenzar, pero en mi opinión vale la pena.


Utilizo Microsoft SyncToy 2.0 para sincronizar mis directorios de proyectos con una carpeta en un recurso compartido de red. Tengo tareas programadas separadas que ejecutan diferentes scripts SyncToy para los diversos directorios (desglosados ​​por la versión de Visual Studio).


Utilizo MozyPro para automatizar una copia de seguridad fuera del sitio del código actual en mi máquina, así como la base de datos de control de código fuente. Esto funciona incrementalmente cada noche.


Version Control (SVN) es más que suficiente para mí. Sin embargo, hay algunas reglas:

  • Me comprometo con la mayor frecuencia posible (4-6 horas de trabajo sin cometer ya comenzar a crear esta sensación de hormigueo de que algo va mal).
  • Las estructuras SVN de soluciones son siempre atómicas. Solo necesita un CheckOut nuevo para poder ejecutar la secuencia de comandos de integración "Rebuild-Copy-Package" en cualquier solución (las pruebas en ejecución pueden requerir la configuración de conexión DB antes de eso).
  • El servidor SVN es confiable y está respaldado regularmente.
  • Los cambios se propagan entre las diferentes soluciones que componen la aplicación (es decir, desde la biblioteca compartida de código abierto que lo aprovecha) solo a través de las confirmaciones (el servidor de integración recoge esto y crea paquetes que podrían usarse en las soluciones en sentido descendente) .
  • Los proyectos de espacio aislado (prototipos) siempre se guardan en la carpeta Prototipos de SVN (hermano de Tronco o Etiquetas) con el nombre "YYYY-MM-DD PrototypeName".

NO USE HERRAMIENTAS DE SINCRONIZACIÓN BIDIRECCIONALES PARA RESPALDO

... bueno, al menos no de forma automática

Las herramientas de sincronización, como el unísono, sincronizan dos (o más) ubicaciones. Por lo tanto, si accidentalmente arruinas un archivo en una ubicación, el desastre se transformará en otro y no lo notarás.


Estoy trabajando en un producto llamado "Transactor Code Agent", que está diseñado para hacer exactamente lo que está pidiendo.

Proporciona copias de seguridad locales y control de versiones para sus archivos de origen.

Le permite usar su configuración de control de origen existente para lo que estaba destinado (gestionando el trabajo "realizado en su mayoría" por varios desarrolladores en varias versiones), al tiempo que le proporciona una copia de seguridad automática y control de versión de archivo local para su trabajo en progreso.

La versión beta debería salir en algún momento de enero.

Puedes ver nuestro "sitio web" (es un poco difícil) en

www.transactor.com

Hay un formulario allí que puede utilizar para registrarse en la versión beta privada.

Actualizar:

Aquí hay un poco más de información, basada en algunos comentarios que recibí en los comentarios:

1) ¿Tengo algo relacionado con el control de fuente?

¡No! Creo que el control de fuente es algo maravilloso. Cuando se usa adecuadamente, proporciona una tremenda herramienta para administrar el ciclo de vida del software.

Pero, cuando se usa correctamente, el control de la fuente deja una gran brecha, ya que no protege el trabajo de un desarrollador hasta que se termina. Lo que se necesita es algo que se concentre en el trabajo en progreso de los programadores individuales. Code Agent hace eso.

Para decirlo de otra manera, el control de fuente es una herramienta diseñada para facilitar la vida de su jefe (porque ayuda a las características del gerente y los cambios y equipos y versiones a lo largo del tiempo)

Code Agent es una herramienta diseñada para facilitarle la vida (porque asegura que su trabajo siempre se guarde).


Las copias de seguridad en línea (Internet) son una parte importante del proceso.

Todo tipo de copias de seguridad en unidades externas están condenadas al fracaso a menos que sean realizadas por un personal designado (como un seminario). Si usted es una tienda muy pequeña (o un μ-ISV, como yo), esta no es una opción. Incluso entonces, ¿dónde se guarda el disco externo? Una caja fuerte con protección contra incendios es la única buena respuesta posible. Almacenarlos fuera del sitio no es bueno: la gente se olvidará de traerlo a la oficina para la copia de seguridad periódica.

Las copias de seguridad en NAS son en mi humilde opinión una mejor solución que las unidades externas. Pero el día en que el edificio arde en llamas, las copias de seguridad fuera del sitio son su única oportunidad de mantenerse con vida.

Personalmente, utilizo Mozy para hacer una copia de seguridad de los principales directorios locales además del SCC DB.

Huelga decir que AES-256 o cifrado similar es imprescindible para el almacenamiento de su código fuente en los discos duros de otra persona. Mozy y todos sus competidores serios lo ofrecen.


Uso un producto (que escribí, es mi micro-isv), llamado Agente de código de transacción. Es una herramienta de respaldo diseñada específicamente para programadores.

Mira su código fuente, y cada vez que guarda un cambio, lo respalda y guarda un historial local para usted.

Creo que funciona mucho mejor para la copia de seguridad que el control de fuente por varias razones:

  1. El control de código fuente pretende ser una herramienta de gestión de cambios para ayudarlo a pasar de un estado consistente a otro
  2. No tiene que preocuparse por mantener una sucursal privada
  3. No tiene que interrumpir su trabajo para realizar comprobaciones exclusivamente con fines de copia de seguridad. Puedes concentrarte en escribir código y registrar tus cosas cuando esté listo.

Puede descargar una demostración aquí:

http://www.transactor.com/download


joel de joelonsoftware dijo en una publicación que si construir e implementar su proyecto requiere más de dos líneas de comando (o más de un minuto en los preparativos) lo está haciendo mal. estoy completamente de acuerdo con él, y creo que un SCM debería ser suficiente. los sistemas de respaldo son solo para desastres catastróficos (fallas de discos duros, incendios y tornados).