Share via


101 COSAS QUE PUEDES HACER CON CLOUD OS – Cosa 65

COSA #65: HACER BACKUP DE UNA MAQUINA LINUX EN MICROSOFT AZURE

 

Hola amigos, recientemente hablé de la posibilidad de hacer backup a una máquina Windows hacia la nube pública de Microsoft denominada Microsoft Azure. Simplemente hay que usar una herramienta gratis denominada Azure Backup, la cual se instala en el servidor que se quiere respaldar, se generan certificados digitales para que el proceso sea seguro y ¡Listo!.

Si quieren saber sobre cómo configurar la herramienta de backup hacia Azure, pueden ver mi post COSA # 29: CONFIGURACIÓN DE WINDOWS AZURE BACKUP

Si quieren ver cómo se hace un backup hacia la nube usando Azure Backup, pueden ver mi post COSA # 37: WINDOWS AZURE BACKUP

En los anteriores ejemplos se hizo la configuración para hacer backup a una máquina Windows… ¿Y si es Linux? La herramienta está hecha para plataforma Windows, pero podemos hacer un sencillo “truco” para llevar archivos de una máquina Linux hacia Azure.

El objetivo final es copiar de alguna manera los archivos de Linux hacia una máquina Windows que tenga configurado un esquema de Azure Backup y una vez estando allí dichos archivos se respalden hacia Azure.

Existen varias alternativas para ello, por ejemplo usar Samba, lo que permite conectar máquinas Windows y Linux con el protocolo SMB (Server Message Block) para ver las carpetas si se tratara de carpetas compartidas y copiar lo que se requiera. Con tareas programadas y un sencillo script o .bat se puede hacer la copia de archivos a respaldar.

Si las máquinas no se encuentran en la misma red local usar Samba se complica debido a que los protocolos asociados no son del todo enrutables y a menos que se usen conexiones LAN-to-LAN o VPNs esta tarea no se puede realizar entre sitios remotos. Por lo anterior se puede usar un viejo conocido como lo es el protocolo FTP, el cual vamos a usar en este ejemplo.

Por supuesto hay que considerar que si se va a hacer un respaldo de una base de datos que tenga archivos abiertos es necesario hacer un respaldo offline previamente. De igual manera hay que tener en cuenta esta situación cuando se respalden aplicaciones con archivos abiertos en memoria para tener una consistencia del respaldo.

En este ejercicio voy a respaldar una base de datos MySQL y 2 sitios web estáticos que tengo corriendo en un servidor Linux CentOS.

Voy a hacerle respaldo a la base de datos denominada mysql, que es la base de datos del motor MySQL. Primero verifico que la base de datos exista:

Backup-Linux-Azure01

Aquí simplemente me conecté por línea de comandos usando mysql –u root –p y escribí la contraseña del usuario root de MySQL. Luego ejecuté el comando de MySQL show databases; para ver las bases de datos que existen en mi motor que en este caso son las que vienen por defecto.

Me puedo salir del ambiente usando exit; (Es importante el uso del caracter ; al final)

Ahora para hacer un backup de la base de datos de MySQL –que en este caso es un export a un archivo plano- uso el comando mysqlsump de la siguiente manera:

mysqldump -u root -p'Pa$$w0rd' mysql > /home/guacharo/dumpbdmysql.sql

Aquí se está especificando el usuario (root), la contraseña (Pa$$w0rd), la ruta en donde voy a dejar el archivo (/home/guacharo)   y el nombre del archivo de salida (dumpbdmysql.sql), el cual es un archivo plano o ascii:

Backup-Linux-Azure02

Si quieren respaldar la tabla mysql.event, pueden usar mysqldump -u root -p'Pa$$w0rd' mysql --events > /home/guacharo/dumpbdmysql.sql pero para efectos prácticos en nuestro ejemplo cualquiera de las 2 opciones expuestas funciona.

Ahora bien, podemos verificar la existencia del archivo respaldado:

Backup-Linux-Azure03

Y también su contenido:

Backup-Linux-Azure04

Como ya lo había dicho, es un archivo plano. Para verlo simplemente usé el comando more:

more /home/abarba/dumpbdmysql.sql

Bueno, este archivo ya es un respaldo de mi base de datos mysql. Ahora voy a respaldar los 2 sitios web que tengo en el servidor y que son sitios estáticos sin base de datos. Estos sitios se ven así:

Backup-Linux-Azure05

Backup-Linux-Azure06

A propósito, estos 2 sitios los saqué de http://www.freewebsitetemplates.com/

