jueves, 11 de abril de 2013

Unison - una forma de mantener PCs sincronizados


Muchos de nosotros tenemos un PC de escritorio(Desktop) y un equipo portátil (Laptop, o Netbook --como en mi caso--) y siempre tenemos el problema de mantener nuestros dispositivos en sincronía. Piense, por ejemplo, que está trabajando en un proyecto y manipulando copias del mismo en su PC de escritorio y en su equipo portátil. Realizar sincronizaciones manuales puede enredar un poco las cosas, arriesgando información valiosa en el proceso.
Se ha dicho mucho sobre la opción de usar Dropbox, pero no siempre es posible utilizar este servicio para esta tarea (Pues Dropbox solo almacena 2GB en el plan básico gratuito. Es posible incrementar la cuota de espacio, pero hay situaciones donde Dropbox no es una solución inteligente).
Le dediqué algún tiempo a encontrar una buena aplicación que me permitiera sincronizar mis dispositivos y me encontré con Unison, que en palabras de la página oficial:
El logo de Unison

Este programa tiene la ventaja de ser multiplataforma, permitiendo sincronizar entre dos plataformas diferentes (por ejemplo, entre Linux y Windows), como añadidura, se encarga de controlar las versiones de los archivos controlando cuales son más recientes y permitiéndo que el usuario eliga que cambios se deben propagar entre las réplicas.
He probado este programa por cerca de dos meses y puedo decir que funciona de maravilla. Si usted necesita sincronizar dos o más directorios, debería darle una oportunidad.
Dentro de los usos que le he dado al programa, y los que se le pueden dar, están
  • Mantener mi Netbook y el Desktop sincronizados (exactamente con la misma información) en los directorios elegidos
  • Como una herramienta de respaldo de USB Flash, pues tengo un perfil configurado que me sincroniza el contenido de la misma en mi Netbook, así que, si necesito un poco de espacio adicional  puedo eliminar archivos sabiendo que tengo copias del mismo en otro lugar. Un ejemplo de esta necesidad es al montar ISO hibridas de Debian en una memoria USB, así no pierdo información y puedo restaurar la memoria a su estado inicial
  • Se pueden guardar varios perfiles de sincronización, así se pueden usar cuando sea necesario.
  • Puede utilizar SSH para realizar la sincronización, así que basta tener una red LAN o una WLAN en casa para sincronizar dispositivos. La mayor utilidad también se da sincronizando equipos remotos por SSH, pero no lo he probado.
Los manuales y tutoriales en inglés están Aquí.


Guía simplificada para el novato.


Instalando


En los sitemas GNU/Linux, Unison se puede instalar desde consola con permisos de superusuario, usando el comando su, o sudo. Posteriormente utilizamos un gestor de paquetes, en mi caso aptitude (pero apt-get servirá también)
# aptitude install unison-all unison-alll-gtk

Sincronizando PCs por SSH con Unison

La aplicación puede utilizarse mediante la línea de comandos, sin embargo, en aras de la brevedad ilustraré su uso mediante la interfaz de usario (en GTK). Supondremos que tenemos dos computadores que comparten una red local, ambos tienen instalado Debian GNU/Linux y la carpeta que queremos sincronizar está almacenada en un disco con formato NTFS (Una partición de Windows)
Al correr Unison aparece una ventana de selección de perfil, más o menos así:
Selección de perfil - Aparecen dos perfiles porque son los que tengo guardados.
Una vez allí, para crear un perfil se presiona el botón, Añadir al costado derecho de la ventana.


Al presionar añadir aparece este mensaje, presionamos adelante para continuar
Aparece un menú que solicita un Nombre y Descripción del perfil a crear, en este caso le puse Prueba

Acto seguido, aparece un menú que ofrece distintas opciones de sincronización, a saber, Sincronización Local, Sincronización vía SSH, y Sincronización vía RSH, o através de una conexión TCP
Tipo de conexión - Tipos de sincronización disponibles

Al elegir SSH aparecen más opciones:
Tipo de conexión - He seleccionado SSH como el tipo de conexión. 
Para configurar la conexión vía SSH es necesario proporcionar los datos del servidor remoto, y del usuario en el servidor remoto. Esta información se escribe en las casillas correspondientes (Si no entiende de lo que estoy hablando debería mirar este enlace y este tal vez).

Una vez se ha establecido el tipo de conexión, aparece un menú para elegir el directorio Local (el de la máquina en que se está configurando el Unison) y el menú remoto (Remoto porque elegimos sincronizar PC diferentes vía SSH)
Eligiendo directorios a Sincronizar
Para el caso en que la sincronización involucre particiones de windows, Unison ofrece la posibilidad de activar una casilla de verificación. Las razones para ello, es que el sistema de archivos FAT o NTFS no permiten la modificación de permisos como los sistemas de archivos ext2,ext3 o ext4 que son de uso común para las distribuciones de Linux.

Activo esta casilla pues la sincronización involucra particiones con tipo de Archivo FAT o NTFS
 Así ha terminado de configurar su perfil de Unison.


Creación de perfil terminada :D

Sincronizando Directorios - Utilizando el perfil

Atención: Unison debe estar instalado en todas las máquinas que desean sincronizarse, adicionalmente, deben tener la misma versión instalada. De otro modo no será posible sincronizar y le aparecerán mensajes de error.

