¿Es suficiente 'hotcopy' para las copys de security SVN o debería preocuparme por los volcados completos e incrementales?

Para mis cosas personales, solo uso el command svnadmin hotcopy una vez por semana, pero para más repositorys de misión crítica que incluyen muchos desarrolladores, ¿es suficiente? ¿O debería dedicar el time necesario para armar una estrategia de copy de security más rigurosa que incluya copys de security completas y copys de security incrementales?

hotcopy parece ser la forma más fácil de hacerlo, pero quiero poder restaurar un repository si, por algún motivo, se corrompe. ¿Haré un basurero a través de hotcopy me permitiré hacer esto?

¿Le preocupa la copy rápida o le preocupa hacer una copy de security solo una vez a la semana?

Hotcopy producirá una copy de security segura y completa de su repository, incluso si otros processs (sus desarrolladores, por ejemplo) acceden al repository al mismo time. Si aún no confía en él, cierre todos los accesos al repository y haga una copy de security copiándolo en alguna parte con las herramientas habituales del sistema de files. (Los desarrolladores no van a trabajar todo el día, ¿o sí?)

Si le preocupa la parte de una vez a la semana: solo piense en lo que sucederá si el repository desaparece el día antes de que se programe la próxima copy de security. ¿Importa? En caso afirmativo, realice copys de security con mayor frecuencia. Es así de simple.

¿Su repository es demasiado grande para save varios días o semanas de copys de security completas? Implemente un esquema de respaldo rotativo que use copys de respaldo completas e incrementales. ¿Tienes suficiente espacio para copys de security? Ahórrese el problema y haga copys de security completas.

Otra buena estrategia es mantener un segundo repository SVN y sincronizarlo con el principal con svnsync , generalmente con un enlace post-commit.

La principal ventaja es que si el primer repository falla por alguna razón, puede cambiar inmediatamente al de copy de security y seguir trabajando sin time de inactividad.

Implementé un plan de respaldo para el repository SVN 1.4.x de una empresa (alojado en Windows en ese momento), haciendo uso del script python svn-backup-dumps.py

Invoco svn-backup-dump.py desde un svn-backup-dump.py post-commit para activar copys de security incrementales para una revisión específica. schtasks para progtwigr una copy de security semanal "completa" con el mismo guión.

La recuperación (que hemos tenido que hacer dos veces debido a la eliminación de un directory en el repository) es relativamente simple: tomar la copy de security completa más reciente, restaurarla. Aplicar incrementales hasta la última revisión.

No he investigado las mejoras / cambios para 1.5 en esta área, pero creo que un plan similar funcionaría bien para usted.

Llámame vieja escuela, pero ¿qué hay de las versiones secundarias de una partición y luego fantasma en un horario?

La opción svnsync sugerida por Davide Gualano también suena bien. Me inclino por esta opción para evitar la partición innecesaria de mis discos (esto también puede perjudicar a otros administradores de forma incorrecta y no tener sentido en algunos de mis entornos de VPS).

Adición

He estado usando el command svnadmin 'dump' mucho últimamente. Esto funciona muy parecido al command de volcado mysql, ya que exporta su repository en los commands de creación de bak. Este command podría implementarse como crontab / tarea progtwigda y luego copyrse a una unidad externa como un file. Comandos de ejemplo:

 svnadmin dump c:\svn\project > c:\dumps\project.bak svnadmin load c:\svn\project < c:\dumps\project.bak 

Luego use la herramienta robocopy / you copy preferida para mover el file a otra location. Esto es útil si desea mover los files completamente fuera del server de repository, pero no hay acceso externo a la subversión.

Todavía no he llegado a un buen arte. Cuando muevo estos files entre máquinas, de vez en cuando obtengo algo como 'UUID mismatch'. He estado resolviendo esto al eliminar / marcar less la carpeta del proyecto y luego usar:

 svnadmin create c:\svn\project svnadmin load c:\svn\project < c:\dumps\project.bak 

Esto debería eliminar el error. Es posible que necesite volver a crear o restaurar enlaces con Eclipse u otros proyectos. Si el UUID está roto, puede afectar a otras personas que usan el proyecto también, por lo que debería ser una consideración.

Puede utilizar este método como un retroceso para Hotcopy. Entre ellos, deberías poder volver a almacenar el repository.

PS Ken, parece que svn-backup-dumps.py se ha movido aquí: http://svn.apache.org/repos/asf/subversion/trunk/tools/server-side/svn-backup-dumps.py

Si copy un repo dañado en la parte superior de su copy de security no corrompida anteriormente, entonces sí, perderá su copy de security no corrupta.

Si le preocupa esto, entonces, como han dicho otros, debe rotar sus copys de security.

También puede organizar la ejecución de 'svnadmin verify' automáticamente también.

Tuve mala suerte en el pasado solo con copys calientes. Si se trata de un código que se actualiza y se compromete muchas veces a lo largo del día, podría valer la pena una estrategia de copy de security más profunda.