• Aquí vive el Software Libre, coje lo que quieras, da lo que puedas
  • Rápido, seguro, libre e increíblemente fácil de usar
  • Ubuntu: Linux para seres humanos
  • Linux es Educación. Linux es Ciencia
  • Ubuntu es diseño, Ubuntu es innovación
  • Keep calm and enjoy Ubuntu
  • Trata tu teclado como se merece con Ubuntu
  • pf-kernel para Ubuntu
  • Convierte tu iMac en un ordenador de verdad
  • La libertad no es poder elegir entre unas pocas opciones impuestas
  • Software libre, para una sociedad libre

Blinda tus datos en la nube con Ubuntu y compártelos sin miedo para trabajo colaborativo

Entrada escrita por: Fernando Lanero Barbero
Para poder compartir nuestros datos con otros usuarios sin miedo a perderlo todo (y además tener una copia de versiones anteriores) vamos a utilizar la sincronización recursiva incremental de almacenamiento en la nube con backup de modificaciones.

Últimamente todo el mundo está encantado de la vida utilizando los servicios de computación en la nube que numerosas empresas nos brindan de forma gratuita. Son servicios fáciles de utilizar, extremadamente cómodos y perfectamente integrados con la mayoría de sistemas operativos, tanto de sobremesa como móviles.
 
Esta facilidad de uso es lo que ha hecho que un gran número de usuarios se haya lanzado a su utilización de forma indiscriminada, confiando a estos servicios incluso sus documentos más sensibles. Hasta aquí todo perfecto, salvo los problemas típicos que puede acarrear el no saber en qué servidores se almacena nuestra información.


Si a este pequeño inconveniente le sumamos que en un momento dado, el servicio puede dejar de funcionar (véase el caso de Megaupload) o incluso que comenzamos a compartir carpetas con otros usuarios, lo cual les brinda control absoluto sobre todo el contenido de las mismas -donde se incluye, modificación de ficheros e incluso borrado de los mismos-, como mínimo haremos "¡Glup!"

Pero aún tenemos la posibilidad de seguir usando servicios de almacenamiento en la nube de forma absolutamente segura (salvo el tema de protección de datos, en donde poco te puedo ayudar) si somos usuarios de Linux.

Para esta guía, me voy a centrar en cómo realizar sincronización incremental con backups automáticos de los últimos datos modificados sobre lo que almacenemos en Dropbox, aunque es perfectamente trasladable a cualquier servicio de almacenamiento en la nube. Comencemos.

Para poder llevar a cabo esta acción, vamos a usar rsync, que es una aplicación libre para sistemas de tipo Unix y Microsoft Windows que ofrece transmisión eficiente de datos incrementales, que opera también con datos comprimidos y cifrados. Mediante una técnica de delta encoding, permite sincronizar archivos y directorios entre dos máquinas de una red o entre dos ubicaciones en una misma máquina, minimizando el volumen de datos transferidos. Una característica importante de rsync no encontrada en la mayoría de programas o protocolos es que la copia toma lugar con sólo una transmisión en cada dirección. rsync puede copiar o mostrar directorios contenidos y copia de archivos, opcionalmente usando compresión y recursión.

Para llevar a cabo esto, necesitamos unos requisitos de configuración mínimos en nuestro ordenador:

  1. Tener instalado Dropbox y saber qué carpeta utiliza para realizar la sincronización del servicio.
  2. Tener espacio suficiente en el disco de almacenamiento local o en un disco de almacenamiento externo (esta última opción va a ser la que utilice para poner como ejemplo, de forma que rsync sincronice los datos cuando el disco duro externo esté conectado a un puerto USB).

Una vez instalado Dropbox y localizada la carpeta que el servicio utiliza para sincronizar datos (por defecto en Ubuntu es ~/home/usuario/Dropbox). Ésta será la que utilicemos para sincronizar y hacer backups de los datos que ahí modifiquemos.

En segundo lugar, lo que haremos será crear y localizar una carpeta en donde se guardará la sincronización así como otra con los backups de los ficheros modificados (para el ejemplo, vamos a escoger la localización de un disco duro externo montado en ~/media/nombre_del_disco_duro_externo).

En ese disco duro, crearemos las dos carpetas antes mencionadas, y a las que irán a parar nuestros datos una vez sincronizados. Por ejemplo: "Dropbox" y "Dropbox_backup".

