Respaldar datos (en DreamHost) con rsync

Durante agosto del 2008, DreamHost anunció una nueva característica para sus usuarios: 50GB de espacio para respaldar cualquier tipo de información. Un par de meses después, anunciaron que era posible utilizar rsync para los usuarios de respaldo.

Era cuestión de tiempo para comenzar a darle un buen uso a esto… pero ¿cómo?

Información del usuario para respaldos

Lo primero, es saber cuál es la información que necesitas para conectarte al servidor de respaldos de DreamHost. Para eso, debes ingresar al Panel de control de tu cuenta, y bajo el menú Users, seleccionar la opción Backups user.

El usuario para respaldos tiene acceso a RSH, un conjunto limitado de aplicaciones para la terminal que incluye rsync, scp, sftp y ftp.

Anota tu nombre de usuario y contraseña.

Ahora, a configurar el acceso automático (sin contraseña).

Acceso automático/sin contraseña

Si ya antes has utilizado SSH y has generado tus llaves, puedes saltar a Copiar la llave pública al servidor de respaldos; en caso contrario (o si no recuerdas haber hecho esto), primero debes Generar las llaves.

Generar las llaves

Para poder conectar a tu servidor de respaldos sin necesidad de ingresar tu contraseña cada vez que lo hagas, primero debes generar un par de llaves que te abrirán las puertas a tu servidor.

En una terminal, crea una llave RSA con el comando ssh-keygen -t rsa.

El programa te hará tres preguntas. Puedes apretar Enter ↵ para aceptar las respuestas predeterminadas.

Copiar la llave pública al servidor de respaldos

Ingresa al directorio donde se han creado las llaves: cd ~/.ssh. Haz una copia de tu llave pública con el nombre authorized_keys: cp id_rsa.pub authorized_keys.

Conéctate al servidor de respaldos con tu nombre de usuario y contraseña: sftp bXXXXXX@backup.dreamhost.com. Una vez conectado, crea un directorio con el nombre “.ssh”: mkdir .ssh

Ahora, te puedes desconectar (con un simple exit) o abrir una nueva pestaña (en Gnome Terminal, al menos), con Ctrl + T.

Y a copiar la clave al servidor (asumiendo que estás en ~/.ssh): scp authorized_keys bXXXXXX@backup.dreamhost.com:.ssh

Ahora te puedes conectar sin necesidad de ingresar tu contraseña.

La parte “rsync” de la cuestión

Ahora vamos a ocupar rsync para hacer un respaldo de un grupo de archivos. rsync es una muy buena herramienta, ya que además de permitir la sincronización/respaldo de archivos, es bastante inteligente en su forma de funcionar: comprime la información antes de enviarla, la transferencia es segura, y comprueba la integridad de la información transmitida. Además, como funciona a través de la línea de comandos, es fácil programar su ejecución automática con un cron job o anacron.

Primero, debemos averiguar qué version de rsync tiene nuestro equipo: en la terminal, teclea rsync --version

En la primera línea vas a ver algo como rsync version 3.0.3 protocol version 30. DreamHost trabaja con la versión 29 del protocolo, pero eso se puede solucionar fácilmente agregando una opción al ejecutar rsync.

Supongamos que quieres respaldar un directorio con tus documentos, que está en /home/tu-usuario/documentos. Una buena idea, antes de enviar los datos, sería crear el directorio documentos en el servidor de respaldos, para organizar mejor tus archivos. Lo puedes hacer igual que antes cuando copiaste la llave pública: te conectas por sftp y luego mkdir documentos. Por supuesto, puedes crear cualquier estructura de directorios que se te ocurra.

Ahora, para hacer el respaldo: rsync -avrP --protocol=29 /home/tu-usuario/documentos bXXXXXX@backup.dreamhost.com:documentos, donde

  1. rsync es el programa que va a encargarse de hacer el respaldo
  2. -avrP son las opciones: a significa “modo de archivo”, v por “verbose” (o sea, que verás en la terminal toda la información relevante sobre el proceso), r es por “recursivo” (respaldará el directorio ~/documentos y todo lo que esté dentro de él, incluyendo directorios) y P es para permitir la transfrerencia parcial de archivos (muy útil si se transfieren archivos muy grandes; si se llegara a cortar la conexión, retomará donde quedó, no desde el principio).
  3. –protocol=29 es para la compatibilidad con DreamHost
  4. /home/tu-usuario/documentos (o ~/documentos, que es lo mismo) es el directorio local que quieres sincronizar
  5. bXXXXXX@backup.dreamhost.com:documentos es donde serán transferidos tus archivos de respaldo

Y recuerda, esto es un espacio para respaldos, DreamHost no guarda respaldos de estos datos.

Referencias