Estrategias de respaldo de repository SVN

Soy nuevo en SVN y me gustaría saber qué métodos están disponibles para realizar copias de seguridad de repositorys en un entorno Windows.

Podría usar algo como (Linux):

svnadmin dump repositorypath | gzip > backupname.svn.gz 

Como Windows no es compatible con GZip, es solo:

 svnadmin dump repositorypath > backupname.svn 

Usamos svnadmin hotcopy, por ejemplo:

 svnadmin hotcopy C:\svn\repo D:\backups\svn\repo 

Según el libro :

Puede ejecutar este comando en cualquier momento y hacer una copia segura del repository, independientemente de si otros procesos están usando el repository.

Por supuesto, puede ZIP (preferiblemente 7-Zip) la copia de seguridad. En mi humilde opinión, es la más sencilla de las opciones de copia de seguridad: en caso de desastre, hay poco que hacer aparte de descomprimirlo en su lugar.

Hay un script hotbackup.py disponible en el sitio web de Subversion que es muy útil para automatizar copias de seguridad.

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in

Aquí hay un script de Perl que:

  1. Copia de seguridad del repository
  2. Cópialo en otro servidor a través de SCP
  3. Recuperar la copia de seguridad
  4. Crear un repository de prueba a partir de la copia de seguridad
  5. Haz una prueba de pago
  6. Enviarle un correo electrónico con cualquier error (a través de cron)

La secuencia de comandos:

 my $svn_repo = "/var/svn"; my $bkup_dir = "/home/backup_user/backups"; my $bkup_file = "my_backup-"; my $tmp_dir = "/home/backup_user/tmp"; my $bkup_svr = "my.backup.com"; my $bkup_svr_login = "backup"; $bkup_file = $bkup_file . `date +%Y%m%d-%H%M`; chomp $bkup_file; my $youngest = `svnlook youngest $svn_repo`; chomp $youngest; my $dump_command = "svnadmin -q dump $svn_repo > $bkup_dir/$bkup_file "; print "\nDumping Subversion repo $svn_repo to $bkup_file...\n"; print `$dump_command`; print "Backing up through revision $youngest... \n"; print "\nCompressing dump file...\n"; print `gzip -9 $bkup_dir/$bkup_file\n`; chomp $bkup_file; my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz"; print "\nCreated $zipped_file\n"; print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`; print "\n$bkup_file.gz transfered to $bkup_svr\n"; #Test Backup print "\n---------------------------------------\n"; print "Testing Backup"; print "\n---------------------------------------\n"; print "Downloading $bkup_file.gz from $bkup_svr\n"; print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`; print "Unzipping $bkup_file.gz\n"; print `gunzip $tmp_dir/$bkup_file.gz`; print "Creating test repository\n"; print `svnadmin create $tmp_dir/test_repo`; print "Loading repository\n"; print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`; print "Checking out repository\n"; print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`; print "Cleaning up\n"; print `rm -f $tmp_dir/$bkup_file`; print `rm -rf $tmp_dir/test_checkout`; print `rm -rf $tmp_dir/test_repo`; 

Fuente de script y más detalles sobre lo racional para este tipo de copia de seguridad.

Yo uso svnsync , que configura un servidor remoto como espejo / esclavo. Hicimos que un servidor se desconectara hace dos semanas, y pude cambiar el esclavo a la posición primaria con bastante facilidad (solo tuve que restablecer el UUID en el repository esclavo al original).

Otra ventaja es que la sincronización puede ser ejecutada por un intermediario, en lugar de como una tarea en cualquiera de los servidores. He tenido un cliente para dos VPN sincronizar un repository entre ellos.

svnadmin hotcopy

 svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH 

Este subcomando realiza una copia de seguridad completa “caliente” de su repository, incluidos todos los enlaces, archivos de configuración y, por supuesto, los archivos de la base de datos.

svnbackup en Google Code, una aplicación de consola .NET.

  • Puede crear una copia de seguridad del repository ( volcado ) con svnadmin dump .

  • Luego puede importarlo usando svnadmin load .

Referencia detallada en el SVNBook: “Migración de datos del repository usando svnadmin”

Básicamente, es seguro copiar la carpeta del repository si el servidor svn está detenido. (fuente: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khubrys%5B1-25%5D )

Entonces, si puede detener el servidor, hágalo y simplemente copie el repository, ya sea con algún script o herramienta de respaldo. Cobian Backup se adapta muy bien ya que puede detener e iniciar servicios de forma automática, y puede realizar copias de seguridad incrementales, por lo que solo realiza copias de seguridad de partes del repository que han cambiado recientemente (útil si el repository es grande y realiza copias de seguridad en ubicaciones remotas) )

Ejemplo:

  1. Instalar Cobian Backup
  2. Agregue una tarea de respaldo:

    • Establecer el origen en la carpeta del repository (p. Ej. C:\Repositories\ ),

    • Agregue el evento de pre-copia de seguridad "STOP_SERVICE" VisualSVN,

    • Agregue evento posterior a la copia de seguridad, "START_SERVICE" VisualSVN,

    • Establezca otras opciones según sea necesario. Hemos configurado copias de seguridad incrementales, incluida la eliminación de las anteriores, el calendario de copias de seguridad, el destino, la compresión incl. división de archivos, etc.

  3. ¡Lucro!

hay 2 métodos principales para hacer una copia de seguridad de un servidor svn, primero es una copia rápida que creará una copia de sus archivos de repository, el problema principal con este enfoque es que guarda datos sobre el sistema de archivos subyacente, por lo que puede tener dificultades para repostar este tipo de copia de seguridad en otro tipo de servidor svn u otra máquina. hay otro tipo de copia de seguridad llamada volcado, esta copia de seguridad no guardará ninguna información del sistema de archivos subyacente y es potable para cualquier tipo de servidor SVN basado en la subversión tigiris.org.

