27.2. Factores determinantes para seleccionar un programa

Hay algunos factores importantes que se deben tener en cuenta al decidir el programa que desea utilizar.

27.2.1. Comparación entre la estructura de cliente y servidor y la de par a par

Normalmente se utilizan dos modelos diferentes para la distribución de datos. En el primer modelo, todos los clientes sincronizan sus archivos con un servidor central. Todos los clientes deben tener acceso al servidor, al menos ocasionalmente. Este es el modelo que utilizan Subversion, CVS y WebDAV.

La otra posibilidad es permitir que todos los hosts en red sincronicen sus datos entre ellos como pares. Este es el concepto que rige el funcionamiento de Unison. rsync funciona como un cliente, pero cualquier cliente puede actuar también como servidor.

27.2.2. Portabilidad

Subversion, CVS y Unison también están disponibles para muchos otros sistemas operativos, incluidas varias versiones de Unix y Windows.

27.2.3. Interacción y automatización

En Subversion, CVS, WebDAV y Unison, el usuario debe iniciar manualmente la sincronización de datos. Esto permite un control preciso sobre los datos que se deben sincronizar y una gestión sencilla de los conflictos. No obstante, si los intervalos de sincronización son demasiado largos, es más probable que se produzcan conflictos.

27.2.4. Conflictos: incidencias y soluciones

En Subversion y CVS no suelen producirse conflictos, incluso cuando varias personas trabajan en un proyecto grande. Este hecho se debe a que los documentos se fusionan basándose en líneas individuales. Cuando se produce un conflicto, sólo resulta afectado un cliente. Normalmente resulta muy sencillo resolver los conflictos en Subversion y CVS.

Unison informa de los conflictos y permite excluir los archivos afectados de la sincronización. No obstante, los cambios no pueden fusionarse de forma tan sencilla como en Subversion o CVS.

A diferencia de Subversion y CVS, que permiten aceptar cambios parciales en caso de conflicto, WebDAV sólo lleva a cabo una comprobación cuando la modificación completa se considera correcta.

rsync no ofrece funciones de gestión de conflictos. El usuario es el responsable de no sobrescribir archivos por error y de resolver manualmente todos los posibles conflictos. Para aumentar la seguridad, puede emplearse como complemento un sistema de versiones (por ejemplo, RCS).

27.2.5. Selección y adición de archivos

En su configuración estándar, Unison sincroniza un árbol de directorios completo. Los archivos nuevos que aparecen en el árbol se incluyen automáticamente en la sincronización.

En Subversion y en CVS, los nuevos directorios y archivos se deben añadir de forma explícita mediante los comandos svn add o cvs add, respectivamente. Gracias a esto, aumenta el control del usuario sobre los archivos que desea sincronizar. Por otra parte, a menudo el usuario omite por error los archivos nuevos, especialmente cuando no se da cuenta de los signos de interrogación al consultar los resultados de svn update y svn status o cvs update, debido al gran número de archivos.

27.2.6. Histórico

Una función adicional de Subversion y CVS es que permiten reconstruir versiones antiguas de los archivos. Existe la posibilidad de introducir una nota de edición breve para cada cambio, lo que facilita la tarea de seguimiento del desarrollo de los archivos, a partir del contenido y de las notas. Esta función es de gran ayuda para las tesis y los códigos de programación.

27.2.7. Volumen de los datos y requisitos de disco duro

Es necesario disponer de la cantidad de espacio libre suficiente para todos los datos distribuidos en los discos duros de todos los hosts implicados. Subversion y CVS requieren espacio adicional en el servidor para la base de datos de repositorio. El historial de archivos también se almacena en el servidor, lo que requiere más espacio. Cuando se modifican los archivos en formato de texto, sólo es necesario guardar las líneas modificadas. Los archivos binarios requieren un espacio adicional equivalente al tamaño total del archivo cada vez que sufren una modificación.

27.2.8. GUI

Unison ofrece una interfaz gráfica de usuario que muestra los procedimientos de sincronización que Unison sugiere realizar. Acepte las propuestas o excluya los archivos individuales de la sincronización. En el modo de texto, confirme de forma interactiva los procedimientos individuales.

Los usuarios experimentados suelen ejecutar Subversion y CVS desde la línea de comandos. No obstante, existen interfaces gráficas disponibles para Linux, como cervisia, y para otros sistemas operativos, como wincvs. Muchas herramientas de desarrollo, como kdevelop y editores de texto, como emacs, proporcionan soporte para CVS y Subversion. Normalmente, la resolución de conflictos resulta mucho más sencilla de llevar a cabo con estas interfaces.

27.2.9. Facilidad de uso

Unison y rsync son herramientas bastante sencillas de utilizar y muy adecuadas para usuarios sin experiencia. CVS y Subversion son un tanto más difíciles de utilizar. Los usuarios deben entender la interacción entre el repositorio y los datos locales. Los cambios en los datos deben fusionarse primero localmente con el repositorio. Esta acción se lleva a cabo mediante el comando cvs update o svn update. A continuación, deben enviarse los datos de vuelta al repositorio con el comando cvs commit o svn commit. Una vez entendido este procedimiento, los usuarios recién llegados también podrán utilizar CVS y Subversion fácilmente.

27.2.10. Seguridad contra los ataques

Durante las transmisiones, lo idóneo sería que los datos estuvieran protegidos contra posibles intercepciones y manipulaciones. Unison, CVS, rsync y Subversion pueden utilizarse de forma sencilla mediante ssh (shell segura), lo que proporciona seguridad contra ataques de esta clase. Debe evitarse la ejecución de CVS y Unison mediante rsh (shell remota). Tampoco es aconsejable acceder a CVS con el mecanismo pserver en redes no seguras. Subversion proporciona las medidas de seguridad necesarias al ejecutarse con Apache.

27.2.11. Protección contra las pérdidas de datos

Los desarrolladores llevan mucho tiempo utilizando CVS para gestionar proyectos de programación, por lo que es una herramienta muy estable. Dado que el historial de desarrollo se almacena, CVS proporciona protección incluso contra algunos errores de los usuarios, como la supresión accidental de un archivo. Aunque Subversion no es tan común como CVS, ya se emplea en entornos de producción (por ejemplo, en el propio proyecto de Subversion).

Unison es aún relativamente reciente, pero incorpora un gran nivel de estabilidad. No obstante, es más vulnerable a los errores de los usuarios. Una vez que se ha confirmado la sincronización de la supresión de un archivo, no existe ninguna posibilidad de restaurar el archivo.

Tabla 27.1. Funciones de las herramientas de sincronización de archivos: -- = muy pobre, - = pobre o no disponible, o = media, + = buena, ++ = excelente, x = disponible

Unison

CVS/SVN

rsync

mailsync

Cliente/servidor

igual

C-S/C-S

C-S

igual

Portabilidad

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x,Win

Lin,Un*x

Interactividad

x

x/x

x

-

Velocidad

-

o/+

+

+

Conflictos

o

++/++

o

+

Sel. arch.

Dir.

Sel. arch., dir.

Dir.

Buzón

Histórico

-

x/x

-

-

Espacio en el disco duro

o

--

o

+

GUI

+

o/o

-

-

Dificultad

+

o/o

+

o

Ataques

+(ssh)

+/+(ssh)

+(ssh)

+(SSL)

Pérdidas de datos

+

++/++

+

+