Para utilizar el perfil creado, solo debe seleccionarlo en la ventana inicial de Unison y presionar el botón Abrir en la parte inferior de la ventana.
Selección de perfil - Aparecen dos perfiles, son los que tengo guardados.
Una vez se seleccionó el perfil y Unison encuentra al servido remoto (el otro PC), solicita la contraseña del usuario en el servidor remoto.
Conectando con el servidor remoto - Solicita contraseña para continuar
Una vez ingresada la contraseña, Unison buscará los cambios en ambas máquinas y sugerirá acciones pendientes. La primera columna de la izquierda, con nombre local indica el estado del directorio local, la segunda, action indica en verde la dirección hacia donde se propagarán los cambios, y la tercera columna indica el estado del directorio remoto (Icaro es el nombre del servidor remoto en este caso).
La columna status mostrará el progreso de cada archivo, finalmente la columna path indica el archivo en cuestión.
Preparando sincronización - Examinando diferencias entre directorios
Vemos que en la columna action en las primeras dos filas tiene direcciones distintas. La primera fila nos indica que se progará de Icaro a local un archivo nuevo (New File). Por su parte, la seguna fila muestra que un archivo nuevo se propagará de local al directorio remoto en el servidor Icaro.
Al iniciar la sincronización, veremos como cambia la columna status según se vaya completando cada acción pendiente.
Propagando cambios - Los PC se están sincronizando
Al finalizar, en la barra de estado (barra inferior) se indicará que la sincronización ha terminado.

Comentarios Finales

  • Según la página oficial de Unison, (específicamente acá en inglés) declaran que el software no tendrá mejoras respecto a sus versiones actuales, sin embargo se trabajará para que el programa siga siendo soportado e incluido en las distribuciones de software futuras (incluyendo los reportes de fallos). La razón para ello es que no disponen de un desarrollador que dedicado a la tarea de mejorar el software.

  • Llevo mucho tiempo preparando el tutorial, y por motivos de tiempo  --y espacio--  no puedo mostrar como se utilizan los demás métodos de sincronización. Espero que con esta "guía simplificada" sea suficiente para satisfacer las necesidades de la vida cotidiana. Si tiene cualquier pregunta, siéntase libre de dejar un comentario (o los que considere necesarios)

viernes, 5 de abril de 2013

La tetera de porcelana de Bertrand Russell

"Because we know that you can't prove to me it's not there..."
(contra-)Campaña Teach the controversy 

"Si yo sugiriera que entre la Tierra y Marte hay una tetera de porcelana que gira alrededor del Sol en una órbita elíptica, nadie podría refutar mi aseveración, siempre que me cuidara de añadir que la tetera es demasiado pequeña como para ser vista aun por los telescopios más potentes. Pero si yo dijera que, puesto que mi aseveración no puede ser refutada, dudar de ella es de una presuntuosidad intolerable por parte de la razón humana, se pensaría con toda razón que estoy diciendo tonterías. Sin embargo, si la existencia de tal tetera se afirmara en libros antiguos, si se enseñara cada domingo como verdad sagrada, si se instalara en la mente de los niños en la escuela, la vacilación para creer en su existencia sería un signo de excentricidad, y quien dudara merecería la atención de un psiquiatra en un tiempo iluminado, o la del inquisidor en tiempos anteriores.1"
Bertrand Russell


Thoughts on Linux distributions and Free software community

Linux and GNU/Linux distributions are becoming very popular these days. Maybe a clue on that are the facts that the company Valve has launched a beta testing version of Steam for linux, and there are rumors of Blizzard games for linux to be launched this year, just to mention some cases.
It's worth to ask, ¿how did Linux OS get to this point of popularity?. The main reason could be a combination of: the effort of open-source communities to spread the word while making things more accesible to inexperienced people, the fact that the internet allows the fast interchange of information, and the improvement or, if you prefer, the more user-friendly Linux distributions available as the Ubuntu distro by Canonical.
The first Linux distro i've used was CentOS as part of a computing course at my carreer's pensum. Unsatisfied, the first distro I successfully installed on my Desktop PC was Knoppix (by Klaus Knopper) a Debian based distro. I was amazed by the idea of using software without paying for it (as a Windows user, i knew very well this issue, and the need to pay for licenses and software use), but then, I gradually became aware of the free philosophy behind the free software, and understood that this was a great way to be followed ( in part at least, given some "by-practical-reasons" exceptions) then migrated to Ubuntu and then Kubuntu(a KDE desktop version of Ubuntu) and so on until I got Debian Testing installed about 3 years ago.
Since then, I use to make jokes about Ubuntu users (like the [1] here), or the emmerging Linux Mint (They have the Debian edition, a Debian testing based version of Linux Mint, but, still don't get the point of make a Debian-edition distro if you actually have The Debian GNU/Linux distrubution working) but just for fun, I really think that few people can say that their dive into Linux world and open-source programs was smooth and easy. That brings me again to the point of the user-friendly systems, may be the best way of getting to people is let them know that Linux systems are not too difficult to use/manage/mantain. I think that some of us must say "thanks" by that. Even stigmatized (of being too difficult) distros as Debian need to be acompanied of documentations, community forums, bug-reports, mail-listings, and the most important: The Debian Wiki (must take a look on that), and many of Debian users (as in my case) own their installed systems to those resources (or "recipes" some cases :P). It's worth to think that all those resources were made by more experienced users that took the time to do them, ¿what if they didn't? if they think that newbies do not deserve such guides?, This questions are directed to those who thinks that, by getting some "basic" Linux skills, feel like hackers or something alike, and treat the newbies as if they weren't one of them before.

Given a hypotetical law of "the software improvement is proportional to available users", I think the call is to make the free software and open-source community grow by helping others learn how to get the best of their machines and distros, and not scare them wanting to feel superior or something, that kind of selfish acts doesn't bring you to any higher level (Actually, helping others does it)

Maybe using linux could demand you some learning curve, but it really worths every minute spent.

If you are new to linux and want to choose a distribution, I really think that one of the best documented is The Debian GNU/Linux distrubution, they have the InstallingDebianOn project, so maybe your laptop (or PC) has is own how-to-install debian page.