Cómo hacer una copia de seguridad (backup) de una base de datos MySQL en cPanel automáticamente
¿Cansado de acordarte a última hora de que tu web lleva semanas sin copia de seguridad? Tranquilo, no eres el único. Perder una base de datos MySQL puede ser un dolor de cabeza enorme, pero la buena noticia es que puedes automatizar todo el proceso para que nunca más tengas que preocuparte.
En esta guía te voy a explicar, paso a paso y sin tecnicismos complicados, cómo configurar un backup mysql cpanel de forma automática. Olvídate de hacerlo a mano cada semana. Al final de este artículo, tendrás tu sistema funcionando solo, como si tuvieras un asistente personal trabajando 24/7 para ti.
¿Por qué necesitas una copia de seguridad automática?
Imagina que tu tienda online pierde todos los pedidos del mes, o que un plugin actualiza mal y borra todos los comentarios de tu blog. Sin un respaldo, esos datos se han ido para siempre. Las copias de seguridad manuales son un engaño, porque la vida se interpone: te olvidas, estás de viaje o simplemente no tienes tiempo.
Al automatizar el proceso, te aseguras de que siempre tienes una versión reciente de tu base de datos lista para restaurar. Es como tener un seguro a todo riesgo, pero sin papeleos.
Entendiendo el flujo de trabajo: cron job + mysqldump
Antes de ensuciarnos las manos, vamos a entender qué vamos a hacer. Es más fácil de lo que parece.
El plan es sencillo: vamos a crear un cron job mysql (una tarea programada) que ejecute un comando especial llamado mysqldump. Este comando es el encargado de "sacar" una foto de tu base de datos y guardarla en un archivo. Luego, ese archivo lo comprimimos para que ocupe menos espacio y lo guardamos en una carpeta segura.
El cron job es el "despertador" que le dice a tu servidor: "Oye, cada día a las 3 de la mañana, ejecuta este comando". Tú configuras la hora y la frecuencia, y el servidor hace el resto.
Paso 1: Localizar tus datos en cPanel
Lo primero es entrar en tu panel de control de hosting, que normalmente es cPanel. Una vez dentro, busca la sección "Archivos" o "Files". Ahí encontrarás el Administrador de archivos (File Manager). Haz clic para abrirlo.
Dentro del Administrador de archivos, busca la carpeta que contiene tu web. Normalmente se llama public_html (o www). Es importante que sepas la ruta exacta de tu web, porque la necesitaremos más adelante. Por ejemplo, si tu dominio es www.miweb.com, la ruta suele ser /home/usuario/public_html.
Ahora, necesitamos crear una carpeta donde se guardarán las copias de seguridad. Te recomiendo que la crees fuera de public_html, para que nadie pueda acceder a ella desde el navegador. Busca en el panel izquierdo del Administrador de archivos la opción de "Carpeta nueva" (New Folder). Créala con un nombre como backups_mysql. Anota la ruta completa, por ejemplo: /home/usuario/backups_mysql.
[WARNING]: No guardes las copias de seguridad dentro de
public_html. Si alguien adivina la URL, podría descargar tu base de datos entera. Siempre fuera de la carpeta pública.
Paso 2: Crear el script de backup (el corazón del asunto)
Ahora vamos a crear un pequeño archivo de texto que contendrá las instrucciones para hacer la copia. No te asustes, es muy sencillo.
En el Administrador de archivos, navega a la carpeta backups_mysql que acabas de crear. Haz clic en "+ Archivo" (o "New File") y nómbralo backup.sh. Luego, haz clic derecho sobre el archivo y selecciona "Editar" (Edit). Se abrirá un editor de texto.
Borra cualquier contenido que tenga y pega lo siguiente:
#!/bin/bash
# Configuración de la base de datos
DB_NAME="nombre_de_tu_base_de_datos"
DB_USER="nombre_de_tu_usuario"
DB_PASS="tu_contraseña"
# Configuración de archivos
BACKUP_DIR="/home/usuario/backups_mysql"
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# Crear el archivo de backup comprimido
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/backup_$DATE.sql.gz"
# Eliminar backups antiguos (mantener solo los últimos 7)
find "$BACKUP_DIR" -name "backup_*.sql.gz" -mtime +7 -delete
# Mensaje de éxito (opcional)
echo "Backup completado: $BACKUP_DIR/backup_$DATE.sql.gz"
Ahora, hay que modificar algunas cosas:
DB_NAME: Pon aquí el nombre de tu base de datos. Lo encuentras en cPanel, en la sección "Bases de datos MySQL".DB_USER: Tu usuario de MySQL. También lo tienes en la misma sección.DB_PASS: La contraseña de ese usuario.BACKUP_DIR: La ruta de la carpeta que creaste en el Paso 1 (ej./home/usuario/backups_mysql).
Guarda los cambios y cierra el editor.
[TIP]: ¿No sabes tu contraseña de MySQL? En cPanel, ve a "Bases de datos MySQL" y haz clic en "Cambiar contraseña" para poner una nueva. Es un buen momento para actualizarla.
Paso 3: Hacer el script ejecutable
Este paso es crucial. El servidor necesita permiso para ejecutar el script. En el Administrador de archivos, haz clic derecho sobre backup.sh y selecciona "Cambiar permisos" (Change Permissions). Se abrirá una ventana con casillas.
Marca las casillas para que queden así:
- Propietario (Owner): Marca las tres (Leer, Escribir, Ejecutar).
- Grupo (Group): Marca solo "Leer" y "Ejecutar".
- Público (Public): No marques nada.
En el campo numérico de abajo, debería aparecer 700 o 750. Si ves eso, perfecto. Haz clic en "Cambiar permisos".
[WARNING]: Si no haces este paso, el cron job no podrá ejecutar el script y no funcionará nada. Es el paso que más se olvida.
Paso 4: Configurar el cron job en cPanel
Ahora viene la parte mágica. Vamos a decirle al servidor cuándo debe ejecutar el script.
Vuelve al panel principal de cPanel y busca la sección "Tareas programadas" o "Cron Jobs". Suele estar en la categoría "Avanzado" o "Preferencias".
Haz clic en "Nueva tarea cron" (New Cron Job).
Verás varios campos. No te asustes, solo vamos a usar dos.
-
Comando (Command): Aquí escribiremos la ruta para ejecutar nuestro script. Escribe lo siguiente:
/bin/bash /home/usuario/backups_mysql/backup.sh(Recuerda cambiar
usuariopor tu nombre de usuario real de hosting). -
Configuración de horario: Aquí decides cuándo quieres que se ejecute. Lo más común es una vez al día. Puedes elegir "Configuración común" y seleccionar "Una vez al día" o "Una vez por semana". Si quieres ser más específico, en el campo de "Minuto" pon
0, en "Hora" pon3(para las 3 AM), y deja los demás en*(asterisco). Eso significa "todos los días a las 3:00 AM".
Haz clic en "Añadir nueva tarea cron" (Add New Cron Job). ¡Y listo!
[INFO]: La hora del servidor puede no coincidir con tu hora local. No te preocupes, es normal. Lo importante es que se ejecute con regularidad. Si tu web tiene mucho tráfico, las 3 AM es una buena hora porque hay menos visitas.
Paso 5: Probar que todo funciona (no te lo saltes)
No quieres esperar a mañana para saber si funciona. Vamos a probarlo ahora mismo.
En cPanel, ve a "Tareas programadas" y busca la tarea que acabas de crear. Al final de la fila, verás un botón o enlace que dice "Ejecutar ahora" (Run Now). Haz clic en él.
Espera unos segundos y ve al Administrador de archivos, a la carpeta backups_mysql. Deberías ver un archivo nuevo llamado backup_2024-05-20_03-00-00.sql.gz (o con la fecha y hora actuales).
Si el archivo aparece, ¡enhorabuena! Tu backup mysql cpanel automático está funcionando.
[TIP]: Si no aparece, revisa los tres puntos clave: la ruta en el script (
BACKUP_DIR), los permisos del archivo (700) y que el nombre de usuario en el comando del cron job sea correcto.
Cómo restaurar un backup (el plan B)
Llegó el día. Algo ha pasado y necesitas recuperar tus datos. No entres en pánico, es más fácil de lo que crees.
Restaurar desde cPanel (método sencillo)
- Ve a "Bases de datos MySQL" en cPanel.
- Busca tu base de datos y haz clic en "Administrar" (o "phpMyAdmin").
- En phpMyAdmin, selecciona tu base de datos en el panel izquierdo.
- Haz clic en la pestaña "Importar".
- Haz clic en "Elegir archivo" y selecciona tu archivo
backup_*.sql.gz(o descomprímelo antes y sube el.sql). - Haz clic en "Continuar" y espera a que termine.
Restaurar desde la terminal (método avanzado)
Si te sientes cómodo con la línea de comandos, puedes usar SSH. Descomprime el archivo y luego ejecuta:
mysql -u tu_usuario -p nombre_de_tu_bd < backup.sql
Te pedirá la contraseña y listo.
Preguntas frecuentes (FAQ)
¿Puedo hacer un backup de varias bases de datos a la vez?
Sí. Puedes modificar el script para que haga un bucle con todas las bases de datos, pero eso es más avanzado. Por ahora, te recomiendo crear un script por base de datos o usar la herramienta de copia de seguridad completa de cPanel (que también es automática, por cierto).
¿Cuánto espacio ocupan los backups?
Depende del tamaño de tu base de datos. Un blog pequeño puede ocupar 1-2 MB, mientras que una tienda online grande puede ocupar cientos de MB. Por eso comprimimos con gzip, para reducir el tamaño. Te recomiendo revisar la carpeta de backups de vez en cuando y borrar los antiguos manualmente si el script no lo hace por ti (aunque el script que te he dado ya borra los de más de 7 días).
¿Es seguro guardar las contraseñas en el script?
Es un riesgo aceptado en entornos de hosting compartido. El archivo backup.sh tiene permisos 700, lo que significa que solo tú (el propietario) puedes leerlo y ejecutarlo. Otros usuarios del servidor no deberían poder verlo. Si tu hosting tiene la opción de usar variables de entorno, es aún más seguro, pero eso es para usuarios avanzados.
¿Funciona esto en otros paneles como Syspanel?
¡Buena pregunta! Si tu hosting usa Syspanel (antes conocido como HestiaCP, y que se accede por el puerto 2106), el proceso es muy similar. Syspanel también tiene un cron job integrado y un administrador de archivos. La ruta de los archivos suele ser /home/usuario/web/dominio/public_html y la de backups /home/usuario/backups. El comando mysqldump es el mismo. Solo tienes que adaptar las rutas.
¿Y si quiero que el backup se guarde en un servicio externo (Google Drive, Dropbox)?
Eso es más avanzado, pero se puede hacer. Necesitarías instalar una herramienta como rclone en tu servidor y modificar el script para que suba el archivo después de crearlo. Es un poco más complejo, pero te ofrece una capa extra de seguridad (si tu servidor falla, los backups siguen a salvo en la nube).
Conclusión: duerme tranquilo
Ya tienes tu sistema de copia de seguridad automática funcionando. Es un proceso que se configura una vez y te ahorra muchos disgustos en el futuro. Recuerda que la clave está en la constancia: un backup de hace un mes no te sirve si perdiste los datos de la última semana.
Te animo a que configures la frecuencia que mejor se adapte a tu web. Si actualizas contenido a diario, hazlo cada día. Si es un sitio más estático, una vez por semana puede ser suficiente.
Y si en algún momento te surge una duda, no dudes en consultar la documentación de tu hosting o contactar con su soporte técnico. ¡Ellos están para ayudarte! Ahora, ve y configura ese cron job, que tu yo del futuro te lo agradecerá.
