Cómo hacer backup automático en cPanel con cron jobs
¿Por qué necesitas un backup automático en cPanel?
Si tienes una página web, sabrás que todo tu trabajo (textos, imágenes, base de datos, configuraciones) vive en un servidor. Y aunque los servidores suelen ser fiables, no son infalibles: un error humano, un hackeo, una actualización fallida o un problema en el disco duro pueden borrar tu sitio en segundos. Por eso, hacer copias de seguridad periódicas es la única forma de dormir tranquilo.
La buena noticia es que no necesitas acordarte de hacerlo manualmente cada semana. Con cPanel y sus cron jobs, puedes programar un backup automático que se ejecute solo, a la hora que tú quieras, sin que tengas que levantar un dedo. En esta guía te voy a enseñar, paso a paso y sin tecnicismos, cómo configurarlo.
¿Qué es un cron job y por qué es perfecto para backups?
Un cron job (o trabajo programado) es una tarea que el servidor ejecuta automáticamente en un horario fijo. Piensa en ello como una alarma que le dices al sistema: "cada día a las 4 de la mañana, haz una copia de seguridad".
Es la herramienta ideal para el backup automático porque:
- Funciona sin intervención: una vez configurado, se ejecuta solo.
- Es flexible: puedes elegir la frecuencia (diaria, semanal, mensual).
- No consume tu tiempo: no tienes que acordarte de nada.
cPanel ya incluye una herramienta de backups, pero con los cron jobs puedes automatizarla por completo. Vamos a verlo.
Requisitos previos antes de empezar
Antes de lanzarnos a configurar nada, asegúrate de tener:
- Acceso a cPanel de tu hosting (normalmente en
tudominio.com/cpanel). - Credenciales de FTP o SFTP (te harán falta para guardar el backup en otro sitio).
- Conocimiento básico de rutas de archivos (no te preocupes, te lo explico).
- Un espacio externo para guardar las copias (puede ser otro hosting, un servidor en la nube o incluso tu ordenador).
[WARNING] No guardes el backup en el mismo servidor donde está tu web. Si el servidor falla, perderías la web y la copia. Guárdalo siempre en un lugar externo.
Método 1: Backup automático con la herramienta de cPanel y cron jobs
Este es el método más sencillo y no requiere conocimientos de programación. Usaremos el script de backup que cPanel incluye por defecto.
Paso 1: Encuentra la ruta de tu cuenta
Lo primero es saber dónde está tu cuenta en el servidor. Normalmente, en cPanel tienes una carpeta llamada public_html donde está tu web. La ruta completa suele ser algo como:
/home/tuusuario/public_html
Pero para el backup, necesitamos la raíz de tu cuenta, que es /home/tuusuario. Puedes encontrarla en la sección "Información de la cuenta" o en el Administrador de archivos (fíjate en la barra de direcciones).
Paso 2: Crea un script de backup
cPanel no permite programar su backup nativo directamente con cron jobs, pero podemos usar un pequeño script que llame a la función de backup. Vamos a crearlo:
- Entra en Administrador de archivos de cPanel.
- Navega hasta
/home/tuusuario(tu carpeta raíz). - Haz clic en + Archivo y crea uno llamado
backup_diario.sh. - Haz clic derecho sobre el archivo y elige Editar. Pega este contenido:
#!/bin/bash
/scripts/pkgacct --skip-dns "$USER" /backups/backup_$(date +%Y%m%d).tar.gz
Este comando genera un backup completo de tu cuenta (incluyendo bases de datos) y lo guarda en /backups/ con la fecha del día.
[TIP] Si tu hosting usa una estructura diferente, consulta con tu proveedor. Pero en la mayoría de casos,
/scripts/pkgacctfunciona sin problemas.
Paso 3: Dale permisos de ejecución
Un script necesita permiso para ejecutarse. Vuelve al Administrador de archivos, selecciona el archivo backup_diario.sh, haz clic en Permisos y pon 755 (o simplemente marca todas las casillas de ejecución).
Paso 4: Configura el cron job
Ahora viene la parte clave:
- En cPanel, busca la sección Trabajos Cron (o "Cron Jobs").
- Verás un formulario con 5 campos: Minuto, Hora, Día, Mes y Día de la semana.
- Para un backup diario a las 3:00 AM, rellena así:
- Minuto:
0 - Hora:
3 - Día:
* - Mes:
* - Día de la semana:
*
- Minuto:
- En el campo de Comando, escribe:
/home/tuusuario/backup_diario.sh
- Pulsa Agregar nuevo trabajo cron.
¡Y listo! Cada día a las 3 de la mañana, el servidor ejecutará el script y generará una copia completa de tu cuenta.
Método 2: Backup de bases de datos MySQL con cron jobs
Si solo te preocupa tu base de datos (por ejemplo, si tu web es una tienda o un blog con muchos comentarios), puedes hacer un backup solo de MySQL. Es más rápido y ligero.
Paso 1: Crea un script de backup de MySQL
Crea otro archivo en tu carpeta raíz, por ejemplo backup_mysql.sh, y pega:
#!/bin/bash
FECHA=$(date +%Y%m%d)
mkdir -p /home/tuusuario/backups
mysqldump --all-databases > /home/tuusuario/backups/bd_$FECHA.sql
Este script guarda todas tus bases de datos en un archivo comprimido (mejor aún, puedes comprimirlo con gzip):
#!/bin/bash
FECHA=$(date +%Y%m%d)
mkdir -p /home/tuusuario/backups
mysqldump --all-databases | gzip > /home/tuusuario/backups/bd_$FECHA.sql.gz
Paso 2: Configura el cron job
Igual que antes, ve a Cron Jobs y configura, por ejemplo, un backup semanal los domingos a las 5:00 AM:
- Minuto:
0 - Hora:
5 - Día:
* - Mes:
* - Día de la semana:
0(domingo)
Y el comando:
/home/tuusuario/backup_mysql.sh
[INFO] Los backups de bases de datos son críticos si usas WordPress, WooCommerce o cualquier sistema con usuarios y pedidos. No los descuides.
Método 3: Backup automático con Syspanel (antes HestiaCP)
Si tu hosting usa Syspanel (conocido anteriormente como HestiaCP, que se accede por el puerto 2106), el proceso es ligeramente diferente, pero igual de sencillo.
En Syspanel, los cron jobs se gestionan desde el panel de control web, no desde cPanel. Aquí te explico cómo:
- Accede a tu panel Syspanel:
https://tudominio.com:2106. - Ve a la sección Cron Jobs (normalmente en el menú lateral).
- Crea una nueva tarea con la frecuencia que quieras.
- En el comando, usa el script de backup que Syspanel proporciona. Por ejemplo:
/usr/local/hestia/bin/v-backup-user admin
(Reemplaza admin con tu nombre de usuario).
[TIP] Syspanel es una alternativa gratuita y ligera a cPanel. Si tu proveedor lo usa, no busques "cPanel" en tu panel, busca "Syspanel" o "Cron Jobs" en el menú.
Método 4: Backup remoto con FTP (la opción más segura)
Como te dije antes, guardar el backup en el mismo servidor no es ideal. Lo mejor es enviarlo a otro lugar. Con cron jobs puedes hacer que el backup se suba automáticamente a un servidor FTP externo.
Paso 1: Prepara el script con FTP
Usaremos el comando curl o lftp para subir el archivo. Un ejemplo con curl:
#!/bin/bash
FECHA=$(date +%Y%m%d)
tar -czf /home/tuusuario/backup_$FECHA.tar.gz /home/tuusuario/public_html
curl -T /home/tuusuario/backup_$FECHA.tar.gz ftp://usuario:password@ftp.servidor-externo.com/backups/
Paso 2: Configura el cron job
Igual que antes, programa la tarea. Por ejemplo, cada lunes a las 2:00 AM:
- Minuto:
0 - Hora:
2 - Día:
* - Mes:
* - Día de la semana:
1
Comando:
/home/tuusuario/backup_remoto.sh
[WARNING] No pongas contraseñas en texto plano en un script que esté en el servidor. Si alguien accede a tu cuenta, las vería. Mejor usa un archivo
.netrccon permisos restringidos o variables de entorno.
Errores comunes y cómo solucionarlos
Aunque el proceso es sencillo, es normal que surjan dudas. Aquí tienes los errores más típicos:
1. El cron job no se ejecuta
- Revisa que la hora del servidor sea la correcta (puede estar en UTC y no en tu zona horaria).
- Comprueba que el script tiene permisos de ejecución (755).
- Mira los logs del cron en cPanel (sección "Registros de Cron" o en
~/cron.log).
2. El backup se genera pero está vacío
- Asegúrate de que la ruta del script es correcta.
- Prueba a ejecutar el script manualmente desde la terminal (si tienes acceso SSH) para ver errores.
3. No sé qué frecuencia elegir
- Diaria: si tu web se actualiza varias veces al día (tiendas, foros, blogs activos).
- Semanal: si tu contenido cambia poco (web corporativa, portafolio).
- Mensual: para sitios estáticos.
[INFO] No hay una frecuencia perfecta. Lo importante es que la copia sea reciente cuando la necesites. Si no sabes, empieza con semanal.
Preguntas frecuentes (FAQ)
¿Puedo hacer un backup automático sin saber programar?
Sí. El método 1 usa un script predefinido que solo tienes que copiar y pegar. No necesitas entender cada línea, solo seguir los pasos.
¿Cuánto espacio ocupa un backup?
Depende del tamaño de tu web. Un sitio pequeño puede ocupar 100 MB, una tienda grande varios GB. Asegúrate de tener espacio suficiente en el destino externo.
¿Puedo restaurar un backup hecho con cron jobs?
Sí. Los backups generados por pkgacct se restauran desde cPanel en Copias de seguridad → Restaurar. Los de MySQL se importan con phpMyAdmin o línea de comandos.
¿Qué pasa si el cron job falla un día?
No pasa nada. El siguiente día se ejecutará de nuevo. Si falla varios días seguidos, revisa los logs y el estado del servidor.
¿El backup automático afecta al rendimiento de mi web?
Los backups consumen recursos del servidor. Por eso se recomienda programarlos en horas de bajo tráfico (madrugada). Si tu web tiene mucho tráfico, usa el backup de MySQL en lugar del completo.
Conclusión y buenas prácticas
Configurar un backup automático en cPanel con cron jobs es una de las mejores inversiones de tiempo que puedes hacer por tu web. En menos de 10 minutos, tendrás tu sistema de copias funcionando solo.
Resumen de lo que hemos visto:
- Método 1: Backup completo de la cuenta con
pkgacct. - Método 2: Backup solo de bases de datos MySQL.
- Método 3: Alternativa con Syspanel (puerto 2106).
- Método 4: Backup remoto con FTP para máxima seguridad.
Buenas prácticas finales:
- Guarda siempre los backups en un lugar externo.
- Prueba una restauración al menos una vez al mes (no sirve de nada tener backups si no sabes restaurarlos).
- Revisa los logs del cron de vez en cuando para asegurarte de que todo funciona.
- Si cambias de proveedor de hosting, reconfigura los cron jobs en tu nuevo panel.
Ahora ya sabes cómo hacer que tu web se respalde sola. Configura tu primer cron job hoy y olvídate del miedo a perder tu trabajo. ¡Tu yo del futuro te lo agradecerá!
