VisualSVN Server para Windows incluye una función integrada para hacer copias de seguridad y verificar repositorios SVN según lo programado: visualsvn.com/server/features/backup
No lo sé con certeza, pero seguramente algunas herramientas como 7-zip podrían comprimir datos de STDIN, lo que significa que también podría usar el primer estilo en Windows.
nickf
55
Solo estoy mirando esto y un comentario de los documentos svnbook.red-bean.com/nightly/en/… es que obtendrás una salida muy grande de svnadmin dump, a menos que uses la opción --deltas.
Usando 7Zip: svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn Esto creará un archivo llamado 'backup.7z' que contiene un solo archivo, 'backupname.svn', que es el resultado de svnadmin dump.
Matt
44
@Josh Stodola bash :for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Puede ejecutar este comando en cualquier momento y hacer una copia segura del repositorio, independientemente de si otros procesos están utilizando el repositorio.
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 además de descomprimirla en su posición.
@daremon: le sugiero que lea las respuestas a las publicaciones a las que se vinculó, específicamente la que menciona que svnadmin dump no incluye los archivos de control del repositorio.
Powerlord
estrecha carrera, pero, yo voto por los svnadmin dump después de leer las respuestas sugeridas por R. Bemrose
mobibob
El comando hotcopy no sobrescribe ni incrementa las copias de seguridad que genera. Entonces, si planea automatizarlo en Windows utilizando el programador de tareas, consulte el siguiente archivo por lotes: cfchimp.com/wordpress/2008/05/…
Ryan Sampson
1
Una palabra de advertencia. ¡No copie en caliente una copia espejo de svnsync'd de un repositorio mientras se está ejecutando svnsync! La copia resultante puede estar dañada. Vea este hilo para más detalles: subversion.open.collab.net/ds/…
zvolkov
24
Hay un script hotbackup.py disponible en el sitio web de Subversion que es bastante útil para automatizar las copias de seguridad.
Uso svnsync , que configura un servidor remoto como espejo / esclavo. Hace dos semanas, un servidor dejó de funcionar y pude cambiar el esclavo a la posición primaria con bastante facilidad (solo tuve que restablecer el UUID en el repositorio de esclavos al original).
Otro beneficio 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 que sincronizan un repositorio entre ellos.
entonces, ¿sincroniza las últimas versiones de repositorio entre los dos obviamente?
PositiveGuy
1
Aunque está en el título, no sé si lo llamaría "sincronización". Realmente es una copia de seguridad, donde tomará revisiones en el maestro y las pondrá en el esclavo. Si hicieras modificaciones en el esclavo, romperían la "sincronización" o provocarían la locura. El uso previsto de la herramienta es crear espejos de solo lectura fuera del sitio, pero hace un trabajo admirable al crear un servidor de respaldo.
Tom Mayfield
1
El beneficio de svnsync es que puede ejecutar esto muy a menudo. Cada diez minutos o incluso en cada confirmación (usando un gancho). El beneficio de esto es que uno puede reducir la pérdida potencial de datos que de otro modo obtendría entre la última copia de seguridad y cuando se pierde el repositorio en vivo.
Este subcomando realiza una copia de seguridad completa "en caliente" de su repositorio, incluidos todos los enlaces, archivos de configuración y, por supuesto, archivos de base de datos.
Entonces, si tiene permiso para detener el servidor, hágalo y simplemente copie el repositorio, ya sea con algún script o una herramienta de respaldo. Cobian Backup encaja muy bien aquí, ya que puede detener e iniciar servicios automáticamente, y puede hacer copias de seguridad incrementales, por lo que solo está haciendo una copia de seguridad de partes del repositorio que han cambiado recientemente (útil si el repositorio es grande y está haciendo una copia de seguridad en una ubicación remota )
Ejemplo:
Instalar Cobian Backup
Agregar una tarea de respaldo:
Establecer la fuente en la carpeta del repositorio (por ejemplo C:\Repositories\),
Agregar evento de pre-respaldo "STOP_SERVICE"VisualSVN,
Agregar 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 antiguas, la programación de copias de seguridad, el destino, la compresión, incl. división de archivos, etc.
Hay 2 métodos principales para hacer una copia de seguridad de un servidor svn, primero es una copia en caliente que creará una copia de sus archivos de repositorio, el principal problema con este enfoque es que guarda datos sobre el sistema de archivos subyacente, por lo que puede tener algunas dificultades para intentar restaurar este tipo de copia de seguridad en otro servidor svn o en 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 en cualquier tipo de servidor SVN basado en la subversión de tigiris.org.
sobre la herramienta de copia de seguridad, puede usar la herramienta svnadmin (puede hacer copias en caliente y volcar) desde el símbolo del sistema, esta consola reside en el mismo directorio donde vive su servidor svn o puede buscar en Google las herramientas de copia de seguridad svn.
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 azules, de esa manera tendrá una copia de seguridad segura sin tener que alojar el servidor svn en algún lugar tu oficina.
Esta sencilla herramienta permite realizar una copia de seguridad de un repositorio de subversión local y remoto. El software funciona de la misma manera que el "svnadmin" pero no es una interfaz gráfica de usuario sobre él. En su lugar, use directamente las bibliotecas de subversión para permitir crear volcado en modo independiente sin ninguna otra herramienta adicional.
Gracias por compartir esto, hace exactamente lo indicado.
Ed DeGagne
3
Me gusta simplemente copiar todo el directorio repositorio a mi ubicación de copia de seguridad. De esa manera, si sucede algo, puede copiar el directorio y estar listo para comenzar de inmediato.
Solo asegúrese de preservar los permisos, si es necesario. Por lo general, esto es solo una preocupación en las máquinas Linux.
esto no es exactamente seguro si alguien realiza una confirmación durante una operación de copia; me ha sucedido esto incluso con solo 4 personas que tienen acceso al repositorio y lo usan con poca frecuencia. Vea la respuesta de Duncan sobre el uso de hotcopy.
nickf
Sin embargo, si está trabajando completamente solo, ¿supongo que esta es una forma segura de hacer una copia de seguridad de un repositorio? Utilizo Subversion para mis proyectos personales, y esto es lo que estoy haciendo actualmente.
Andrew Garrison
3
Para los repositorios alojados puede usar desde svn versión 1.7 svnrdump, que es análogo a svnadmin dumplos repositorios locales. Este artículo proporciona un buen recorrido, que esencialmente se reduce a:
Si está utilizando el formato del repositorio FSFS (predeterminado), puede copiar el repositorio para hacer una copia de seguridad. Con el antiguo sistema BerkleyDB, el repositorio no es independiente de la plataforma y, por lo general, querrá usar el volcado de svnadmin.
@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
Esto lleva tiempo y dice que está recuperando los registros del repositorio. Crea un conjunto de archivos dentroC:\Documents and Settings\nverma\.svk\local .
Para actualizar este repositorio local con el último conjunto de cambios desde el remoto, simplemente ejecute el comando anterior de vez en cuando.
Ahora puedes jugar con tu repositorio local (/home/user/.svk/local en este ejemplo) como si fuera un repositorio SVN normal!
El único problema con este enfoque es que el depósito local se crea con incrementos de revisión por la revisión real en el depósito remoto. Como alguien escribió:
El comando svk miror genera una confirmación en el repositorio 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 repositorio público remoto.
Pero, esto estaba bien para mí, ya que solo quería alguna copia de seguridad del repositorio remoto de vez en cuando, nada más.
Verificación:
Para verificar, use el cliente SVN con el repositorio local como este:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
Este comando luego va a verificar la última revisión del repositorio local. Al final lo dice Checked out revision N. Esta Nfue una más que la revisión real encontrada en el repositorio remoto (debido al problema mencionado anteriormente).
Para verificar que svk también trajo todo el historial, la comprobación de SVN se ejecutó con varias revisiones anteriores utilizando -r2, 10, 50, etc. Luego, los archivos en<local-dir-path-to-checkout-onto> se confirmó que eran de esa revisión.
Al final, comprima el directorio C:/Documents and Settings\nverma/.svk/local/y almacene el 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 sobre simplemente svnadmin hotcopy
Ejecuté una tarea programada en una secuencia de comandos de Python que araña todos mis repositorios en la máquina, y utilizo la copia de seguridad para mantener varios días de copias (paranoicas de corrupción) y una svnadmin svndumpen una máquina remota. La restauración es realmente fácil a partir de eso, hasta ahora.
Respuestas:
Podría usar algo como (Linux):
Como Windows no es compatible con GZip, es solo:
fuente
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Esto creará un archivo llamado 'backup.7z' que contiene un solo archivo, 'backupname.svn', que es el resultado desvnadmin dump
.for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Utilizamos svnadmin hotcopy, por ejemplo:
Según el libro :
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 además de descomprimirla en su posición.
fuente
Hay un script hotbackup.py disponible en el sitio web de Subversion que es bastante útil para automatizar las copias de seguridad.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
fuente
Aquí hay un script de Perl que:
La secuencia de comandos:
Fuente del script y más detalles sobre lo racional para este tipo de copia de seguridad.
fuente
Uso svnsync , que configura un servidor remoto como espejo / esclavo. Hace dos semanas, un servidor dejó de funcionar y pude cambiar el esclavo a la posición primaria con bastante facilidad (solo tuve que restablecer el UUID en el repositorio de esclavos al original).
Otro beneficio 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 que sincronizan un repositorio entre ellos.
fuente
svnadmin hotcopy
fuente
svnbackup en Google Code, una aplicación de consola .NET.
fuente
Puede crear una copia de seguridad del repositorio ( volcado ) con
svnadmin dump
.Luego puede importarlo usando
svnadmin load
.Referencia detallada en el SVNBook: "Migración de datos del repositorio usando svnadmin"
fuente
Básicamente, es seguro copiar la carpeta del repositorio si se detiene el servidor svn. (fuente: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )
Entonces, si tiene permiso para detener el servidor, hágalo y simplemente copie el repositorio, ya sea con algún script o una herramienta de respaldo. Cobian Backup encaja muy bien aquí, ya que puede detener e iniciar servicios automáticamente, y puede hacer copias de seguridad incrementales, por lo que solo está haciendo una copia de seguridad de partes del repositorio que han cambiado recientemente (útil si el repositorio es grande y está haciendo una copia de seguridad en una ubicación remota )
Ejemplo:
Agregar una tarea de respaldo:
Establecer la fuente en la carpeta del repositorio (por ejemplo
C:\Repositories\
),Agregar evento de pre-respaldo
"STOP_SERVICE"
VisualSVN,Agregar 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 antiguas, la programación de copias de seguridad, el destino, la compresión, incl. división de archivos, etc.
¡Lucro!
fuente
Hay 2 métodos principales para hacer una copia de seguridad de un servidor svn, primero es una copia en caliente que creará una copia de sus archivos de repositorio, el principal problema con este enfoque es que guarda datos sobre el sistema de archivos subyacente, por lo que puede tener algunas dificultades para intentar restaurar este tipo de copia de seguridad en otro servidor svn o en 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 en cualquier tipo de servidor SVN basado en la subversión de tigiris.org.
sobre la herramienta de copia de seguridad, puede usar la herramienta svnadmin (puede hacer copias en caliente y volcar) desde el símbolo del sistema, esta consola reside en el mismo directorio donde vive su servidor svn o puede buscar en Google las herramientas de copia de seguridad svn.
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 azules, de esa manera tendrá una copia de seguridad segura sin tener que alojar el servidor svn en algún lugar tu oficina.
fuente
Aquí una herramienta GUI de Windows para hacer un volcado de repositorios de subversión locales y remotos:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
La descripción de la herramienta dice:
Esta sencilla herramienta permite realizar una copia de seguridad de un repositorio de subversión local y remoto. El software funciona de la misma manera que el "svnadmin" pero no es una interfaz gráfica de usuario sobre él. En su lugar, use directamente las bibliotecas de subversión para permitir crear volcado en modo independiente sin ninguna otra herramienta adicional.
Espero que esto ayude...
fuente
Me gusta simplemente copiar todo el directorio repositorio a mi ubicación de copia de seguridad. De esa manera, si sucede algo, puede copiar el directorio y estar listo para comenzar de inmediato.
Solo asegúrese de preservar los permisos, si es necesario. Por lo general, esto es solo una preocupación en las máquinas Linux.
fuente
Para los repositorios alojados puede usar desde svn versión 1.7
svnrdump
, que es análogo asvnadmin dump
los repositorios locales. Este artículo proporciona un buen recorrido, que esencialmente se reduce a:Después de descargar el archivo de volcado, puede importarlo localmente
o cárguelo al host de su elección.
fuente
Si está utilizando el formato del repositorio FSFS (predeterminado), puede copiar el repositorio para hacer una copia de seguridad. Con el antiguo sistema BerkleyDB, el repositorio no es independiente de la plataforma y, por lo general, querrá usar el volcado de svnadmin.
El tema de la documentación de svnbook para la copia de seguridad recomienda el
svnadmin hotcopy
comando, ya que se ocupará de problemas como los archivos en uso y demás.fuente
Este es el archivo por lotes que tengo en ejecución que realiza mis copias de seguridad
fuente
Para la solución de copia de seguridad diaria y completa, solo use los scripts de copia de seguridad SVN aquí .
fuente
He compilado los pasos que seguí con el propósito de hacer una copia de seguridad del repositorio SVN remoto de mi proyecto.
Esto lleva tiempo y dice que está recuperando los registros del repositorio. Crea un conjunto de archivos dentro
C:\Documents and Settings\nverma\.svk\local
.Para actualizar este repositorio local con el último conjunto de cambios desde el remoto, simplemente ejecute el comando anterior de vez en cuando.
Ahora puedes jugar con tu repositorio local (
/home/user/.svk/local
en este ejemplo) como si fuera un repositorio SVN normal!El único problema con este enfoque es que el depósito local se crea con incrementos de revisión por la revisión real en el depósito remoto. Como alguien escribió:
Pero, esto estaba bien para mí, ya que solo quería alguna copia de seguridad del repositorio remoto de vez en cuando, nada más.
Verificación:
Para verificar, use el cliente SVN con el repositorio local como este:
Este comando luego va a verificar la última revisión del repositorio local. Al final lo dice
Checked out revision N
. EstaN
fue una más que la revisión real encontrada en el repositorio remoto (debido al problema mencionado anteriormente).Para verificar que svk también trajo todo el historial, la comprobación de SVN se ejecutó con varias revisiones anteriores utilizando
-r
2, 10, 50, etc. Luego, los archivos en<local-dir-path-to-checkout-onto>
se confirmó que eran de esa revisión.Al final, comprima el directorio
C:/Documents and Settings\nverma/.svk/local/
y almacene el zip en algún lugar. Sigue haciendo esto regularmente.fuente
como otros han dicho, hot-backup.py del equipo de Subversion tiene algunas características agradables sobre simplemente
svnadmin hotcopy
Ejecuté una tarea programada en una secuencia de comandos de Python que araña todos mis repositorios en la máquina, y utilizo la copia de seguridad para mantener varios días de copias (paranoicas de corrupción) y una
svnadmin svndump
en una máquina remota. La restauración es realmente fácil a partir de eso, hasta ahora.fuente
1.1 Crear volcado desde el repositorio SVN (Subversion)
Ejemplo real
1.2 Gzip creó volcado
Ejemplo real
1.3 Descarga SVN y Descarga Gzip con One-liner
Ejemplo real
Cómo hacer una copia de seguridad (volcado) y restaurar (cargar) el repositorio SVN (Subversion) en Linux.
Ref: svn subversion backup andrestore
fuente