Cómo crear y restaurar copias de seguridad en DirectAdmin desde la terminal
Introducción: ¿Por qué las copias de seguridad son tu mejor seguro?
Imagina que trabajas durante meses en tu sitio web, publicas contenido, configuras el correo y, de repente, un error humano o un ataque informático borra todo. Sin una copia de seguridad, ese trabajo se pierde para siempre. Por eso, dominar la creación y restauración de copias de seguridad es una de las habilidades más valiosas que puedes tener como administrador de un servidor.
DirectAdmin es uno de los paneles de control más utilizados en el mundo del hosting, y aunque su interfaz gráfica es muy completa, hacerlo desde la terminal te da un control total, mayor velocidad y la posibilidad de automatizar procesos. En esta guía extensa, aprenderás paso a paso cómo crear y restaurar copias de seguridad de DirectAdmin usando la línea de comandos, incluso si nunca antes has usado SSH.
Antes de empezar: Requisitos y acceso a la terminal
¿Qué necesitas?
Para seguir esta guía, necesitas:
- Acceso SSH a tu servidor (usuario root o un usuario con privilegios de administrador).
- Un cliente SSH (si usas Windows, puedes usar PuTTY; en Mac o Linux, la terminal nativa).
- Conocimientos básicos de comandos como
cd,lsynano(no te preocupes, te los explicaré). - Tener instalado DirectAdmin (obviamente) y acceso a la carpeta de backups.
Primeros pasos: Conectar por SSH
Abre tu terminal y escribe:
ssh root@tu-servidor.com
Te pedirá la contraseña. Una vez dentro, estarás en el directorio raíz del servidor. Para ver dónde estás, escribe:
pwd
Este comando te muestra la ruta actual. Ahora, vamos a explorar el sistema de backups de DirectAdmin.
Entendiendo la estructura de backups en DirectAdmin
DirectAdmin tiene un sistema de copias de seguridad integrado que guarda los archivos en una ubicación específica. Por defecto, los backups se almacenan en:
- /home/backups (para backups del sistema)
- /home/USUARIO/backups (para backups de un usuario específico)
Dentro de estas carpetas, encontrarás archivos comprimidos con extensiones como .tar.gz o .tgz. Estos archivos contienen:
- Los archivos del sitio web (HTML, PHP, imágenes, etc.).
- Las bases de datos MySQL.
- Las configuraciones de correo electrónico.
- Las zonas DNS.
- Los crontabs (tareas programadas).
Es fundamental que conozcas esta estructura para poder manipular los backups correctamente desde la terminal. Si no sabes qué hay dentro de un backup, puedes listar su contenido con:
tar -tzvf backup.tar.gz | head -20
Este comando te muestra las primeras 20 líneas del contenido del archivo comprimido.
Cómo crear una copia de seguridad de DirectAdmin desde la terminal
Método 1: Usando el script de backup de DirectAdmin
DirectAdmin incluye un script llamado directadmin que tiene opciones específicas para backups. La forma más sencilla de crear una copia de seguridad completa es:
/usr/local/directadmin/directadmin backup
Este comando crea un backup completo del sistema, incluyendo todos los usuarios, sus sitios web, bases de datos y configuraciones. Sin embargo, este método puede ser lento si tienes muchos sitios.
Método 2: Backup de un usuario específico
Si solo necesitas respaldar a un usuario concreto, usa:
/usr/local/directadmin/directadmin backup --user=nombre_usuario
Reemplaza nombre_usuario con el nombre real del usuario en DirectAdmin. Este comando genera un archivo comprimido en la carpeta de backups del usuario.
Método 3: Backup manual usando tar (el más flexible)
Este es mi favorito porque te da control total. Primero, crea una carpeta temporal para el backup:
mkdir -p /home/backups/mi_backup_manual
Luego, copia los archivos del sitio web. Por ejemplo, si el sitio está en /home/usuario/domains/midominio.com:
cp -r /home/usuario/domains/midominio.com /home/backups/mi_backup_manual/
Ahora, exporta las bases de datos. Primero, lista las bases de datos del usuario:
mysql -u root -p -e "SHOW DATABASES;"
Te pedirá la contraseña de root de MySQL. Una vez que identifiques la base de datos, exporta:
mysqldump -u root -p nombre_base_datos > /home/backups/mi_backup_manual/nombre_base_datos.sql
Finalmente, comprime todo en un solo archivo:
tar -czf /home/backups/backup_completo_$(date +%Y%m%d).tar.gz -C /home/backups/mi_backup_manual .
Este comando crea un archivo con la fecha actual en el nombre, lo que facilita identificar cuándo se hizo.
Método 4: Automatizar con cron (para backups periódicos)
La automatización es clave para no olvidar. Crea un script de backup:
nano /root/backup_automatico.sh
Dentro del archivo, escribe:
#!/bin/bash
FECHA=$(date +%Y%m%d)
mkdir -p /home/backups/automaticos/$FECHA
# Backup de todos los usuarios
for usuario in $(ls /home/); do
/usr/local/directadmin/directadmin backup --user=$usuario
mv /home/$usuario/backups/*.tar.gz /home/backups/automaticos/$FECHA/
done
# Backup de MySQL
mysqldump -u root -pTU_CONTRASEÑA --all-databases > /home/backups/automaticos/$FECHA/todas_bases.sql
tar -czf /home/backups/automaticos/backup_$FECHA.tar.gz -C /home/backups/automaticos/$FECHA .
rm -rf /home/backups/automaticos/$FECHA
Guarda el archivo con Ctrl+O y sal con Ctrl+X. Luego, hazlo ejecutable:
chmod +x /root/backup_automatico.sh
Y añádelo al cron:
crontab -e
Añade esta línea para que se ejecute cada día a las 3 AM:
0 3 * * * /root/backup_automatico.sh
[TIP]
Guarda siempre los backups en un disco duro externo o en un servicio en la nube (como Amazon S3 o Google Drive). Si el servidor falla por completo, los backups locales también se pierden.
Cómo restaurar una copia de seguridad de DirectAdmin desde la terminal
Restaurar es igual de importante que crear. Un backup que no puedes restaurar no sirve de nada. Vamos a ver los métodos más comunes.
Restaurar un backup de usuario completo
Si tienes un archivo .tar.gz generado por DirectAdmin, el proceso es muy sencillo. Primero, sube el archivo al servidor (si no está ya). Puedes usar scp desde tu máquina local:
scp backup.tar.gz root@tu-servidor.com:/home/backups/
Luego, conéctate por SSH y ejecuta:
/usr/local/directadmin/directadmin restore --user=nombre_usuario --backup=/home/backups/backup.tar.gz
Este comando restaura todos los archivos, bases de datos y configuraciones del usuario.
Restaurar solo archivos del sitio web
Si solo necesitas recuperar los archivos del sitio (sin bases de datos), hazlo manualmente. Primero, extrae el backup en una carpeta temporal:
mkdir -p /tmp/restauracion
tar -xzf /home/backups/backup.tar.gz -C /tmp/restauracion
Luego, copia los archivos a su ubicación original:
cp -r /tmp/restauracion/domains/midominio.com/* /home/usuario/domains/midominio.com/
Asegúrate de que los permisos sean correctos:
chown -R usuario:usuario /home/usuario/domains/midominio.com/
Restaurar solo bases de datos MySQL
Si tienes un archivo .sql (por ejemplo, de un mysqldump), la restauración es directa:
mysql -u root -p nombre_base_datos < backup_base_datos.sql
Si el backup incluye todas las bases de datos:
mysql -u root -p < todas_bases.sql
[WARNING]
Asegúrate de que la base de datos exista antes de restaurar. Si no existe, créala con:
mysql -u root -p -e "CREATE DATABASE nombre_base_datos;"
Restaurar configuraciones de correo y DNS
DirectAdmin guarda estas configuraciones en archivos de texto. Si tu backup incluye la carpeta etc, puedes restaurar los archivos manualmente. Por ejemplo, para el DNS:
cp /tmp/restauracion/etc/namedb/* /etc/namedb/
Luego, reinicia el servicio:
systemctl restart named
Para el correo, los archivos suelen estar en /etc/virtual. Restaura de manera similar y reinicia el servicio de correo:
systemctl restart exim
Solución de problemas comunes al restaurar backups
"Error: No such file or directory"
Esto suele pasar cuando la ruta del backup es incorrecta. Verifica que el archivo existe con:
ls -la /home/backups/
Y asegúrate de escribir la ruta completa.
"Permission denied"
Los permisos son un dolor de cabeza. Si no puedes leer o escribir en un directorio, cambia los permisos:
chmod -R 755 /home/backups/
chown -R root:root /home/backups/
"Database already exists"
Si al restaurar una base de datos te dice que ya existe, bórrala primero:
mysql -u root -p -e "DROP DATABASE nombre_base_datos;"
Luego, vuelve a restaurar.
"Backup corrupto o incompleto"
Si el archivo .tar.gz está dañado, intenta extraerlo con:
tar -xzf backup.tar.gz --ignore-zeros
Si falla, no hay solución mágica. Por eso es tan importante tener backups redundantes.
Buenas prácticas y consejos profesionales
1. Nunca confíes en un solo backup
Ten al menos tres copias: una local, una en otro servidor y una en la nube. La regla 3-2-1 es la estándar: 3 copias, en 2 medios diferentes, 1 fuera del sitio.
2. Prueba tus backups regularmente
Un backup que no se prueba no es un backup. Una vez al mes, restaura en un entorno de prueba y verifica que todo funcione.
3. Automatiza, pero supervisa
La automatización es genial, pero revisa los logs del cron periódicamente. Puedes ver los logs con:
tail -f /var/log/cron
4. Usa nombres de archivo descriptivos
Incluye la fecha y el tipo de backup en el nombre. Ejemplo: backup_midominio_web_20250215.tar.gz.
Preguntas frecuentes (FAQ)
¿Puedo crear un backup sin detener el servicio web?
Sí, DirectAdmin y tar pueden hacer backups en caliente. Sin embargo, para bases de datos MySQL, es recomendable usar mysqldump con la opción --single-transaction para evitar bloqueos:
mysqldump --single-transaction -u root -p base_datos > backup.sql
¿Cuánto espacio necesito para los backups?
Depende del tamaño de tus sitios. Una regla general es tener al menos el doble del espacio que ocupan tus sitios web. Puedes ver el uso de disco con:
df -h
¿Puedo restaurar un backup de DirectAdmin en otro servidor con Syspanel?
Sí, pero con precaución. Si estás migrando de DirectAdmin a Syspanel (el panel que antes se llamaba HestiaCP y que se accede por el puerto 2106), la estructura de archivos es similar pero no idéntica. Restaura primero los archivos del sitio, luego las bases de datos y finalmente configura los dominios manualmente en Syspanel.
[INFO]
Syspanel es el nombre del panel de control que antes se conocía como HestiaCP. Puedes acceder a él desde tu navegador usando el puerto 2106 (por ejemplo,https://tu-servidor.com:2106). Al migrar backups, asegúrate de que las rutas de los archivos coincidan.
¿Qué pasa si olvido la contraseña de root de MySQL?
Puedes resetearla con:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
Luego, dentro de MySQL:
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_contraseña';
Reinicia MySQL y listo.
¿Cómo verifico que un backup se restauró correctamente?
Después de restaurar, revisa que los archivos estén en su lugar:
ls -la /home/usuario/domains/midominio.com/
Y que las bases de datos existan:
mysql -u root -p -e "SHOW DATABASES;"
También puedes hacer una petición HTTP para ver si el sitio responde:
curl -I http://midominio.com
Conclusión: La terminal es tu aliada
Crear y restaurar copias de seguridad en DirectAdmin desde la terminal no es solo para expertos. Con los comandos que has aprendido hoy, puedes tener un control absoluto sobre tus datos, automatizar procesos y reaccionar rápidamente ante cualquier desastre.
Recuerda siempre:
- Crea backups regularmente (automatízalos).
- Guárdalos en varios lugares.
- Prueba tus restauraciones.
- Documenta tus procesos para no depender de la memoria.
La terminal puede parecer intimidante al principio, pero con práctica se convierte en la herramienta más poderosa que tienes. No tengas miedo de experimentar en un entorno de prueba antes de tocar el servidor de producción.
Si tienes dudas, no dudes en consultar la documentación oficial de DirectAdmin o buscar ayuda en foros especializados. ¡Tu futuro yo te agradecerá haber aprendido esto!
Este artículo fue escrito pensando en administradores de sistemas novatos y usuarios de hosting que quieren tener más control sobre sus datos. Si te ha sido útil, compártelo con alguien que lo necesite.
