Copias en conflicto ¿Por qué se producen los conflictos de archivo? ¿Por qué hay plataformas que lo generan y otras que lo evitan?
Veamos algunos de los sistemas de almacenamiento en la Nube que producen conflictos de archivo que también se pueden llamar copias en conflicto o de sincronización:
Dataprius es sistema que no produce conflictos, avisando del uso del archivo por parte de otro usuario. Tampoco permite sobre-escribir un archivo con una copia más antigua.
La primera lista menciona los «discos virtuales» más populares. Se trata de sincronizadores, esto quiere decir que suben a la Nube los archivos que residen en carpetas del ordenador.
Por otro lado, tenemos Dataprius, que es un sistema puro en la Nube. Los ficheros residen en la Nube y se pueden modificar directamente desde la aplicación. No se basa en la sincronización, está diseñado para múltiples usuarios y por eso no produce conflictos.
El origen del problema
Los sistemas de almacenamiento de ficheros sólo pueden mantener una versión de un mismo archivo. Dentro de una carpeta solo puede existir un archivo con un mismo nombre.
Cualquier sistema operativo ya sea Windows, Linux o Android, por mencionar algunos, avisará antes de que intentemos crear o sobre-escribir un archivo que ya existe en una determinada carpeta.
Ventana de Windows 10 alertando antes de sobre-escribir archivoA nivel individual, si solo un usuario trabaja sobre ese sistema de ficheros, será muy sencillo saber si estamos sobre-escribiendo un archivo al guardar sobre el que tiene el mismo nombre.
La cosa se complica cuando hay varios usuarios
Si de alguna forma, la carpeta dónde residen los archivos es compartida por varios usuarios, los problemas de sobre-escritura se multiplican.
Durante años, en las redes o dispositivos que permiten el uso de carpetas compartidas como discos NAS o servidores, esto ha sido un problema habitual.
Aunque antes, no se decía archivo en conflicto, esto es una denominación más reciente que surge tras la aparición de los discos virtuales.
Antes, simplemente se decía que alguien había machacado un archivo o lo había sobre-escrito. Normalmente, para subsanar el problema, había que recurrir a la copia de seguridad, asumiendo que alguien perdía el trabajo realizado con el archivo.
En definitiva, en entornos dónde se trabaja sobre archivos compartidos y que no tienen medidas para evitar el problema se suelen producir pérdidas del trabajo sobre los ficheros.
La causa es siempre la misma. Otro usuario sobre-escribe un archivo en el que alguien había estado trabajando.
Llegan los discos virtuales o sincronizadores. El problema se agrava.
Los discos virtuales son sistemas de almacenamiento en la Nube muy populares.
Si una sola persona usa un disco virtual para sincronizar sus ficheros prácticamente no tendrá problemas. Esa única persona es la que modifica los ficheros. De esta forma, los ficheros que residen en el almacenamiento normalmente serán copias más antiguas que hay que sobre-escribir con los más actuales.
A partir de dos usuarios aparece el problema. En cierto momento ocurre lo siguiente:
- Dos usuarios han modificado el archivo al mismo tiempo.
- Alguien ha modificado el archivo sin conexión y luego se sincroniza con la copia que hay en la Nube.
- Se copia sobre la carpeta sincronizada el mismo archivo que otro usuario está editando.
Lo que pasa realmente es que un sistema basado en la sincronización no puede saber cuál de las copias del archivo es la correcta, ese es el conflicto.
Alguien puede pasar toda la mañana trabajando en un fichero. Luego otro usuario abre la copia antigua que tenía en su ordenador, hace una modificación mínima y la sube al Nube, aquí tenemos el problema, se ha perdido el trabajo de la otra persona.
Como los sincronizadores trabajan con copias locales de los ficheros, puede haber gran número de copias de un mismo archivo repartidas en los discos duros de cada usuario del sistema.
Una ley universal. Una cosa no puede estar en dos sitios al mismo tiempo.
Esto es de una evidencia tan aplastante que no necesita muchas explicaciones.
Resulta que si solo hay un lugar dónde reside el fichero final, tener muchos clones de este fichero en los ordenadores sincronizados de multitud de usuarios es tentar a la surte. El fichero en la nube es único, cada vez que haya dos copias que difieran de este, tendremos un conflicto, porque habrá que decidir cuál de esas copias sobre-escribe la de la Nube.
Al final el fichero solo ocupa un lugar en un momento determinado, ese lugar es el dispositivo de almacenamiento, a efectos prácticos la Nube no difiere mucho de un disco duro.
¿Como evitan otros sistemas los conflictos de archivos?
La técnica fundamentalmente consiste en lo que se llama bloqueo.
Cuando un usuario está editando un archivo, el sistema establece para este el estado de bloqueado. De esta forma si otro usuario intenta editarlo o sobre-escribirlo el sistema no lo permite.
Esto no es nuevo, forma parte de esencial de los sistemas diseñados para múltiples usuarios.
Las transacciones en Bolsa o las cuentas en los bancos usan esta técnica desde los inicios de la informática.
El ejemplo de los bancos es muy bueno. Sin funcionasen sincronizando las cuentas de los clientes en los ordenadores individuales, sería normal no saber cuanto dinero hay en la cuenta de un cliente. Podría haber 2000$ en la Nube y luego 1000$ en un fichero de un ordenador y 500$ en otro ordenador, al sincronizar habrá un conflicto. Está claro que al banco le interesará que sea al fichero de 500$ el que sobre-escriba en la Nube.
Eso nunca ha funcionado así porque para funcionar en red y con muchos usuarios los sistemas nunca han necesitado sincronizar. Usan técnicas transaccionales.
Controlando lo que ocurre con los archivos y los usuarios conectados.
Los sistemas multi-usuario controlan los usuarios conectados y la actividad sobre los datos, en este caso sobre los ficheros. Por eso son también sistemas mucho más seguros.
El sistema de un banco sabe perfectamente cuando nos hemos conectado para hacer un pago o cuando estamos haciendo una transferencia.
Para evitar los conflictos, el sistema bloquea un archivo si está siendo modificado o está abierto por otro usuario.
Si al otro lado, un usuario intenta abrir o modificar el archivo, el sistema detecta rápidamente si alguno de los usuarios con acceso ha provocado el bloqueo de ese fichero.
Un fichero en estado de bloqueo solo permite que el usuario que lo «tiene en posesión» lo modifique. Así nunca se producen conflictos.
La entrada Almacenamiento en la Nube y los conflictos de archivo se publicó primero en Blog de Dataprius..