Si atendemos a la sintaxis de rsync,  para lo que queremos realizar, el comando a ejecutar sería el siguiente:

rsync -avvb --delete --backup-dir=/media/nombre_del_disco_duro_externo/Dropbox_backup/backup_$(date +%y-%m-%d_%H-%M) /home/nombre_de_usuario/Dropbox/ /media/nombre_del_disco_duro_externo/Dropbox/

Antes de continuar, ten en cuenta que los datos que aparecen en rojo deberás cambiarlos por los tuyos con que tengas configurado tu sistema.

Vamos a explicar el comando de arriba.

  • rsync -avvb --delete [...] /home/nombre_de_usuario/Dropbox/ /media/nombre_del_disco_duro_externo/Dropbox/-> Con esta sintaxis lo que estamos creando es una copia incremental de nuestros ficheros de Dropbox en nuestro disco duro externo. Es decir, cada vez que modifiquemos algo en nuestro servicio en la nube, automáticamente se generará una copia exacta en el destino /media/nombre_del_disco_duro_externo/Dropbox/

  • --backup-dir=/media/nombre_del_disco_duro_externo/Dropbox_backup/backup_$(date +%d-%m-%y_%H-%M) ->Mediante este comando, cuando rsync detecte un cambio en nuestra copia local de Dropbox, antes de modificar ningún fichero, almacenará la versión previa en "Dropbox_backup" a la vez que generará y guardará esos ficheros en una carpeta con la fecha y la hora en la que tuvo lugar la copia.
Si os dais cuenta, este comando es sumamente útil cuando trabajamos con carpetas en la nube a la que acceden multitud de usuarios y todos tienen la posibilidad de modificar ficheros, ya que si por cualquier razón, algún usuario modifica o borra por error algún documento, siempre vamos a poder volver a la versión o versiones anteriores que no contengan el error.



Muy bien, hasta aquí todo perfecto, pero aún existe un pequeño inconveniente, rsync no se ejecuta como tal en segundo plano de forma predeterminada, y todo esto tampoco sería muy efectivo si tenemos que ejecutarlo a mano cada cierto tiempo. Así que vamos a automatizar el proceso mediante un script ejecutable al inicio de sesión de nuestro ordenador.

Para ello, vamos a crear un fichero de texto vacío en ~/home/nombre_de_usuario/ Allí vamos a copiar el siguiente texto:

#!/bin/bash

while :
do

tam1=`du -s /home/nombre_de_usuario/Dropbox/ | awk '{$1}'`

tam2=`du -s /media/nombre_del_disco_duro_externo/Dropbox/ | awk '{$1}'`

if [ $tam1 != $tam2 ]; then
rsync -avvb --delete --backup-dir=/media/nombre_del_disco_duro_externo/Dropbox_backup/backup_$(date +%y-%m-%d_%H-%M) /home/nombre_de_usuario/Dropbox/ /media/nombre_del_disco_duro_externo/Dropbox/

sleep 30
fi

done

Con esto estamos creando un script que nos permitirá comprobar cada 30 segundos el tamaño de las carpetas de origen y destino de la sincronización de modo que si encuentra diferencia, lanzará rsync para que ejecute los comandos que ya expliqué anteriormente.

Una vez creado el script y modificado con nuestros datos (recuerda cambiar las letras en rojo por los valores de tu ordenador), lo guardamos como "autobackup" y cerramos el editor de texto. A continuación haremos el script ejecutable (botón derecho -> Propiedades -> Permisos -> Permitir ejecutar el archivo como un programa).

El último paso es ejecutar este script al inicio de cada sesión, para ello, pulsamos la tecla "Súper" y en el Dash tecleamos "Aplicaciones al inicio". Allí pulsamos sobre el botón "Añadir" y rellenamos los campos con los siguientes datos:

Nombre: autobackup
Orden: /home/nombre_de_usuario/autobackup
Comentario: Copia de seguridad de servicios en la nube

Pulsamos "Añadir" y la siguiente vez que reiniciemos el script comenzará a monitorizar nuestra carpeta de Dropbox (o cualquier servicio de almacenamiento en la nube que tengamos) para preservar cualquier pérdida de datos.

1 comentarios:

Sir Co$t Granda dijo...

Había visto el post hace meses pero justo ahora lo necesito, que suerte haberlo encontrado muchas gracias.