Los sitios se encuentran en la máquina Linux en /var/www/html/hairstylesalon/ y en /var/www/html/lawfirm/ respectivamente, así que puedo respaldarlos usando el comando tar de la siguiente manera:

tar cvfz /home/abarba/hairstylesalon.tar.gz /var/www/html/hairstylesalon/

Voy a respaldar la ruta /var/www/html/hairstylesalon/ en el archivo /home/abarba/hairstylesalon.tar.gz que para efectos prácticos es un único archivo comprimido que contiene todos los archivos del sitio web.

De igual manera respaldo el otro sitio web con tar cvfz /home/abarba/lawfirm.tar.gz /var/www/html/lawfirm/

Backup-Linux-Azure07

Ya tengo 2 archivos que son respaldo de mis sitios web, de modo que ya los puedo copiar a la máquina Windows que tiene Azure Backup y que puede hacer respaldos hacia la nube de Microsoft.

Lo puedo hacer en cualquiera de los dos sentidos, es decir copiar los archivos desde el servidor Linux hacia el servidor Windows o halar los archivos desde el servidor Windows. En este ejercicio puse un servidor FTP en la máquina Linux y luego copiaré los archivos a la máquina Windows.

El servidor FTP recomendado para Linux es el VSFTP (Very Secure FTP) , el cual puedo usar para garantizar que un usuario de FTP quede “enjaluado” de modo que si intenta salirse del directorio no pueda hacerlo y de este modo no pueda afectar archivos de otros usuarios de FTP.

Prímero instalo el servicio con yum install vsftpd y puedo subir el servicio con service vsftpd start

Si quiero verificar que esté arriba el servicio puedo usar ftp localhost o netstat -na | grep :21

Pero falta asegurar el servidor, para ello sugiero revisar el siguiente link de Red Hat. Igual con mucho gusto me pueden contactar si tienen dudas en este punto.

Bueno, yo ya aseguré mi servidor FTP para que el usuario guacharo no se pueda salir de su entorno FTP.

Ahora que ya hice lo anterior voy a mi máquina Windows.

Lo primero que debo hacer es crear un archivo de respuesta para hacer el FTP de manera automática, de modo que pueda programar la tarea para ser ejecutada cuando yo lo requiera, por ejemplo en horas de la madrugada cuando ya haya bajado el sistema, los usuarios no estén conectados y haya hecho un backup en el servidor Linux. El archivo de mi ejercicio contiene lo siguiente:

open 192.168.1.100
guacharo
stick2014$$
hash on
prom off
bin
mget *.gz
bye

Este puede ser un archivo plano con o sin extensión, en mi caso lo nombré server.txt

Backup-Linux-Azure08

¿Qué significa cada una de estas líneas? Paso a explicarlas:

open 192.168.1.100 – Abrir conexión al servidor FTP Linux con IP 192.168.1.10
guacharo – Nombre del usuario
stick2014$$ – Contraseña del usuario
hash on – Esto es opcional, es para ver el progreso de la copia
prom off – Que no me pregunte cuando descargo archivos con comodines como * o ?
bin – Modo binario, así el archivo sea plano o ascii recomiendo usar este modo para garantizar su integridad
mget *.gz – copiar todos los archivos con extensión .gz que son los que contienen mi respaldo
bye - Desconectarse el servidor una vez se haya hecho la copia

¿Bastante fácil cierto? Una vez tenga estos parámetros puedo ejecutar lo siguiente desde una línea de comandos CMD o un prompt de PowerShell:

ftp -s:.\server.txt

En donde server.txt es el archivo que creé previamente con todos los parámetros de conexión.

Observen cómo funciona:

Backup-Linux-Azure09

Una vez la tarea de copia de archivos terminó, se hace desconexión del servidor FTP.

Ya tengo localmente los archivos de respaldo de los sitios web, observen que el respaldo de la base de datos lo puedo hacer usando un archivo de copia de archivos similar al que usé para descargar los archivos *.gz, sólo debo cambiar la extensión por *.sql:

open 192.168.1.100
guacharo
stick2014$$
hash on
prom off
bin
mget *.sql
bye

Ya el resto es historia, teniendo los archivos localmente en la máquina Windows que tiene conexión a Azure Backup puedo llevar estos archivos a la nube de Microsoft Azure –Arriba se explica cómo configurar un servidor Windows para establecer esa conexión-.

De este modo hemos hecho respaldo de una base de datos MySQL y dos sitios web de una máquina Linux hacia Azure, usando un salto a través de una máquina Windows que tiene los agentes de backup hacia Azure.

Recuerden que pueden encontrar más información acerca de Cloud OS de Microsoft Aquí

Espero les haya gustado esta entrega, ¡Nos vemos pronto!