🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo programar un backup automático de bases de datos en cPanel

Actualizado el 22 de junio de 2026

¿Por qué necesitas un backup automático de tu base de datos?

Si tienes una web con WordPress, una tienda online o cualquier aplicación que use MySQL, tu base de datos es el corazón de tu negocio. Ahí se guardan tus artículos, los pedidos de tus clientes, tus usuarios y toda la configuración de tu web. Perder esa información por un error humano, un hackeo o un fallo del servidor sería un desastre absoluto.

Programar un backup automatico cpanel es como ponerle un cinturón de seguridad a tu web: no lo notas hasta que lo necesitas, pero cuando ocurre un imprevisto, te salva la vida. La buena noticia es que no necesitas ser un experto en informática para hacerlo. cPanel incluye herramientas muy sencillas que, combinadas con un poco de lógica, te permitirán tener copias de seguridad diarias sin que tengas que preocuparte de nada.

En esta guía, paso a paso, te voy a enseñar a configurar un sistema de copias de seguridad totalmente automatizado. Vamos a usar el planificador de tareas de cPanel (Cron Jobs) y un pequeño script en PHP o Bash. No te asustes, te explicaré cada línea de código para que sepas exactamente qué hace.


Entendiendo las herramientas: Cron Jobs y MySQL

Antes de meternos en faena, vamos a explicar un par de conceptos para que sepas qué estamos tocando.

¿Qué es un Cron Job?

Un Cron Job es, básicamente, un despertador para tu servidor. Le dices "ejecuta este comando a las 3 de la mañana todos los días" y el servidor lo hace sin que tú estés delante. Es la forma estándar de automatizar tareas en sistemas Linux (que es lo que usa la mayoría de los hosting).

¿Qué es mysqldump?

mysqldump es una herramienta que viene instalada en todos los servidores con cPanel. Su función es crear un archivo de texto con todo el contenido de tu base de datos: las tablas, los registros, las configuraciones... Es la forma más fiable de hacer una copia de seguridad de MySQL. Piensa en ello como una "fotografía" completa de tu base de datos en un solo archivo .sql.


Método 1: El script de Bash (El más fiable y rápido)

Este es el método que yo recomiendo para la mayoría de los casos. Usaremos un script en Bash (el lenguaje de comandos de Linux) que se encargará de hacer el volcado de la base de datos y guardarlo con la fecha del día. Luego, lo conectaremos a un Cron Job.

Paso 1: Crear el script de backup

Vamos a crear un archivo de texto. Puedes hacerlo desde el Administrador de Archivos de cPanel o desde un editor de texto como Notepad++ en tu ordenador. Yo prefiero hacerlo desde cPanel para que ya esté en el servidor.

  1. Entra en cPanel y busca la sección Archivos.
  2. Haz clic en Administrador de Archivos.
  3. Navega hasta tu carpeta raíz (normalmente public_html o una carpeta personal si tienes un plan de hosting con subdominios).
  4. Crea una carpeta nueva llamada backups. Esta será nuestra carpeta segura, aunque te recomiendo que luego la protejas con contraseña o la muevas fuera del directorio público.

Dentro de la carpeta backups, crea un archivo nuevo llamado backup_db.sh. Haz clic derecho y selecciona Editar.

Ahora, pega el siguiente código:

#!/bin/bash

# Configuración
DB_NAME="tu_nombre_de_base_de_datos"
DB_USER="tu_usuario_de_base_de_datos"
DB_PASS="tu_contraseña_de_base_de_datos"
BACKUP_DIR="/home/tu_usuario_cpanel/backups"
FECHA=$(date +"%Y-%m-%d_%H-%M-%S")

# Crear el directorio de backup si no existe
mkdir -p "$BACKUP_DIR"

# Comando para hacer el backup
mysqldump --opt --user="$DB_USER" --password="$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/$DB_NAME-$FECHA.sql"

# Comprobar si el backup se ha realizado correctamente
if [ $? -eq 0 ]; then
    echo "Backup de $DB_NAME completado en $FECHA"
else
    echo "ERROR: Fallo en el backup de $DB_NAME"
fi

