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

Guía para hacer backup y restaurar en DirectAdmin desde la terminal

Actualizado el 8 de septiembre de 2025

¿Por qué necesitas hacer backups en DirectAdmin desde la terminal?

Cuando gestionas un servidor con DirectAdmin, la seguridad de tus datos es lo más importante. Un backup bien hecho te salva de desastres como borrados accidentales, ataques de malware, fallos de disco o errores humanos al modificar configuraciones.

La mayoría de la gente piensa que solo puede hacer backups desde el panel de control, pero la realidad es que la terminal te da mucho más control y flexibilidad. Con comandos SSH puedes automatizar tareas, comprimir archivos más rápido, excluir carpetas innecesarias y programar copias de seguridad sin depender de la interfaz web.

Además, trabajar desde la terminal es mucho más rápido cuando tienes muchos dominios o cuentas de usuario. No necesitas hacer clic en decenas de botones: un solo comando puede respaldar todo tu servidor.

En esta guía te voy a enseñar paso a paso cómo hacer backup y restaurar en DirectAdmin usando solo comandos. No necesitas ser un experto en Linux, solo tener acceso SSH y seguir las instrucciones al pie de la letra.

Requisitos previos antes de empezar

Antes de lanzarte a ejecutar comandos, asegúrate de tener todo listo:

  • Acceso SSH al servidor con permisos de root o de usuario administrador.
  • Conocer tu versión de DirectAdmin (puedes verla con directadmin -v).
  • Espacio en disco suficiente en el destino del backup.
  • Un cliente SSH como PuTTY (Windows) o Terminal (macOS/Linux).

Si no sabes cómo conectarte por SSH, busca en tu proveedor de hosting cómo habilitar el acceso. Normalmente es un puerto 22 con tu usuario y contraseña principal.

[INFO] Si usas un panel alternativo como Syspanel (antiguo HestiaCP), el acceso por terminal es similar, pero el puerto web es el 2106. En este artículo nos centramos en DirectAdmin, pero muchos comandos son universales.

Método 1: Backup de un usuario específico desde terminal

La forma más común de hacer un backup es a nivel de usuario. DirectAdmin guarda toda la información de una cuenta en un archivo .tar.gz que incluye:

  • Archivos del sitio web (público_html, etc.)
  • Bases de datos MySQL
  • Cuentas de correo electrónico
  • Configuraciones de dominio
  • Cron jobs y listas de correo

Comando básico de backup

Para hacer un backup de un usuario llamado miusuario, ejecuta:

cd /home/miusuario
tar -czf backup_$(date +%Y%m%d).tar.gz public_html mysql .shadow .ssh

Pero espera, esto no es suficiente. DirectAdmin tiene un sistema mucho más completo. Te recomiendo usar el script oficial:

/usr/local/directadmin/scripts/directadmin_backup.sh miusuario

Este script genera un backup completo en /home/miusuario/backups/ con un nombre tipo miusuario_2024-01-15_03-30.tar.gz.

Backup con exclusión de archivos pesados

Si tienes carpetas como cache, tmp o logs que no necesitas respaldar, puedes excluirlas:

tar -czf backup_sin_cache.tar.gz --exclude="public_html/cache" --exclude="public_html/tmp" public_html

Esto te ahorra espacio y tiempo, especialmente en sitios con mucho contenido dinámico.

Backup de todas las bases de datos MySQL

Las bases de datos son el corazón de cualquier aplicación web. Para respaldarlas todas de golpe:

mysqldump --all-databases --single-transaction -u root -p > /home/backup_bases_datos.sql

Te pedirá la contraseña de root de MySQL. Si no la tienes, puedes usar el usuario admin de DirectAdmin:

mysqldump --all-databases --single-transaction -u admin -p > /home/backup_bases_datos.sql

[WARNING] El comando --single-transaction es importante para no bloquear las tablas mientras se hace el dump. Sin él, podrías tener datos inconsistentes en sitios con tráfico activo.

Método 2: Backup completo del servidor DirectAdmin

