Usar megatools para hacer backups

Siempre es bueno tener algún backup para estar protejidos ante eventuales fallas que nos podrían costar los datos de nuestro sitio.

Lo ideal es utilizar una herramienta de versionado para nuestro código, pero si sos como yo, no te gusta agregar la DB a git, ya que estamos hablando de datos de un server, no del código en si.

La mayoría de los hosting actuales ofrecen servicios de backup, pero vamos a utilizar, además, nuestra cuenta de mega para guardar ahi los DB de nuestra DB.

Utilizando Mega como backup

El primer (y obvio) paso es crear una cuenta en Mega. Las principales ventajas de este servicio sobre sus competidores son que es el que provee más espacio para cuentas free (50 GB) y además todos los archivos están encriptados, lo que le da una capa extra de seguridad que nunca viene mal. Así que si todavía no tenés una cuenta anda y creala, que la vas a necesitar en los siguientes pasos.

Descargar Mega Tools

Vamos a utilizar Mega Tools que, como su nombre lo indica, son herramientas para utilizar mega desde la línea de comandos. La instalación, al estar en el repo de Ubuntu, es muy sencilla:

sudo apt install megatools

Una vez instalado, lo primero que deberíamos hacer es validar que nos podemos conectar, para esto podemos usar megals, que lista los directorios de nuestra cuenta de mega:

megals -u <nombre de usuario> -p <contraseña>

Si queremos evitar poner nombre de usuario y contraseña en cada comando, podemos crear el archivo .megarc en nuestra home, con el siguiente contenido:

[Login]
Username = [email protected]
Password = passwordSuperSegura

De esta forma, ya sabemos que podemos acceder a la cuenta, por lo que solo nos falta copiar el archivo de backup de nuestra DB.

Cronjob de Backup

Vamos a utilizar cronjob, mysqldump y megatools para dejar automatizada la creación de nuestro backup. Para facilitar la ejecución del cron creamos un archivo bash y lo ubicamos en nuesta home (/home/usuario/backup.sh):

today=$(date +"%Y_%m_%d")
# Eliminamos los backups anteriores
rm -f /home/usuario/db_baks/backup*.sql
# Creamos el backup, con la fecha de hoy
filename=/home/usuario/db_baks/db_baks/backup_$today.sql
mysqldump -u <db_user> -p<db_pass> <db_name> > $filename
# Lo subimos a mega
megaput $filename --no-progress --path=/Root/backup/database

Tenemos el bash, vamos a usar el cron para que se ejecute automáticamente. Editamos nuestro crontab usando el comando crontab -e y agregamos una linea:

20 4 * * 3,6  sh /home/usuario/backup.sh

De esta forma dejamos seteado un backup de la DB los miércoles y sábados a las 4:20 AM.

Si vamos a nuestra carpeta de mega después de unos días deberiamos ver algo así (el screenshot es de mi carpeta de backups, por eso el nombre de archivo es distinto):

Con este proceso tendremos siempre el último backup en el server y el histórico en mega. Obviamente este es solo el punto de partida, a partir de acá se pueden agregar cosas como limpiar periódicamente los backups o agregar más cosas a la nube (archivos de configuración, por ejemplo).