Desglose del código:

  • #!/bin/bash: Indica que es un script de Bash.
  • DB_NAME, DB_USER, DB_PASS: Son las variables que tienes que rellenar con los datos de tu base de datos. Puedes encontrarlos en la sección Bases de Datos MySQL de cPanel.
  • BACKUP_DIR: La ruta donde se guardarán los backups. IMPORTANTE: Cambia tu_usuario_cpanel por tu nombre de usuario real de cPanel.
  • FECHA=$(date +"%Y-%m-%d_%H-%M-%S"): Genera una marca de tiempo para que cada backup tenga un nombre único.
  • mysqldump --opt ...: Es el comando que hace el volcado. El --opt optimiza el proceso.
  • if [ $? -eq 0 ]; then: Comprueba si el comando anterior funcionó bien. Si es así, muestra un mensaje de éxito.

Paso 2: Configurar el Cron Job

Ahora vamos a decirle al servidor que ejecute este script automáticamente.

  1. Ve a la sección Avanzado de cPanel y haz clic en Cron Jobs.
  2. En el campo Comando, escribe lo siguiente:
bash /home/tu_usuario_cpanel/backups/backup_db.sh
  1. Ahora viene la parte interesante: configurar la frecuencia. Puedes elegir entre las opciones predefinidas (como "Una vez al día") o configurarlo manualmente.

Para un backup diario a las 4:00 AM, usa esta configuración:

  • Minuto: 0
  • Hora: 4
  • Día: *
  • Mes: *
  • Día de la semana: *

Esto significa "a las 4:00, todos los días, todos los meses, cualquier día de la semana".

  1. Haz clic en Añadir nueva tarea Cron.

¡Y listo! Ya tienes tu backup automatico cpanel funcionando. Cada noche, el servidor hará una copia de tu base de datos y la guardará en tu carpeta backups.


Método 2: Usar el Backup de cPanel (Más visual, menos control)

cPanel tiene su propia herramienta de backup, pero no te permite programarla directamente. Sin embargo, podemos usar un Cron Job para llamar a una URL que active el backup. Este método es menos recomendable porque es más lento y puede dar problemas si el servidor está muy cargado, pero es más visual para principiantes.

Paso 1: Configurar un cron job con la URL de cPanel

Vamos a usar una URL especial que cPanel tiene para hacer backups. Ve a Cron Jobs y en el campo Comando, escribe:

wget -q -O /dev/null "https://tu-servidor:2083/frontend/jupiter/backup/dofullbackup.html"

Pero espera, este método tiene truco. Necesitas autenticarte. La forma más segura es usar un script que se autentique con tus credenciales. Es más complejo y no lo recomiendo para usuarios básicos porque si pones la contraseña en el comando, cualquiera que vea el cron job podría leerla.


Método 3: Usar PHP (Útil si tu hosting no permite Bash)

Algunos hosting muy restrictivos no te dejan ejecutar scripts Bash directamente. En ese caso, podemos usar un script PHP.

Paso 1: Crear el script PHP

Crea un archivo llamado backup.php en tu carpeta backups (o en cualquier lugar protegido). Pega este código:

<?php
// Configuración
$db_host = 'localhost';
$db_user = 'tu_usuario';
$db_pass = 'tu_contraseña';
$db_name = 'tu_base_de_datos';
$backup_dir = '/home/tu_usuario/backups/';
$fecha = date('Y-m-d_H-i-s');

// Comando mysqldump
$comando = "mysqldump --opt --host=$db_host --user=$db_user --password=$db_pass $db_name > $backup_dir$db_name-$fecha.sql";

// Ejecutar
system($comando, $output);

// Verificar
if ($output == 0) {
    echo "Backup completado correctamente";
} else {
    echo "Error en el backup";
}
?>

Paso 2: Configurar el Cron Job

En el cron job, en lugar de llamar a bash, llamaremos al intérprete de PHP:

php /home/tu_usuario_cpanel/backups/backup.php

¿Cómo automatizar el borrado de backups antiguos?

Si haces un backup diario, en un mes tendrás 30 archivos. En un año, 365. Esto llenará tu espacio de disco rápidamente. Es fundamental automatizar también la limpieza.

Podemos modificar nuestro script de Bash para que solo conserve los últimos 7 o 14 backups. Añade esta línea al final del script:

find "$BACKUP_DIR" -name "*.sql" -type f -mtime +7 -delete

¿Qué hace?

  • find: Busca archivos.
  • $BACKUP_DIR: En nuestra carpeta de backups.
  • -name "*.sql": Que terminen en .sql.
  • -type f: Que sean archivos (no directorios).
  • -mtime +7: Que tengan más de 7 días de antigüedad.
  • -delete: Los borra.