sobre la herramienta de copia de seguridad puede usar la herramienta svnadmin (puede hacer hotcopy y dump) desde el símbolo del sistema, esta consola reside en el mismo directorio donde vive su servidor svn o puede buscar las herramientas de respaldo de svn en google.

Mi recomendación es que haga ambos tipos de copias de seguridad y las saque de la oficina a su cuenta de correo electrónico, servicio amazon s3, ftp o servicios azure, de esa manera tendrá una copia de seguridad de seguridad sin tener que alojar el servidor svn en algún lugar fuera de la oficina tu oficina.

Aquí una herramienta GUI de Windows para hacer un volcado de repositorys de subversión locales y remotos:

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

La descripción de la herramienta dice:

Esta herramienta simple permite realizar una copia de seguridad de volcado de un repository de subversión local y remoto. El software funciona de la misma manera que “svnadmin”, pero no es una interfaz gráfica de usuario sobre él. En su lugar, use directamente las bibliotecas de subversión para permitir la creación de volcado en modo independiente sin ninguna otra herramienta adicional.

Espero que esto ayude…

Me gusta copiar todo el directorio repo a mi ubicación de respaldo. De esta forma, si sucede algo, puede copiar el directorio y estar listo para funcionar inmediatamente.

Solo asegúrese de conservar los permisos, si es necesario. Por lo general, esto es solo una preocupación en máquinas Linux.

Para repositorys alojados, desde svn versión 1.7 puede usar svnrdump , que es análogo a svnadmin dump para repositorys locales. Este artículo proporciona un recorrido agradable, que esencialmente se reduce a:

 svnrdump dump /URL/to/remote/repository > myRepository.dump 

Después de descargar el archivo de volcado, puede importarlo localmente

 svnadmin load /path/to/local/repository < myRepository.dump 

o subirlo al host de su elección.

Si está utilizando el formato de repository FSFS (el predeterminado), puede copiar el repository mismo para hacer una copia de seguridad. Con el viejo sistema BerkleyDB, el repository no es independiente de la plataforma y, en general, querrá usar el volcado svnadmin.

El tema de documentación de svnbook para copia de seguridad recomienda el comando svnadmin hotcopy , ya que se ocupará de cuestiones como archivos en uso y svnadmin hotcopy .

 @echo off set hour=%time:~0,2% if "%hour:~0,1%"==" " set hour=0%time:~1,1% set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2% echo Performing Backup md "\\HOME\Development\Backups\SubVersion\%folder%" svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn 

Este es el archivo por lotes que tengo en ejecución que realiza mis copias de seguridad

Para la solución de copia de seguridad diaria y completa solo use los scripts de copia de seguridad SVN aquí .

He comstackdo los pasos que seguí para realizar una copia de seguridad del repository SVN remoto de mi proyecto.

 install svk (http://svk.bestpractical.com/view/SVKWin32) install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download) svk mirror //local  svk sync //local 

Esto lleva tiempo y dice que está obteniendo los registros del repository. Crea un conjunto de archivos dentro de C:\Documents and Settings\nverma\.svk\local .

Para actualizar este repository local con el último conjunto de cambios desde el remoto, simplemente ejecute el comando anterior de vez en cuando.

Ahora puedes jugar con tu repository local ( /home/user/.svk/local en este ejemplo) como si fuera un repository SVN normal.

El único problema con este enfoque es que el repository local se crea con incrementos de revisión por la revisión real en el repository remoto. Como alguien escribió:

El comando svk miror genera una confirmación en el repository recién creado. Por lo tanto, todas las confirmaciones creadas por la sincronización posterior tendrán números de revisión incrementados en uno en comparación con el repository público remoto.

Pero, esto estaba bien para mí, ya que solo quería una copia de seguridad del repository remoto de vez en cuando, nada más.

Verificación:

Para verificar, use el cliente SVN con el repository local de esta manera:

 svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  

Este comando luego va a verificar la última revisión del repository local. Al final dice Checked out revision N Esta N fue una más que la revisión real encontrada en el repository remoto (debido al problema mencionado anteriormente).

Para verificar que svk también trajo todo el historial, el checkout de SVN se ejecutó con varias revisiones anteriores usando -r con 2, 10, 50 etc. Luego se confirmaron los archivos en ser de esa revisión.

Al final, comprima el directorio C:/Documents and Settings\nverma/.svk/local/ y guarde el C:/Documents and Settings\nverma/.svk/local/ zip en algún lugar. Sigue haciendo esto regularmente.

como otros han dicho, hot-backup.py del equipo de Subversion tiene algunas características agradables más que simplemente svnadmin hotcopy

Ejecuto una tarea progtwigda en una secuencia de comandos python que araña todos mis repositorys en la máquina, y utiliza hotbackup para guardar varios días en el uso de hotcopies (paranoicos de corrupción) y svnadmin svndump en una máquina remota. La restauración es realmente fácil de eso, hasta ahora.

1.1 Crear volcado desde el repository SVN (Subversion)

 svnadmin dump /path/to/reponame > /path/to/reponame.dump 

Ejemplo real

 svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump 

1.2 Volcado Creado Gzip

 gzip -9 /path/to/reponame.dump 

Ejemplo real

 gzip -9 /backups/testrepo.dump 

1.3 Descarga SVN y Gzip Dump con One-liner

 svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz 

Ejemplo real

 svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz 

Cómo hacer copias de seguridad (volcar) y restaurar (cargar) el repository SVN (Subversion) en Linux.
Ref: svn subversion backup andrestre