Pregunta

¿Es posible utilizar Subversión Apache (SVN) como herramienta de respaldo de propósito general?(Como una especie de sincronización alternativa.)

¿Fue útil?

Solución

Encontré que este artículo es una descripción bastante interesante del uso de svn para hacer una copia de seguridad de su directorio de inicio y más:

Utilizo Subversion para hacer copias de seguridad de mis cajas de Linux.Con un poco de creatividad, cubre fácilmente:

  • Instantáneas diarias y copias de seguridad externas.
  • Fácil adición y eliminación de archivos y carpetas.
  • Seguimiento detallado de las versiones de los archivos.

También permite algunas características adicionales:

  • Correos electrónicos de registro regulares para realizar un seguimiento de la actividad del sistema de archivos a través de los enlaces de eventos de Subversion.
  • Los usuarios pueden solicitar un retiro de sus carpetas de inicio desde cualquier revisión del repositorio.
  • Se pueden configurar servidores nuevos o de reemplazo con algunos comandos svn checkout.

Fuente: http://www.mythago.net/svn_for_backup.html

También se encontraron Este artículo que muestra un ejemplo de control de versiones de su directorio de inicio.Esto le permite llevar su entorno consigo al verificar su directorio de inicio en una nueva máquina.Solía ​​hacer algo similar y lo encontré muy útil.

Otros consejos

Una cosa a tener en cuenta al utilizar SVN como copia de seguridad para archivos binarios es que SVN duplicará el tamaño de sus archivos, porque mantiene una copia local de cada archivo (en el archivo .svn/text-base).

Aparte de eso, también uso SVN como copia de seguridad.Simplemente agregue todos los archivos y luego confirme mediante un script.

Como copia de seguridad de "propósito general", diría que probablemente no sea la mejor idea, principalmente por las razones dadas por otros (muchas carpetas sobrantes y espacio desperdiciado en el disco).Si solo desea conservar copias de seguridad, nuevamente diría que probablemente haya mejores opciones, según sus necesidades, por ejemplo:¿Necesita conservar cada versión de cada archivo o serían suficientes ciertas instantáneas de sus datos?

Sin embargo, en mi oficina tenemos un pequeño equipo de 6 personas que trabajan con archivos compartidos (por ejemplo:manuales de políticas y procedimientos, formularios de registro, etc.).Gran parte del tiempo, los miembros del equipo trabajarán de forma remota (desde casa o mientras viajan) y, a menudo, sin conexión.En lugar de utilizar una configuración central de carpeta compartida, utilizamos SVN para darle a cada persona una copia de trabajo completa de la carpeta en la que puede trabajar, consultar y sincronizar siempre que sea posible.Esto mata dos pájaros de un tiro:todos pueden acceder y editar los archivos incluso sin conexión, además nos brinda una redundancia realmente excelente en nuestras copias de seguridad.si mi computadora portatil se prende fuego, no es ninguna molestia porque puedo retirar otra copia (obviamente en otra computadora).Si el servidor se incendia, tendremos las copias de seguridad del repositorio para restaurar.Si el servidor Y todas las copias de seguridad del repositorio se incendian, entonces todo lo que habrá perdido serán versiones antiguas de archivos.La única forma de perder los datos actuales es si el servidor, las copias de seguridad de su repositorio y cada computadora que tiene un checkout se incendian misteriosamente.

Sin embargo, como algunas personas han dicho, SVN nunca eliminará información del repositorio, lo que significa que si solo desea mantener copias de seguridad durante 60 días, entonces, bueno, no puede.Esto no es exactamente cierto.Mediante el uso de exportar, vertedero y importar podrías eliminar efectivamente las versiones anteriores de los archivos.No es bonito, pero es posible.

Una cosa que me molestaría mucho son las carpetas '.svn', que svn coloca en cada carpeta que rastrea.

Parecen molestos, cuando copias una carpeta, debes recordar no copiarlas (o tu zona de pruebas podría irritarse) y es mucho más difícil buscar en un montón de carpetas, ya que a menudo hay muchos resultados en el archivo . carpetas de recursos svn.

Me gusta la idea de utilizar un control de fuente para controlar su entorno.Pero yo personalmente no elegiría svn para este trabajo.Yo elegiría algo como git.Pero probablemente sea solo yo...

Utilizo SVN para realizar copias de seguridad de mi computadora y también para sincronizar mi computadora portátil y mi computadora de escritorio.Pero tiene los problemas mencionados en respuestas anteriores, principalmente la duplicación del uso del disco.También siento que el exceso de archivos y el proceso SVN que revisa constantemente mi disco duro en busca de cambios hace que mi máquina sea más lenta.

Me gustaría resaltar, sin embargo, que SVN es excelente para sincronizar diferentes máquinas, y también obtienes la ventaja de poder consultar un archivo en cualquier lugar si lo necesitas; incluso lo hago en mi navegador a través de la interfaz web. a veces.

En resumen, tengo sentimientos encontrados sobre el uso de SVN para copias de seguridad de propósito general.Pero si lo haces, te lo recomiendo. no almacenar bibliotecas como películas, fotografías y música, porque tienden a ser grandes (lo que sufre enormemente por el doble uso de espacio) e inmutables; no necesita un sistema de control de versiones para eso, porque en las raras ocasiones en que cambia una archivo, generalmente no necesita las versiones anteriores (y SVN no es bueno para crear/almacenar diferencias de archivos binarios, guarda la nueva versión completa del archivo).Entonces, a menos que SVN pueda adaptarse (una de mis intenciones de proyecto desde hace mucho tiempo) para estos casos, sugiero usar un método alternativo para realizar copias de seguridad de este tipo de archivos.

