InicioLinuxSincronizar computadoras con Unison

Sincronizar computadoras con Unison

Linux10/25/2010
Hola, esta vez les traigo un ejemplo de programa que anda de 10. Su nombre es Unison y lo conocí por la wiki de Archlinux. Historia personal: Siempre me pareció un poco superficial el tema de tener un programa para sincronizar dos equipos: "si podes copiar vos los archivos a mano", decia yo. Hasta que tube más de una computadora, claro, ahora entiendo para que sirven Resulta que cuando uno tiene mas de una pc, especialmente si una o más son portátiles, necesita tener los mismos datos en varias o todas ellas. Entonces se vienen los problemas: cual de todas tiene la última versión de un documento, en donde pongo lo del trabajo en la compu de casa y donde en la netbook, y esas cosas. Para envidia de muchos de nosotros, windows, macos y muchos otros sistemas como palmos y windowsCE tienen eso solucionado. Programas como active sync y similares son bastante buenos y andan de una para lo que dicen. En linux no tenemos esa suerte. Restricciones del problema: Siempre teniendo en cuenta que estamos hablando de conectar dos computadoras, como sea que las conectemos, pero sin intermediarios ajenos a las mismas. O sea, no dropbox ni ubuntuOne ni googleDocs. Si a uds les sirve cualquiera de esas soluciones, aprovechen, estan buenisimas para muchas cosas. A mi me parece que cosas como documentos del trabajo, no pueden caer en dropbox ni en googledocs porque no se me ocurre otra cosa. Además ambas souciones dependen de tener conexion a internet, y es un impedimento en general. Sobre el programa: En la wiki de arch encontre este programa, y como veia que pintaba para algo bueno le di una oportunidad y lo exprimi al palo. Resulta que pueden actualizar sus archivos entre dos computadoras por ssh, comparando las fechas de los archivos y sus cambios para elegir cuales son los mas nuevos. Entonces el programa simplemente transfiere los archivos diferentes entre los dos directorios indicados (uno en cada computadora), copiando el mas nuevo en el otro equipo. Obviamente nos copia los que creamos nuevos en una pc a la otra. Modo de empleo: Obviamente necesitamos tener un server ssh corriendo en la computadora a la cual nos vamos a conectar. Entonces creamos un nuevo perfil: interface gtk2 para elegir el perfil Nos pregunta cual es el directorio a sincronizar en la computadora local. Luego nos pide la direccion del directorio remoto y del equipo remoto con el usuario si correspondiera. Así como tambien el metodo de conexion, puede ser ssh o rsync (ssh es mejor). Una vez creado el perfil aceptamos que no hay comparativa previa y nos aparece la ventana para ver que cambios hay: interface gtk2 para copiar los archivos Casi me olvido de mencionar que viene con interfaces gtk, gtk2 y de consola. Entonces es cuestion de apretar el boton GO y listo, nos sentamos a esperar que se termine la transferencia. Volvemos a lo personal y a como lo hago hoy en día: Me encontré con la incomodidad de tener varios perfiles y tener que elegirlos desde el nada complicado menu. Pero lo solucioné de inmediato, simplemente puse todo en una carpeta llamada Sync y solo sincronizaba esa entre los dos equipos. Creaba vinculos simbolicos de esos archivos en los lugares donde me interesaba ubicarlos, como Documentos/Proyectos/EsteProyecto.txt; con lo cual, el archivo real esta en la carpeta Sync. Eso me permite también tener una carpeta con todo lo que necesito respaldar, por ejemplo, en un pendrive, o en un archivo comprimido en mi casilla de email. Todo porque el programa no sigue los vinculos simbólicos, o sea que vincular el archivo a la carpeta Sync no me servia de nada. Realmente era una molestia trabajar así, ya que por cada archivo nuevo habia que crearlo en la carpeta y vincularlo a la posición "facilmente encontrable" y encima tener todo mezclado no siempre es sano. Hoy en día me decidí a crear un par de scripts que me hacen prescindir de la interface gtk y me facilitan la vida enormemente. Cada perfil que se crea corresponde con una carpeta local y una carpeta remota. Es simplemente un archivito de texto en el directorio ~/.unison de extension prf, contiene al menos dos lineas con las dos carpetas en algo como lo que aca les muestro: root = /home/user/Personalizacion/Scripts root = ssh://[email protected]//home/user/Personalizacion/Scripts log = false Donde pueden ver que para mayor comodidad uso los mismos paths en ambas computadoras. Pero bien podrian ser distintos. La última línea es para que no cree el log, gusto personal. Creo un perfil para cada directorio que me interesa sincronizar. Pero no lo creo a manopla, ni mucho menos con la interface del programa. Lo hago con las acciones personalizadas de Thunar, el administrador de archivos de Xfce4. Previa creación del siguiente script: #!/bin/bash echo "root = $1" > "$HOME/.unison/$2.prf" echo "root = ssh://laptop.local/$1" >> "$HOME/.unison/$2.prf" echo "log = false" >> "$HOME/.unison/$2.prf" notify-send --expire-time=3000 --icon=/usr/share/icons/Tango/128x128/actions/add.png "Agregado $2" "para sincronizar con la laptop" Obvio que usamos bash, y seguimos, crea un archivo prf en el directorio .unison con la ubicación de la carpeta local, luego le agrega la direccion de la carpeta remota (que por regla mia es la misma pero en el otro equipo) y le suma la tercera linea util, la del log. Luego dispara una notificacion con el icono que me gustó donde me dice que se agregó tal directorio a la lista. Nada del otro mundo. y a eso lo copio a /usr/bin, le doy permiso de ejecucion y pongo como accion personalizada en thunar con la siguiente linea: Thunar dijo:add-unison.sh %f %n En la pestaña de "condiciones de apariencia" solo tildo "Directorios". Entonces crea el prefil con el nombre del directorio. Si no saben como usar las acciones personalizadas de thunar vean el link de abajo. Ahora viene lo bueno: un script para que sincronice todos los perfiles, uno atras del otro, sin preguntar nada, y sin interface. Lo llamé unisync.sh, lo copie, tambien, en /usr/bin y obviamente tambien le di los permisos de ejecución. #!/bin/bash cd $HOME/.unison for i in *.prf do unison $i -batch done echo echo '==========> Terminado <==========' echo notify-send --expire-time=3000 --icon=/usr/share/icons/Tango/128x128/emblems/emblem-important.png "Sincronizacion" "Terminada" Este hace lo siguiente: Cambia al directorio donde estan los perfiles, y para cada uno se sincroniza con la interface de consola, la cual no pregunta nada. Luego me saca un mensaje de Terminado y una notificación para el mismo efecto. Ese mismo script lo pueden asociar a un lanzador en el escritorio o algo asi, entonces tienen todo listo para, con un solo click, sincronizar todo lo suyo. Además de agregar los directorios a sincronizar con mucha facilidad desde Thunar. A eso yo le sumo que se ejecuta en una terminal para poder revisar la salida si es que me interesa. Entonces el lanzador llama el siguiente script (opcional) #!/bin/sh notify-send --expire-time=3000 --icon=/usr/share/icons/gnome/256x256/emblems/emblem-synchronizing.png "Sincronizando" "con la laptop" xterm -fs 10 -bg grey -fg brown -geometry 94x10 -hold -title "Sincronizando con la laptop" -e unisync.sh El cual simplemente lanza la notificacion de inicio de la transferencia, y crea la terminal con xterm, con letra tamaño 10, color gris en el fondo y marron en las letras, no se cierra al terminar la ejecucion del script anterior y nombre la ventana como corresponde. Lo mismo tengo en las dos computadoras y anda de 10+. Por supuesto que para esto necesitan usar xfce, pero facilmente pueden adaptarlo a cualquier otro entorno, inclusive lo pueden usar desde la consola. Espero que les sirva y si quieren y saben como mejorarlo, avisen. Me olvide de comentar que mis equipos no necesitan clave para conectarse por ssh, por eso es tan comodo. Más informacion al respecto en: http://wiki.archlinux.org/index.php/Using_SSH_Keys Tampoco les aclaré que unison tambien anda en windows, por si les interesa. Y para los que se preocupan por el tema, uso avahi para las direcciones, pero si en la computadora remota usan dyndns, o tienen una ip fija en su lan, la ponen y es lo mismo. Tambien hay routers que hacen dns en la lan con las direcciones que asigna a cada pc. Todo vale Links Wiki de arch: http://wiki.archlinux.org/index.php/Sync_laptop_desktop http://wiki.archlinux.org/index.php/Unison Unison: http://www.cis.upenn.edu/~bcpierce/unison/ Thunar, Acciones personalizadas: http://thunar.xfce.org/pwiki/documentation/custom_actions Salu2
Datos archivados del Taringa! original
20puntos
3,358visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

s
Usuario
Puntos0
Posts37
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.