¿Cuál es una forma buena y sencilla de realizar una copy de security de un repository SVN a un server FTP?

Me gustaría hacer una copy de security de mi repository SVN usando tar y ftp de un cronjob una vez al día. Esto es bastante fácil, pero me gustaría asegurarme de que no haya commit, etc. ejecutándose mientras se realiza la copy de security. Si bien hay momentos del día / noche en que esto es muy poco probable, pero prefiero no confiar en eso, porque si ya estoy despierto por la noche con algo de crisis, lo último que necesito es mi SVN o mis copys de security obteniendo hecho un desastre.

Estoy buscando una salvaguardia muy simple pero efectiva. Está bien si los clientes de SVN obtienen un error mientras se está ejecutando la copy de security (no tardará tanto). Debería usar

  • algo en el nivel del sistema de files
  • algunos script SVN hook
  • algo completamente diferente

Empecé a publicar esto en serverfault, pero luego decidí que está un poco más cerca de la progtwigción que de sysadmin, especialmente si hay ganchos involucrados. Siéntete libre de moverlo si piensas lo contrario.

La forma teórica de hacer una copy de security de forma segura es usar el command svnadmin hotcopy ( más detalles aquí ). Básicamente, hace una copy de un repository (no un volcado , una copy ), teniendo cuidado de bloquear todas las operaciones durante ese time.

Esta operación es bastante rápida, por lo que no creo que ningún cliente tenga un error, aunque pueden experimentar cierto retraso (dependiendo de la carga del server, etc.).

Puede encontrar un ejemplo de script en el website del proyecto de subversión de Apache .

Si haces un volcado, además del gran time que lleva, no estarás seguro de que lo hará de forma atómica. Los vertederos son útiles para

  • asegúrese de que puede migrar de una versión a la siguiente: piense en copys de security a largo ploop. Por ejemplo, si su server se actualiza de la versión 1.4 a la 1.5 o 1.6, es interesante hacer un volcado y luego cargar sus repositorys para aprovechar al máximo las mejoras. En algunas actualizaciones más drásticas es una necesidad porque el formatting del repository cambia demasiado.
  • filtrar files, o fusionar repositorys, esas son operaciones más complejas, fuera del tema aquí.

Antes de optar por un vertedero, si lo prefiere de todos modos, le recomiendo que realice la operación manualmente antes, para asegurarse de que no sea demasiado largo. Asegúrese también de comprimir esos files, que son mucho más grandes que un repository (copy en caliente); este último está muy bien comprimido.

svnadmin dump /path/to/repo > repobackup_date

Ahora puede ejecutar tar, gzip, lo que sea en repobackup_date y svnadmin debe ocuparse de controlar el acceso al repository por usted.

Para restaurar, use svnadmin load /path/to/repo < repobackup_date .

Hago esto para todos mis repositorys svn de producción.

Siempre debe usar svn dump para hacer una copy de security de un solo file de su repository. Esto asegura que no haya transactions sucias en vuelo, que podrían dañar una copy del sistema de files. Luego solo use su aplicación ftp favorita para copyr el file.

Sugiero ejecutar los resultados de svn dump través de gzip o algún otro progtwig de compression primero.

Use svnadmin dump para hacer una copy de security, luego cURL para cargar FTP.

Aquí hay un text sobre la copy de security del repository y por qué debería usar svnadmin hotcopy

Yo recomendaría usar esta herramienta svn-backup . Combina lo mejor de las copys de security de repository completas e incrementales, y solo generará un solo file de copy de security por repository, sin importar cuántas veces se ejecute o cuántas revisiones haya en el repository. Este script en particular se ejecutará mucho más rápido que un volcado svnadmin normal, ya que solo descarga revisiones adicionales desde la última copy de security.

Utilicé este script para networkingucir el time de copy de security de un server de subversión muy activo de 8+ horas a ~ 20 minutos. Una vez que se completa el process de copy de security, puede cargarlo en un server FTP.