También podrías considerar bup - Sistema de copia de seguridad de archivos altamente eficiente basado en el formato git packfile. Se basa en git en la forma en que almacena datos, lo cual es muy eficiente para almacenar archivos y sus diferencias.

He usado CVS como sustituto de fantasma, así que no veo por qué no.

Es bueno que puedas etiquetar una línea de base:Puedes cambiar la gestión de máquinas.

Obviamente, esto funciona mejor en Unix que en Windows.

Lo que me desanimaría de esa idea es que, para uso general, cualquier dato binario se copiaría cada vez que cambiara, mientras que el contenido de texto en el que se basan los sistemas SCM se puede actualizar fácilmente en forma de diferencias.

Entonces podrías hacerlo, solo ten en cuenta que es posible que no quieras usarlo para administrar cosas como repositorios de fotografías si editas mucho.

Lo bueno de las soluciones de respaldo de propósito más general (por ejemplo, Time Machine) es que pueden acumular múltiples cambios binarios después de un tiempo para ahorrar espacio.No estoy seguro de qué tan fácil sería hacerlo en SVN, git o mercurial.

Usar SVN para copias de seguridad puede funcionar.Sin embargo, con el tiempo puede resultar difícil eliminar revisiones antiguas que no son necesarias.Supongamos que solo desea conservar 30 o 60 días de copias de seguridad.SVN no proporciona una manera fácil de eliminar ningún historial de más de X días.Si no tiene una forma de borrar el historial antiguo, eventualmente ejecutará su unidad de respaldo sin espacio.

Aquí hay una cita del Libro SVN en svndumpfilter dominio:

Dado que la subversión almacena todo en un sistema de base de datos opaco, intentar ajustes manuales es imprudente, si no del todo difícil.Y una vez que los datos se han almacenado en su repositorio, la subversión generalmente no proporciona una manera fácil de eliminar esos datos.[13]

[13] Eso, por cierto, es una característica, no un error.

encontré unísono para ser una mejor opción que svn como alternativa a rsync.

Esta afirmación de JoaoPSF es incorrecta:

(y SVN no es bueno para crear/almacenar diferencias de archivos binarios, guarda la nueva versión completa del archivo)

Vea esta cita de ¿Cómo maneja Subversion los archivos binarios?:

Tenga en cuenta que el hecho de que un archivo sea binario o no no afecta la cantidad de espacio del repositorio utilizado para almacenar los cambios en ese archivo, ni afecta la cantidad de tráfico entre el cliente y el servidor.Para fines de almacenamiento y transmisión, Subversion utiliza un método de diferenciación que funciona igualmente bien en archivos binarios y de texto;esto no tiene ninguna relación con el método de diferenciación utilizado por el comando svn diff.

Hacer una copia de seguridad de /etc con control de código fuente puede ser de gran ayuda cuando desea revertir un cambio que afectó su sistema, experimentar con cambios o transferir cambios de un servidor a otro.

Pero la multitud de directorios .svn de Subversion puede obstaculizar eso, no solo durante la búsqueda, sino que en algunos casos, como las carpetas *.d, los sistemas mal diseñados pueden interpretar que las carpetas .svn mismas contienen datos de configuración.

Ahora prefiero usar Mercurial para realizar copias de seguridad de /etc, ya que coloca una única carpeta .hg en /etc.Para una copia de seguridad real y no solo para el control de versiones, debe copiar esa carpeta .hg en otro lugar.

Para usar SVN como respaldo en Linux, haga lo siguiente:

  1. Crea un repositorio vacío.
  2. Consulte el repositorio vacío en el árbol de carpetas del que desea hacer una copia de seguridad.
  3. Utilice el siguiente fragmento de código (svnauto).Debe reemplazar "miusuario" y "micontraseña" con credenciales válidas para su repositorio:
    #!/bin/sh
    svn status --depth=infinity --username=myuser --password=mypassword > /tmp/svnauto_tmp.list
    cat /tmp/svnauto_tmp.list | grep '^?' | sed -e 's/^?       /svn add --depth=infinity --force --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    cat /tmp/svnauto_tmp.list | grep '^!' | sed -e 's/^!       /svn delete --username=myuser --password=mypassword "/g' -e 's/$/@"/g' | sh
    rm -f /tmp/svnauto_tmp.list
    svn update . --username=myuser --password=mypassword
    svn commit --username=myuser --password=mypassword --message "Automatic backup"

El script anterior agregará/eliminará y actualizará cualquier archivo y subdirectorio dentro del directorio actual.Para usarlo simplemente cd a la carpeta de la que desea hacer una copia de seguridad (que debe ser una copia de trabajo, por supuesto) y ejecute svnauto.Tenga en cuenta que necesita tener grep y sed instalados en su sistema, y ​​esto crea un archivo temporal en /tmp.Se puede utilizar desde un trabajo cron para la confirmación nocturna, utilizando el siguiente script cron:

#!/bin/sh
export LANG=en_US.UTF-8 && cd /my/directory && echo Starting backup $(date) > /root/backup_log.txt && /root/svnauto >> /root/backup_log.txt 2>&1 && echo Finished backup. >> /root/backup_log.txt && cat /root/backup_log.txt

Este script cron supone que /my/directory es la carpeta de la que desea hacer una copia de seguridad (reemplácela según sea necesario).También se supone que pones el svnauto guión en /root.Crea un registro y lo muestra al final.Un detalle más:la primera export es necesario para que svn encuentre el idioma adecuado.Es posible que tengas que ajustar esta línea a tu idioma local para que funcione.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top