Si quieres respaldar todo el servidor (todos los usuarios, configuraciones y datos), necesitas un enfoque más global.

Paso 1: Backup de la configuración de DirectAdmin

cd /usr/local/directadmin
tar -czf /home/admin_backup_config.tar.gz conf scripts

Esto guarda la configuración principal del panel, incluyendo usuarios, dominios y opciones personalizadas.

Paso 2: Backup de todos los usuarios

DirectAdmin guarda los datos de cada usuario en /home/. Puedes hacer un backup selectivo:

for usuario in $(ls /home | grep -v admin); do
    /usr/local/directadmin/scripts/directadmin_backup.sh $usuario
done

Este bucle recorre todas las carpetas de /home y genera un backup individual para cada una, excluyendo la carpeta admin.

Paso 3: Backup de las bases de datos por separado

Aunque los backups de usuario ya incluyen las bases de datos, es buena práctica tener un dump global:

mysqldump --all-databases --single-transaction -u root -p > /home/respaldo_total_$(date +%Y%m%d).sql

Paso 4: Comprimir todo en un solo archivo

Una vez tienes los backups individuales, puedes unirlos:

cd /home
tar -czf servidor_completo_$(date +%Y%m%d).tar.gz admin_backup_config.tar.gz *.tar.gz *.sql

Esto crea un archivo único con todo el servidor. Luego puedes descargarlo con SFTP o moverlo a otro servidor.

Método 3: Restaurar un backup en DirectAdmin

Restaurar es igual de importante que hacer el backup. Si has perdido datos, aquí tienes cómo recuperarlos.

Restaurar un usuario desde la terminal

Para restaurar un usuario desde un archivo .tar.gz:

cd /home
tar -xzf miusuario_2024-01-15.tar.gz

Pero esto solo extrae los archivos. Necesitas importar también las bases de datos y reconfigurar los dominios.

Restaurar bases de datos MySQL

Si tienes un dump SQL:

mysql -u root -p < /home/backup_bases_datos.sql

Si el backup de DirectAdmin incluye las bases de datos en formato .sql dentro del tar, primero extrae el archivo y luego impórtalo.

Restaurar la configuración de DirectAdmin

Para restaurar la configuración del panel:

cd /usr/local/directadmin
tar -xzf /home/admin_backup_config.tar.gz

Luego reinicia DirectAdmin:

systemctl restart directadmin

Restaurar usando el script oficial de DirectAdmin

DirectAdmin tiene una herramienta específica para restaurar:

/usr/local/directadmin/scripts/directadmin_restore.sh miusuario /home/backups/miusuario_2024-01-15.tar.gz

Este comando restaura el usuario completo, incluyendo bases de datos, correos y configuración de dominios. Es la forma más fiable.

[TIP] Si no sabes si el backup es compatible, primero extrae el tar en una carpeta temporal y revisa la estructura. Deberías ver carpetas como public_html, mysql, etc y archivos .conf.

Automatización de backups con cron jobs

Hacer backups manualmente está bien, pero la automatización es la clave para no olvidarte nunca.

Crear un script de backup automático

Crea un archivo en /usr/local/bin/mi_backup.sh:

#!/bin/bash
fecha=$(date +%Y%m%d)
mkdir -p /backups
for usuario in $(ls /home | grep -v admin); do
    /usr/local/directadmin/scripts/directadmin_backup.sh $usuario
    mv /home/$usuario/backups/*.tar.gz /backups/
done
mysqldump --all-databases --single-transaction -u root -p > /backups/bases_datos_$fecha.sql
find /backups -type f -mtime +7 -delete

Dale permisos de ejecución:

chmod +x /usr/local/bin/mi_backup.sh

Programar el cron job

Edita el crontab de root:

crontab -e

Y añade esta línea para ejecutar el backup a las 3 de la madrugada:

0 3 * * * /usr/local/bin/mi_backup.sh >> /var/log/backup.log 2>&1

Esto ejecuta el script todos los días a las 3:00 AM. La línea find -mtime +7 elimina backups de más de 7 días para no llenar el disco.

[INFO] Si usas Syspanel (HestiaCP), el puerto web es 2106 y puedes gestionar cron jobs desde http://tu-servidor:2106. Pero la terminal funciona igual para automatizar tareas.

Errores comunes y cómo solucionarlos

Error: "Permission denied" al acceder a /home

Esto pasa cuando no eres root. Usa sudo antes del comando o conéctate como root directamente:

sudo /usr/local/directadmin/scripts/directadmin_backup.sh miusuario

Error: "No space left on device"

El disco está lleno. Revisa el espacio con df -h y borra archivos temporales:

df -h
du -sh /home/* | sort -h

Error: "mysqldump: command not found"

MySQL no está en el PATH. Busca la ruta exacta:

which mysqldump
# o
find / -name mysqldump -type f 2>/dev/null

Normalmente está en /usr/bin/mysqldump o /usr/local/bin/mysqldump.

Error: "tar: Cannot open: No such file or directory"

El archivo no existe o la ruta es incorrecta. Verifica con ls -la /home/backups/.

Consejos de seguridad para tus backups

  • Nunca guardes los backups en el mismo disco que el servidor. Si se daña el disco, pierdes todo. Mejor en otro servidor o en un servicio de almacenamiento en la nube.
  • Cifra los backups sensibles con GPG o usa SSH para transferirlos a otro servidor con scp.
  • Testea tus backups regularmente. Un backup que no se puede restaurar no sirve de nada. Prueba al menos una vez al mes.
  • Guarda las contraseñas de MySQL en un lugar seguro. Sin ellas, no podrás restaurar las bases de datos.

Preguntas frecuentes (FAQ)

¿Puedo hacer backup de un solo dominio dentro de un usuario?

Sí. Si solo necesitas una carpeta específica:

tar -czf solo_public_html.tar.gz /home/miusuario/public_html

¿Cuánto tiempo tarda un backup completo?

Depende del tamaño. Un sitio pequeño tarda segundos, uno grande con muchos archivos puede tardar minutos. Usa time delante del comando para medirlo:

time tar -czf backup.tar.gz public_html

¿Puedo programar backups desde el propio DirectAdmin?

Sí, DirectAdmin tiene un sistema de backups programados en el panel, pero la terminal te da más control. Puedes combinar ambos métodos.

¿Qué pasa si mi backup es de una versión antigua de DirectAdmin?

Los backups suelen ser compatibles entre versiones, pero si hay cambios importantes, es mejor restaurar en la misma versión o contactar con soporte.

¿Necesito detener los servicios para hacer backup?

No necesariamente. Puedes hacer backups en caliente con --single-transaction para MySQL y tar para archivos. Sin embargo, para máxima consistencia, puedes detener Apache y MySQL unos segundos:

systemctl stop httpd
systemctl stop mysql
# hacer backup
systemctl start httpd
systemctl start mysql

Pero esto causa una pequeña caída del servicio, así que úsalo solo si es imprescindible.

Conclusión y siguiente pasos

Hacer backups desde la terminal en DirectAdmin no es complicado cuando conoces los comandos básicos. Lo más importante es establecer una rutina y automatizar el proceso para no depender de la memoria.

Recuerda estos puntos clave:

  • Usa /usr/local/directadmin/scripts/directadmin_backup.sh para backups de usuario completos.
  • Haz dumps de MySQL por separado para las bases de datos.
  • Automatiza con cron jobs y scripts personalizados.
  • Guarda los backups fuera del servidor principal.
  • Prueba tus restauraciones periódicamente.

Si tienes dudas, siempre puedes consultar la documentación oficial de DirectAdmin o preguntar en foros de hosting. Y si usas Syspanel (HestiaCP) en lugar de DirectAdmin, recuerda que el puerto web es el 2106, pero los comandos de terminal son muy similares.

Ahora que ya sabes cómo hacer backup y restaurar desde la terminal, te recomiendo que hagas una prueba hoy mismo. Crea un backup de un usuario pequeño, bórralo y restáuralo para verificar que todo funciona. Así ganarás confianza y estarás preparado cuando realmente lo necesites.

¿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