Capítulo 47. Sincronización de archivos

Tabla de contenidos

47.1. Software de sincronización de datos
47.2. Criterios para la elección de programa
47.3. Introducción a Unison
47.4. Introducción a CVS
47.5. Introducción a Subversion
47.6. Introducción a rsync
47.7. Introducción a mailsync

Resumen

Hoy en día son muchas las personas que utilizan varios ordenadores: un ordenador en casa, otro en la oficina e incluso puede que un portátil o un PDA para los viajes. Algunos archivos se necesitan en todos los ordenadores. Lo ideal sería poder disponer siempre de todos los archivos en todos los ordenadores en su versión actual.

47.1. Software de sincronización de datos

La sincronización de datos no supone ningún problema en ordenadores que estén conectados entre sí permanentemente a través de una red rápida. Basta con elegir un sistema de archivos de red como NFS y guardar los archivos en un servidor. De esta forma, todos los ordenadores accederán a los mismos datos a través de la red.

Este planteamiento no es posible si la conexión en red es mala o parcialmente inexistente. Quien viaje con un ordenador portátil deberá tener copias de todos los archivos que necesite en el disco duro local. No obstante, cuando los archivos son editados no tarda en surgir el problema de la sincronización. Al modificar un archivo en un ordenador debe intentarse actualizar la copia de ese archivo en los demás ordenadores. Esto puede realizarse manualmente con ayuda de scp o rsync en caso de que se trate de pocas copias. Pero con un número elevado de archivos resulta un proceso muy laborioso que requiere mucha atención por parte del usuario para no cometer fallos como, por ejemplo, sobreescribir un nuevo archivo con uno antiguo.

[Warning]Peligro de pérdida de datos

En cualquier caso hay que familiarizarse con el programa utilizado y probar su funcionamiento antes de administrar los propios datos a través de un sistema de sincronización. En caso de archivos importantes resulta indispensable hacer antes una copia de seguridad.

Para evitar el procedimiento largo y propenso a fallos de la sincronización manual de datos, existe software que, basándose en distintos planteamientos, se encarga de automatizar este proceso. El propósito de las breves descripciones que aparecen a continuación es simplemente dar al usuario una ligera idea sobre el funcionamiento de estos programas. En caso de querer aplicar estos programas, le recomendamos leer atentamente la documentación de los mismos.

47.1.1. Unison

En el caso de Unison no se trata de un sistema de archivos, sino que los archivos se guardan y editan normalmente de forma local. El programa Unison puede ejecutarse manualmente para sincronizar archivos. Durante la primera sincronización, se crea en cada una de las dos máquinas participantes una base de datos en la que se recogen la suma de control, marca de tiempo y permisos de los archivos seleccionados.

La próxima vez que se ejecute, Unison reconoce qué archivos han sido modificados y sugiere la transferencia de datos de uno u otro ordenador. En el mejor de los casos es posible aceptar todas las sugerencias.

47.1.2. CVS

CVS se utiliza sobre todo para administrar versiones de textos fuente de programas y ofrece la posibilidad de guardar copias de archivos en distintos ordenadores, por lo que también resulta adecuado para la sincronización. En el caso de CVS existe una base de datos central o repositorio (repository) en el servidor que no sólo guarda los archivos sino también los cambios realizados en ellos. Las modificaciones efectuadas localmente pueden enviarse al repositorio (commit) y ser recogidos por otros ordenadores (update). Ambos procesos deben ser iniciados por el usuario.

CVS tolera muchos fallos en lo que se refiere a cambios en varios ordenadores. Así, los cambios son fusionados y sólo se produce un conflicto si se han realizado cambios en la misma línea. En caso de conflicto, los datos en el repositorio mantienen su coherencia y el conflicto sólo es visible y puede resolverse en el cliente.

47.1.3. Subversion

A diferencia de CVS, que simplemente “evolucionó” a lo largo del tiempo, Subversion es un proyecto diseñado de forma consecuente para reemplazar a CVS y superarlo desde el punto de vista tecnológico.

Subversion sobrepasa en muchos detalles a su antecesor. Por razones históricas, CVS sólo gestiona archivos porque “desconoce” los directorios. En cambio, en Subversion los directorios tienen también un historial de versiones y se pueden copiar o cambiar de nombre del mismo modo que los archivos. Además es posible añadir metadatos a todo archivo o directorio sometido al control de versiones. A diferencia de CVS, Subversion permite un acceso transparente a través de la red mediante algunos protocolos como por ejemplo WebDAV (Web-based Distributed Authoring and Versioning). WebDAV amplía la funcionalidad del protocolo HTTP para permitir el acceso de escritura de colaboración para archivos en servidores Web remotos.

Para el desarrollo de Subversion se utilizaron paquetes de software ya existentes. Por este motivo siempre se requiere el servidor Web Apache con la extensión WebDAV para poder ejecutar Subversion.

47.1.4. mailsync

A diferencia de las herramientas de sincronización mencionadas hasta ahora, Mailsync se ocupa únicamente de sincronizar mensajes entre varios buzones de correo. Puede tratarse de archivos de buzones locales o de buzones ubicados en un servidor IMAP.

Dependiendo del “message ID” incluido en la cabecera de cada mensaje, se decide individualmente si este ha de borrarse o si debe ser sincronizado. Se permite la sincronización tanto entre buzones sueltos como entre jerarquías de buzones.

47.1.5. rsync

Si no se requiere un control de versiones, la herramienta rsync es la opción ideal para sincronizar grandes árboles de archivos a través de conexiones de red lentas. rsync dispone de mecanismos sofisticados para transmitir exclusivamente los cambios en los archivos. No sólo funciona con archivos de texto, sino también con archivos binarios. rsync divide los archivos en bloques y calcula las sumas de control para reconocer las diferencias entre archivos.

El reconocimiento de los cambios en los archivos exige un gran esfuerzo. Por eso, los ordenadores cuyos datos se sincronizan han de ser lo suficientemente potentes. Conviene sobre todo no ahorrar en memoria RAM.