Unison: Sincronización de carpetas en local o remoto

Os pondre un ejemplo para sincronizar dos carpetas remotas, Unison en remoto usa ssh. Asi que necesitamos instalar ssh y unison. Asi que lo primero :

sudo apt-get install ssh unison unison-gtk

Con esto nos instala un cliente de SSH, pone un servidor de SSH en el puerto por defecto. Y además porsupuesto el unison y su interfaz gráfico.

Me voy a basar en un ejemplo para sincronizar los mapas del Warcraft III. Para serviriía evidentemente para sincronizar 2 carpetas cualesquiera.

Son 2 portatiles en LAN con IPs 192.168.1.4 y 192.168.1.5. Ambos PCs juegan bastante mapas muy variados y al poco tiempo un ordenador tiene más mapas que otro, o tiene más mapas de tipo td, vampiro y menos de otro tipo.

En definitiva queremos que todos los mapas que tenga el 4 y no el 5 se copien el 5. Y todos los mapas que tenga el 5 y no tengo el 4 se copien al 4. De manera que ambas carpetas queden exactemente iguales.

Por ultimo se quiere comprobar si hay mapas nuevos cada 5 min, no es problema, unison es muy eficiente, y robusto. Tienes modos para trabajar en batch (proceso de fondo, con poca prioridad y no interactivo, el usuario no interviene). Bueno eso de que unison no pregunte puede asustar, eso no es un problema, porque unison solo sincroniza lo que sabe perfectamente que puede modificar sin peligro de que el usuario se emcabrone por perder información. Cada cierto tiempo el usuario puede entrar por el interfaz gráfico del unison y resolver los posibles conflictos de sincronización.

Seguir leyendo

SSH sin contraseña (usando certificados DSA)

ssh tunelPara autentificarnos por ssh hay 2 opciones:

  1. Por la contraseña clásica. Es el método síncrono tiene como inconveniente que hay que introducir la contraseña cada vez que intentamos autentificarlos.
  2. Mediante certificado RSA o DSA. Es el método asíncrono. Resumidamente consiste en generar una clave privada y otra pública, y distribuir la clave pública a los servidores que queremos conectar. Por supuesto la ventaja es que al no pedir contraseña podemos automatizar scripts junto con cron. Por ejemplo realizar una sincronización con unison entre 2 carpetas remotas remotas cada 5 minutos.

Puesto que la primera opción no tiene mucho misterio, voy a explicar como generar la clave y distribuirla, para realizar estos 2 tareas vamos hacer 2 alias, por que es normal que usemos frecuentemente estos comandos algo enrevesados nos ayudamos de los alias:

  • Abrimos el .bashrc : sudo gedit .bashrc y al final del fichero añadimos estos 2 líneas y guarda :
    alias generarClaveSSH='ssh-keygen -t dsa'
    
    alias distribuirClaveSSH='ssh-copy-id -i .ssh/id_dsa.pub'
  • Ahora vamos a generar las claves mediante DSA que corresponde al SSH2, teniendo muchos problemas menos de seguridad que RSA. Para ellos vamos a usar los alias, pero antes abre otra consola para que carge los alias : Escribimos generarClaveSSH . Le damos al enter a todas las preguntas, no escribimos nada, de esta manera no protegemos el certificado SIN un passphrase. Si hubieramos puesto un passphrase cada vez que conectasemos tendríamos que indicar un passphrase nuestro, asi que en principio estaríamos con el mismo problema que antes. Esto se usa para centralizar todas las claves en 1. Si le interesa a alguien lo puedo explicar un poco más, pero veo poco útil especificar un passphrase para el uso que le estoy dando.
  • Ahora simplemente falta distribuir la clave al ordenador remoto para ello necesitamos la IP y el USUARIO, escribimos: distribuirClaveSSH USUARIO@IP. En este momento os preguntara la contraseña de la cuenta USUARIO, la introducimos y a partir de ahora el servidor SSH montado en IP te aceptara directamente por que tiene tu clave pública.
  • Para probarlo como sabreis ssh USUARIO@IP

Nada más, espero que le sirve a alguien, dentro de unos días ampliare este post explicando el unison.

Editado: Aqui esta el post de unison : https://blogricardo.wordpress.com/2008/08/01/unison-sincronizacion-de-carpetas-en-local-o-remoto/