Las copias de seguridad periódicas son esenciales para cualquier tienda online con Magento. En esta guía aprenderás a crear y restaurar copias de seguridad completas.

¿De qué debes hacer una copia de seguridad?

Una copia de seguridad completa de Magento consta de:

  • Base de datos: todos los productos, pedidos, clientes y la configuración
  • Multimedia: imágenes y archivos subidos (pub/media/)
  • Código: código personalizado y extensiones (app/code/)
  • Configuración: app/etc/env.php y app/etc/config.php
  • Tema: archivos de temas personalizados (app/design/)

Crear una copia de seguridad de la base de datos

Con phpMyAdmin

  1. Inicia sesión en DirectAdmin
  2. Ve a phpMyAdmin
  3. Selecciona tu base de datos de Magento
  4. Haz clic en Exportar
  5. Elige Rápido para una exportación estándar
  6. Haz clic en Continuar y descarga el archivo SQL

Por línea de comandos

# Ve a la raíz de Magento
cd /pad/naar/magento

# Crea una copia de seguridad de la base de datos con marca de tiempo
mysqldump -u gebruiker -p database_naam > backup_$(date +%Y%m%d).sql

Los datos de la base de datos (nombre, usuario, contraseña) están en app/etc/env.php, en 'db' => 'connection' => 'default'. En una tienda que sigue en línea, añade --single-transaction para que el volcado sea coherente sin bloquear tablas: mysqldump --single-transaction -u gebruiker -p database_naam > backup.sql.

Con la CLI de Magento

Magento también tiene su propio comando de copia de seguridad. Esa función está desactivada de forma predeterminada, así que primero debes activarla:

bin/magento config:set system/backup/functionality_enabled 1
bin/magento setup:backup --db

Con --code y --media incluyes también el código y los archivos multimedia. Las copias de seguridad se guardan en var/backups/. Adobe marca esta función como obsoleta; para tiendas grandes, mysqldump es más fiable.

Copia de seguridad comprimida

Para bases de datos grandes:

mysqldump -u gebruiker -p database_naam | gzip > backup_$(date +%Y%m%d).sql.gz

Crear una copia de seguridad de los archivos

Con File Manager

  1. Ve a File Manager en DirectAdmin
  2. Ve a tu instalación de Magento
  3. Selecciona las carpetas importantes:
    • pub/media/ (imágenes)
    • app/code/ (módulos personalizados)
    • app/design/ (temas)
    • app/etc/ (configuración)
  4. Haz clic en Compress para crear un ZIP
  5. Descarga el ZIP

Por línea de comandos

# Sube un nivel por encima de la raíz de Magento
cd /pad/naar/

# Crea una copia de seguridad completa
tar -czvf magento_backup_$(date +%Y%m%d).tar.gz magento/

# O solo de carpetas concretas
tar -czvf media_backup_$(date +%Y%m%d).tar.gz magento/pub/media/

Por FTP

  1. Conéctate con un cliente FTP (FileZilla)
  2. Descarga toda la carpeta de Magento
  3. O descarga solo las carpetas críticas

Copia de seguridad de Magento

Magento incluye una función integrada de copia de seguridad:

Copia de seguridad desde el panel de administración

  1. Ve a System > Tools > Backups (está desactivada de forma predeterminada; actívala en Stores > Configuration > Advanced > System > Backup Settings; Adobe marca esta función como obsoleta)
  2. Elige el tipo de copia de seguridad:
    • System Backup: solo archivos
    • Database Backup: solo base de datos
    • Database and Media Backup: ambos (recomendado)
  3. Haz clic en el botón de la copia de seguridad que quieras
  4. Espera a que la copia de seguridad termine

Atención: este método puede agotar el tiempo de espera en tiendas grandes. En ese caso, usa la línea de comandos.

Copia de seguridad por CLI

Para hacer una copia de seguridad por línea de comandos, usa mysqldump o bin/magento setup:backup, como se describe más arriba en la creación de una copia de seguridad de la base de datos. Los comandos support:backup:db y support:backup:code que aparecen en algunas guías pertenecen a las Support Tools de Adobe Commerce y no existen en Magento Open Source.

Restaurar una copia de seguridad

Restaurar la base de datos con phpMyAdmin

  1. Ve a phpMyAdmin
  2. Selecciona tu base de datos (o crea una nueva)
  3. Haz clic en Importar
  4. Selecciona tu archivo SQL de copia de seguridad
  5. Haz clic en Continuar

Restaurar la base de datos por línea de comandos

# Descomprime si hace falta
gunzip backup.sql.gz

# Importa la base de datos
mysql -u gebruiker -p database_naam < backup.sql

Restaurar los archivos

  1. Sube la copia de seguridad al servidor (por FTP o con File Manager)
  2. Descomprime el archivo en la ubicación correcta
  3. Comprueba los permisos de los archivos
# Descomprimir
tar -xzvf magento_backup.tar.gz

# Restablecer los permisos
find var generated pub/static pub/media -type d -exec chmod 755 {} \;
find var generated pub/static pub/media -type f -exec chmod 644 {} \;

Acciones después de restaurar

# Actualizar la base de datos y los módulos
bin/magento setup:upgrade

# Vaciar la caché
bin/magento cache:clean
bin/magento cache:flush

# Reconstruir los índices
bin/magento indexer:reindex

# Compilar DI
bin/magento setup:di:compile

# Desplegar el contenido estático
bin/magento setup:static-content:deploy nl_NL

Copias de seguridad automáticas

Con una tarea cron

Configura una tarea cron para hacer copias de seguridad automáticas:

# Copia de seguridad diaria de la base de datos a las 3:00
0 3 * * * /usr/bin/mysqldump -u user -p'pass' database | gzip > /backups/db_$(date +\%Y\%m\%d).sql.gz

# Copia de seguridad completa semanal los domingos a las 4:00
0 4* * 0 tar -czvf /backups/full_$(date +\%Y\%m\%d).tar.gz /pad/naar/magento

Rotación de copias de seguridad

Elimina automáticamente las copias de seguridad antiguas:

# Elimina las copias de seguridad de más de 30 días
find /backups/ -name*.gz" -mtime +30 -delete

Almacenamiento externo de copias de seguridad

Guarda las copias de seguridad fuera del servidor:

  • Almacenamiento en la nube (AWS S3, Google Cloud, Dropbox)
  • Servidor FTP externo
  • Descarga local al ordenador

Buenas prácticas

  1. Copias de seguridad diarias de la base de datos: automatízalas con tareas cron
  2. Copias de seguridad completas semanales: incluidos los archivos
  3. Prueba tus copias de seguridad: restáuralas periódicamente en un entorno de pruebas
  4. Almacenamiento externo: conserva copias fuera del servidor
  5. Documenta: anota dónde están las copias de seguridad
  6. Cifrado: cifra las copias de seguridad con datos sensibles
  7. Conservación: guarda un historial de al menos 30 días