Bsync: Sistema Extensible Para La Sincronizaci´Ony Copia De Seguridad De ficheros Para Su Uso En Organizaciones
Total Page:16
File Type:pdf, Size:1020Kb
Escuela Polit´ecnicaSuperior Departamento de Inform´atica Proyecto de Fin de Carrera bsync: Sistema extensible para la sincronizaci´ony copia de seguridad de ficheros para su uso en organizaciones Javier Torres Ni~no Tutores Juan Miguel G´omezBerb´ıs Alejandro Rodr´ıguezGonz´alez 28 de Julio de 2011 2 Resumen En la actualidad existen muchos sistemas de sincronizaci´ony copia de segu- ridad de ficheros, pero la mayor´ıade ellos no comercializan el producto, optando por comercializar los servicios ofrecidos por medio de estos. Esto impide el uso de estas herramientas a entidades que necesiten que sus datos no salgan de su entorno, por lo que el objetivo de este Proyecto de Fin de Carrera es el dise~no y desarrollo de un sistema similar a estos otros productos. Se analizan las caracter´ısticasde los competidores, y se dise~naun programa que incluye en el n´ucleolas caracter´ısticasb´asicasy sea capaz de incluir to- das las caracter´ısticasadicionales mediante el uso de extensiones o plugins. Es precisamente esta extensibilidad la que caracteriza el sistema, permitiendo que un mismo producto pueda adaptarse a las necesidades de multitud de clientes, que pueden precisar, por ejemplo, de distintos sistemas de autenticaci´on(para integrar el sistema en la arquitectura existente) o utilizar la infraestructura para sincronizar m´asque ficheros. Palabras clave: sincronizaci´on,copia de seguridad, extensibilidad, plugins, sistemas distribuidos 3 4 Agradecimientos Es impensable dejar este proyecto sin unas breves l´ıneas en las que agradecer a todas las personas que me han soportado durante estos ´ultimoscinco a~nos,y especialmente los ´ultimosmeses. En primer lugar tengo que mencionar a todos los compa~nerosde clases con los que tanta risas he compartido, especialmente a todos los integrantes de vastralis, que tan unidos hemos estado estos ´ultimosa~nos.Sin vosotros no habr´ıalogrado llegar hasta aqu´ı. Tambi´enquiero recordar a mis amigos de toda la vida, ya sab´eisqui´enes sois. >Que ser´ıade m´ısin esas largas noches sentados todos alrededor de una mesa, jugando y de ch´achara? No puedo olvidar mencionar a todo el equipo docente que ha hecho posible que pueda completar este proyecto, sin vuestras ense~nanzasno tendr´ıani la mitad de conocimientos que he utilizado durante su realizaci´on.Llegu´ea la universidad creyendo que sab´ıabastante de inform´atica,ahora me voy con la certeza de no saber casi nada. Tambi´ense merecen una menci´onespecial mis compa~nerosde laboratorio, cotutores oficiales y extraoficiales de este proyecto. Sin vuestros consejos y lo que me aprend´ıde vosotros sobre el campo investigador, este proyecto habr´ıa sido muy distinto. Y en ´ultimolugar, aunque no por ello menos importante, a mi familia por introducirme en el mundo de la inform´aticaa la tierna edad de los 6 a~nos,a la que me he agarrado desde entonces, primero como hobby y despu´escomo profesi´on. Menci´onespecial para mi hermano por aguantar mi escaqueo generalizado de las tareas del hogar mientras terminaba de escribir esta memoria. A todos, muchas gracias Javier 5 6 ´Indice general I Introducci´on 15 1. Introducci´on 17 1.1. Motivaci´on . 17 1.2. Objetivos . 18 1.3. Metodolog´ıa. 19 1.4. Organizaci´onde este documento . 20 II An´alisisdel problema 23 2. Estado del arte 25 2.1. Copias de seguridad . 25 2.2. Sincronizaci´onde ficheros . 26 2.2.1. Sistemas de ficheros en red . 26 2.2.2. Sincronizaci´onperi´odicao mirroring de directorios . 27 2.2.3. Sincronizaci´oncon copia local . 27 3. An´alisis 29 3.1. Objetivos principales . 29 3.2. Extensibilidad . 30 3.3. Arquitectura de red . 31 3.3.1. Peer to peer total . 31 3.3.2. Peer to peer con localizador . 31 3.3.3. Cliente-Servidor . 32 3.3.4. Evaluaci´on . 32 3.4. Sincronizaci´onentre m´ultiplesusuarios . 33 3.5. Comunicaciones . 34 3.5.1. Requisitos . 34 3.5.2. Transporte . 34 3.5.3. Aplicaci´on. 35 3.6. Consistencia . 36 3.6.1. Pol´ıticapor defecto . 37 3.7. Almacenamiento de los datos . 39 3.8. Plataforma de desarrollo . 40 3.8.1. Alternativas . 40 3.8.2. Comparaci´on . 41 3.8.3. Decisi´on. 42 7 ´INDICE GENERAL III Dise~nodel prototipo 45 4. Dise~nodel protocolo 47 4.1. Multiplexado . 47 4.1.1. Formato del paquete . 47 4.1.2. Gesti´onde canales . 48 4.2. Protocolo de control . 49 4.2.1. Representaci´onde los datos . 50 4.2.2. Comandos . 51 4.3. Implementaci´onde los protocolos . 57 4.3.1. SocketChannel . 58 4.3.2. MultiplexerSocket . 58 4.3.3. MultiplexerSocketServer . 59 5. Dise~nodel cliente 61 5.1. Dise~nomodular . 61 5.2. Representaci´ondel ´arbol local . 63 5.3. Gesti´ondel ´arbol local . 65 5.4. Base de datos de metadatos . 66 5.5. Comunicaci´oncon el servidor . 69 5.5.1. ClientConnection . 69 5.5.2. ClientConnectionShare . 70 5.6. Funciones globales . 71 5.6.1. Configuraci´on. 71 5.6.2. Carga de plugins . 74 5.6.3. Interfaz con el usuario . 74 5.6.4. Gesti´onde conexiones . 74 6. Dise~nodel servidor 75 6.1. Dise~nomodular . 75 6.2. Base de datos . 76 6.2.1. Usuarios, shares y permisos . 76 6.2.2. Objetos: ficheros y directorios . 77 6.2.3. Datos hist´oricos . 78 6.2.4. Capa de acceso a datos . 78 6.3. Comparticiones . 79 6.4. Conexiones . 81 6.4.1. Autenticaci´ony apertura de shares . 81 6.4.2. Transferencias y almacenamiento . 81 6.4.3. Mantenimiento de la conexi´on. 83 6.5. Funciones globales . 83 7. Plugins 85 7.1. Caracter´ısticascomunes . 85 7.2. Monitoreo del sistema de ficheros . 87 7.2.1. Interfaz . 88 7.2.2. Plugin para Linux: inotify . 88 7.2.3. Plugin para Windows: ReadDirectoryChangesW . 90 7.2.4. Plugin para Mac OS X: FSEvents . 91 7.3. Autenticaci´on. 92 8 ´INDICE GENERAL 7.3.1. Interfaz . 92 7.3.2. Implementaci´on:PgCryptoAuthenticator . 93 7.4. Interfaz de usuario . 93 7.4.1. Carga din´amicade librer´ıasgr´aficas . 94 7.4.2. Interfaz . 94 7.4.3. Implementaci´on:MiniGui . 96 7.5. Otros plugins . 97 7.5.1. Modificaci´onde metadatos . 98 7.5.2. Modificaci´onde datos . 98 7.5.3. Transferencia de ficheros . 99 7.5.4. Comunicaci´onarbitraria . 99 8. Interfaz web 101 8.1. Plataforma de desarrollo . 101 8.2. Dise~no . 102 8.2.1. Modelo . 102 8.2.2. Vista . 102 8.2.3. Plantillas . 104 9. Seguridad y rendimiento 107 9.1. Hash de los datos . 107 9.1.1. Algoritmo de hash . 108 9.1.2. Ataques y dominio de colisi´on. 110 9.1.3. Decisi´on. 111 9.2. Almacenamiento de contrase~nas. 112 9.2.1. Cliente . 112 9.2.2. Servidor . 113 9.3. Seguridad de las comunicaciones . 113 9.4. Paralelismo . 114 9.4.1. Cliente . 114 9.4.2. Servidor . 116 IV Conclusiones y Presupuesto 117 10.Conclusiones 119 10.1. Trabajo futuro . 119 10.1.1. Acceso a comparticiones en otros servidores . 119 10.1.2. Seguridad en los plugins . 120 10.1.3. Publicaci´ony comercializaci´on . 121 10.2. Conclusiones personales . 121 11.Presupuesto 123 11.1. Gastos directos . 123 11.1.1. Gastos de personal . 123 11.1.2. Otros gastos directos . 123 11.2. Gastos indirectos, riesgo y beneficio . 124 11.3. Tabla resumen y totales . 125 9 10 ´Indice de figuras 1.1. Esquema del ciclo de desarrollo utilizado . 20 3.1. Arquitecturas de red . 32 3.2. Tr´aficode red en los distintos modelos de resoluci´onde conflictos 37 3.3. Se~nalesy slots . 43 4.1. Pila de protocolos de red . 47 4.2. Protocolo de multiplexado . 48 4.3. Protocolo de control . 50 4.4. Diagrama de clases simplificado para el protocolo de multiplexado 60 5.1. Diagrama de clases simplificado para el cliente . 62 5.2. Ejemplo de configuraci´onen el registro de Windows . 71 6.1. Base de datos del servidor . ..