Copias Incrementales

El comando svnadmin dump admite las opciones --incremental y --revision que permiten producir copias mas pequeñas.

Guardemos primero las versiones de la 1 a la 4:

-bash-3.2$ uname -a
Linux banot.etsii.ull.es 2.6.18-128.1.16.el5 #1 SMP Tue Jun 30 06:10:28 EDT 2009 i686 i686 i386 GNU/Linux

-bash-3.2$ svnadmin dump --incremental --revision 1:4 repository > dumprep.1to4
* Revisión 1 volcada.
* Revisión 2 volcada.
* Revisión 3 volcada.
* Revisión 4 volcada.
y después las de la 5 a la 6:
-bash-3.2$ uname -a
Linux banot.etsii.ull.es 2.6.18-128.1.16.el5 #1 SMP Tue Jun 30 06:10:28 EDT 2009 i686 i686 i386 GNU/Linux

-bash-3.2$ svnadmin dump --incremental --revision 5:6 repository > dumprep.5to6
* Revisión 5 volcada.
* Revisión 6 volcada.

Podemos ahora restaurar el repositorio en otra máquina. Primero creamos el repositorio:

pp2@nereida:~$ svnadmin create mietsiiincrep
A continuación restauramos la primera parte:
pp2@nereida:~$ ssh banot cat dumprep.1to4 | svnadmin load mietsiiincrep
<<< Nueva transacción iniciada, basada en la revisión original 1
     * añadiendo ruta : acme-svn ... hecho.
     * añadiendo ruta : acme-svn/branches ... hecho.
     * añadiendo ruta : acme-svn/trunk ... hecho.
     * añadiendo ruta : acme-svn/trunk/Build.PL ... hecho.
     * añadiendo ruta : acme-svn/trunk/Changes ... hecho.
     * añadiendo ruta : acme-svn/trunk/MANIFEST ... hecho.
     * añadiendo ruta : acme-svn/trunk/Makefile.PL ... hecho.
     * añadiendo ruta : acme-svn/trunk/README ... hecho.
     * añadiendo ruta : acme-svn/trunk/lib ... hecho.
     * añadiendo ruta : acme-svn/trunk/lib/Acme ... hecho.
     * añadiendo ruta : acme-svn/trunk/lib/Acme/SVN.pm ... hecho.
     * añadiendo ruta : acme-svn/trunk/t ... hecho.
     * añadiendo ruta : acme-svn/trunk/t/00.load.t ... hecho.
     * añadiendo ruta : acme-svn/trunk/t/perlcritic.t ... hecho.
     * añadiendo ruta : acme-svn/trunk/t/pod-coverage.t ... hecho.
     * añadiendo ruta : acme-svn/trunk/t/pod.t ... hecho.

------- Commit de la revisión 1 >>>

<<< Nueva transacción iniciada, basada en la revisión original 2
     * añadiendo ruta : acme-svn/branches/myacme-svn ...COPIED... hecho.

------- Commit de la revisión 2 >>>

<<< Nueva transacción iniciada, basada en la revisión original 3
     * editando ruta : acme-svn/trunk/Makefile.PL ... hecho.

------- Commit de la revisión 3 >>>

<<< Nueva transacción iniciada, basada en la revisión original 4
     * editando ruta : acme-svn/trunk/Makefile.PL ... hecho.

------- Commit de la revisión 4 >>>

A continuación restauramos la segunda parte:

pp2@nereida:~$ ssh banot cat dumprep.5to6 | svnadmin load mietsiiincrep
<<< Nueva transacción iniciada, basada en la revisión original 5
     * editando ruta : acme-svn/branches/myacme-svn/Makefile.PL ... hecho.

------- Commit de la revisión 5 >>>

<<< Nueva transacción iniciada, basada en la revisión original 6
     * editando ruta : acme-svn/trunk/Makefile.PL ... hecho.

------- Commit de la revisión 6 >>>

pp2@nereida:~$

Podemos acceder al nuevo repositorio desde una tercera máquina:

casiano@orion:~$ svn ls svn+ssh://pp2/home/pp2/mietsiiincrep            
acme-svn/
casiano@orion:~$ svn log svn+ssh://pp2/home/pp2/mietsiiincrep/acme-svn/trunk/
------------------------------------------------------------------------
r6 | lgforte | 2009-04-23 11:54:54 +0100 (jue, 23 abr 2009) | 1 line

lgforte modification
------------------------------------------------------------------------
r4 | casiano | 2009-03-05 15:56:20 +0000 (jue, 05 mar 2009) | 1 line

sally in trunk: list of final comments
------------------------------------------------------------------------
r3 | casiano | 2009-03-05 15:56:02 +0000 (jue, 05 mar 2009) | 1 line

sally in trunk: list of comments
------------------------------------------------------------------------
r1 | casiano | 2009-03-05 15:53:05 +0000 (jue, 05 mar 2009) | 1 line

branches
------------------------------------------------------------------------

Si múltiples usuarios estan accediendo al repositorio vía svn+ssh será necesario también garantizar que los permisos del repositorio son los adecuados. Por ejemplo:

bash-2.05b# ls -l | grep svn
drwxrwxr-x   7 svn   svnusers      512 Apr 27 15:06 reponame1
drwxrwxr-x   7 svn   svnusers      512 Apr 27 15:06 reponame2
drwxrwxr-x   7 svn   svnusers      512 Apr 27 15:06 reponame3
bash-2.05b# ls -l reponame1/ | egrep -i "db"
drwxrwsr-x  2 svn  svnusers  512 Apr 27 15:07 db
bash-2.05b#

Ejercicio 13.23.1   Escriba un guión que copie su repositorio de forma incremental en un dispositivo portable o en una máquina remota. Compruebe que el repositorio resultante es utilizable.

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19