Con esto, tu sistema de backup automatico cpanel se mantiene limpio y no te quedarás sin espacio en el servidor.


Errores comunes y cómo solucionarlos

Aquí van algunos problemas típicos que te puedes encontrar:

El backup se genera vacío o con errores

Esto suele pasar por credenciales incorrectas. Revisa que el usuario de la base de datos tenga permisos de lectura y exportación. Puedes comprobarlo en la sección Bases de datos MySQL de cPanel, editando el usuario y asegurándote de que tiene marcada la casilla ALL PRIVILEGES.

El cron job no se ejecuta

Revisa que la ruta del script sea correcta. Un error común es usar /home/usuario en lugar de /home/tuusuario (sin guion). También verifica que el archivo tenga permisos de ejecución. Puedes hacerlo desde el Administrador de Archivos: haz clic derecho sobre el archivo, selecciona Permisos y pon 755.

¿Y si mi hosting usa Syspanel?

Si tu proveedor usa el panel Syspanel (antes conocido como HestiaCP), el proceso es muy similar, pero el acceso al panel se hace por el puerto 2106 (es decir, https://tu-dominio:2106). Dentro de Syspanel, busca la sección Cron Jobs o Planificador de Tareas y sigue los mismos pasos. Los comandos y la lógica son idénticos, ya que también se basa en Linux.


Preguntas Frecuentes (FAQ)

¿Puedo hacer un backup automatico cpanel solo de una tabla específica?

Sí, puedes. En el comando mysqldump, especifica el nombre de la tabla después del nombre de la base de datos:

mysqldump --opt --user="$DB_USER" --password="$DB_PASS" "$DB_NAME" "nombre_de_tabla" > "$BACKUP_DIR/$DB_NAME-$FECHA.sql"

¿Qué diferencia hay entre un backup de cPanel y un backup de MySQL?

El backup de cPanel (el que haces desde "Copias de seguridad") incluye todo: archivos, correos, configuraciones y bases de datos. Es una copia completa de tu cuenta. El backup de MySQL (el que hacemos con mysqldump) solo incluye la base de datos. Para una recuperación rápida de contenido, el backup de MySQL es suficiente y más rápido de restaurar.

¿Cuánto tiempo tarda en ejecutarse?

Depende del tamaño de tu base de datos. Una base de datos de 10 MB tardará unos segundos. Una de 1 GB puede tardar varios minutos. Por eso es recomendable programarlo en horas de bajo tráfico (de 3 a 6 AM).

¿Puedo enviar el backup por correo electrónico?

Sí, pero no lo recomiendo para bases de datos grandes. Puedes modificar el script para que, después de hacer el backup, envíe un correo con el archivo adjunto. Pero los servidores de correo suelen tener límites de tamaño (10-25 MB), así que solo es viable si tu base de datos es muy pequeña.

¿Qué hago si mi hosting no me deja usar Cron Jobs?

Si tu plan de hosting es muy básico, es posible que no tengas acceso a Cron Jobs. En ese caso, puedes usar un servicio externo de monitorización que haga una solicitud HTTP a un script PHP que active el backup. Pero esto ya es más avanzado.

¿Cada cuánto tiempo debo hacer el backup?

Depende de la frecuencia con la que actualices tu web. Si publicas a diario, haz un backup diario. Si es un blog personal con una entrada al mes, un backup semanal es suficiente. Mi consejo: mínimo una vez al día. El espacio que ocupa es mínimo comparado con el dolor de cabeza que te ahorras.


Conclusión: La tranquilidad de un backup automático

Configurar un cron job backup mysql no es solo una buena práctica, es una necesidad. Hacerlo de forma manual es un error: lo olvidarás, te cansarás o simplemente no tendrás tiempo. Automatizarlo, como has visto, es un proceso de 10 minutos que te dará una tranquilidad inmensa.

Ya sea que uses el método de Bash (el más robusto), el de PHP (el más compatible) o la herramienta nativa de cPanel, lo importante es que empieces a hacerlo hoy mismo. No esperes a tener un problema para darte cuenta de que no tenías una copia de seguridad reciente.

Recuerda: en el mundo del hosting, hay dos tipos de usuarios: los que ya han perdido datos y los que aún no han perdido datos. No quieras ser el segundo. Configura tu cpanel backup base de datos ahora y duerme tranquilo. Si tienes alguna duda, revisa la sección de preguntas frecuentes o contacta con tu proveedor de hosting. ¡Buena suerte!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel