Cómo hacer un backup de un sitio Web y de MySQL Server
Me deja perplejo concluir que existen tantos sitios web con función de aplicación, blog y de comercio electrónico, trabajando en línea, y sin un debido respaldo! Es decir, los dueños de estos sitios no se preocupan por hacer un respaldo periódico de su producto y de su información (y lástimosamente quieren hacerlo cuando pasan por un desastre). Por eso en esta ocasión te voy a explicar cómo hacer un backup de un sitio Web y de MySQL Server, tipo WordPress o PrestaShop, en Linux.
A nivel informático, Internet es una “jungla indómita”, alto en tráfico y llena de amenazas que intentan dañar nuestras páginas, nuestras aplicaciones y nuestro comercio electrónico. Aunque a veces los daños también pueden venir desde adentro por un mal manejo, por un accidente, o por irresponsabilidad. Todo lo anterior puede echarnos a perder nuestros servicios y nuestra información.
He notado que las personas y las empresas que monta su sitio web, no cree esto que describo, creen que no les va a pasar a ellos, o sencillamente no quieren pagar a un experto o a un profesional para que se encargue la tarea del backup, hasta que le llega el día (cosa que siempre sucede tarde o temprano).
La verdad es que hacer un backup de un sitio web es relativamente sencillo. Si el sitio está montado en un hosting compartido, es fácil con CPanel, aunque en algunos hosting no permite su automatización, el hacerlo de forma manual tampoco requiere mucho esfuerzo. Si nuestro sitio web está montado en un sevidor físico, o VPS, o en un servidor virtual, puede que el CPanel venga con la opción de automatizar el backup.
Aquí vamos a explicar cómo hacer un backup de un sitio web y de MySQL, con un script tipo Bash desde la consola de comandos, en Linux.
Pasos hacer un backup de un sitio Web y de MySQL
El backup de un sitio web con algún CMS tipo WordPress, o Prestashop, se compone de dos objetos: La Base de Datos, y la carpeta del contenido (el html).
Vamos a basarnos en un script de Bash muy sencillo para elaborar este procedimiento. Concisamente hablando, este script crea el backup de las bases de datos de MySQL Server, generando un archivo .Sql que luego comprime, y esto lo copia en otro servidor, porque no debemos dejar los backups en el mismo servidor que estamos respaldando:
#!/bin/bash BACKUPS=0 cd /home/sistemas/ mysqldump --user=root --password=pic16f628 -A > TODAS_LAS_BASESDEDATOS.sql BACKUPS=TODAS_LAS_BASESDEDATOS-`date +%Y-%m-%d_%H-%M`.tar.gz tar cvfz $BACKUPS TODAS_LAS_BASESDEDATOS.sql sshpass -p 'contraseña' scp *.tar.gz sistemas@192.168.0.15:/home/sistemas/ mv *.tar.gz /opt/backups/ rm TODAS_LAS_BASESDEDATOS.sql exit 0
Al script lo podemos llamar backup_pagina.sh, lo guardamos en nuestro home directory y le damos permisos de ejecución. Su funcionamiento es muy sencillo y lo describo así línea por línea:
- El shebang del script bash
- Definimos una variable llamada BACKUPS
- En mi caso, entramos al directorio /home/sistemas para hacer el proceso en esta ubicación
- Hacemos el backup de todas las bases de datos de MySQL Server. Esto genera un archivo .sql
- Asignamos a la variable BACKUPS el nombre que le vamos a poner al archivo .sql comprimido
- Comprimimos el archivo .sql
- Copiamos el backup en otro servidor o equipo
- Luego copiamos el comprimido en otra carpeta del mismo servidor
- Limpiamos todos los archivos que quedaron del proceso
- Terminamos el proceso
¿Y que hay de los archivos que componen nuestro sitio web, es decir, el html, las fotos, WordPress, etc? Nada más fácil que adicionar esta línea entre la sexta y la séptima para hacerle el backup al directorio que los contiene.
tar cvfz backup_sitioweb-`date +%Y-%m-%d`.tar.gz /var/www/nuestro_sitio_web
Probamos el script ejecutándolo, y después de validar su funcionamiento, programamos la periodicidad de su ejecución con Cron. Abrimos el archivo de configuración de Cron, crontab, y creamos la tarea:
02 7 * * * root /home/sistemas/backup_pagina.sh
La anterior tarea le dice a Linux que ejecute el script todos los días a las 7:20 de la mañana.
El Backup de un Sitio Web con Python
¿Prefieres hacerlo con Python porque no te gusta bash scripting? Ningún problema, este script en Python puede ayudarnos con este propósito, ajustándolo a nuestras necesidades:
#!/usr/bin/env python3.10
import os, shutil, tarfile, datetime, random
os.system('mysqldump --user=root --password=CONTRASEÑA --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats NOMBRE_BD > NOMBRE_BD.sql
#CONTRUIMOS EL NOMBRE DEL COMPRIMIDO PARA IDENTIFICARLO ENTRE LOS BACKUPS
FechaHoy= datetime.date.today()
TarBall = 'NOMBRE_BD-'
Aleatorio = random.randint(10,200)
Extension = '.tar.gz'
comprimido = TarBall+str(FechaHoy)+'-'+str(Aleatorio)+Extension
ArchivoSQL = 'NOMBRE_BD.sql'
DirectorioDestino2 = '/home/sistemas/MEGA'
tar = tarfile.open(comprimido, "w:gz")
tar.add(os.path.basename(ArchivoSQL))
tar.close()
shutil.copy(comprimido, DirectorioDestino2)
os.remove(comprimido)
os.remove(ArchivoSQL)
En este script hay una diferencia estratégica, pero la esencia es la misma. La diferencia es que el script nos copia el backup en una cuenta sincronizada de Mega, y así aseguramos el backup fuera de la misma máquina.
Puedes ver más sobre Backups aquí
Valora este artículo



Pingback: 🥇 Prevención de ataques informáticos y ransomware
Pingback: 🥇 Cómo hacer un backup de un servidor VPS en Ubuntu Linux