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

PrestaShop: Cómo hacer copias de seguridad de tu tienda

Actualizado el 14 de octubre de 2025

¿Por qué son importantes las copias de seguridad en PrestaShop?

Tener una tienda online con PrestaShop implica gestionar una base de datos con productos, clientes, pedidos y configuraciones, además de miles de archivos (temas, módulos, imágenes, etc.). Cualquier error humano, ataque informático o fallo del servidor puede borrar todo en segundos. Por eso, las copias de seguridad periódicas son tu mejor seguro. Como SysAdmin, tu responsabilidad es garantizar que puedas restaurar la tienda en minutos, no en días.

En esta guía aprenderás a hacer backups manuales y automatizados, tanto de la base de datos como de los archivos de tu PrestaShop. Usaremos herramientas de línea de comandos (SSH) y scripts sencillos. Todo explicado paso a paso, como si estuvieras al lado de un técnico amigable.


Requisitos previos antes de empezar

Antes de ejecutar cualquier comando, asegúrate de tener:

  • Acceso SSH a tu servidor (usuario con permisos sudo o root).
  • Conocimiento de la ruta donde está instalado PrestaShop (por ejemplo, /var/www/mitienda).
  • Credenciales de la base de datos MySQL (usuario, contraseña, nombre de la BD). Puedes encontrarlas en el archivo app/config/parameters.php de tu PrestaShop.
  • Espacio en disco suficiente para almacenar los backups (mínimo el doble del tamaño actual de tu tienda).
  • (Opcional) Un panel de control como Syspanel (antes HestiaCP) en el puerto 2106, que facilita la gestión de backups.

[INFO] Si usas Syspanel, puedes acceder a backups programados desde la interfaz web en https://tudominio.com:2106. Sin embargo, esta guía se centra en métodos manuales para que entiendas el proceso a fondo.


Copia de seguridad de la base de datos de PrestaShop

La base de datos contiene toda la información dinámica: productos, clientes, pedidos, configuraciones. Es la parte más crítica.

1. Backup manual con mysqldump

Conéctate por SSH a tu servidor y ejecuta:

mysqldump -u usuario_bd -p nombre_bd > /ruta/backups/prestashop_bd_$(date +%Y%m%d_%H%M%S).sql

Te pedirá la contraseña. El archivo se guardará con la fecha y hora actual. Ejemplo de salida: prestashop_bd_20250315_143022.sql.

[TIP] Si no recuerdas el nombre de la base de datos, revisa el archivo app/config/parameters.php de tu PrestaShop. Busca la línea 'database_name'.

2. Backup comprimido para ahorrar espacio

Los archivos SQL pueden ser enormes. Compresión con gzip:

mysqldump -u usuario_bd -p nombre_bd | gzip > /ruta/backups/prestashop_bd_$(date +%Y%m%d).sql.gz

Para descomprimir después: gunzip archivo.sql.gz.

3. Backup automatizado con cron (recomendado)

Crea un script ejecutable, por ejemplo /usr/local/bin/backup_prestashop_db.sh:

#!/bin/bash
# Variables
DB_USER="usuario_bd"
DB_PASS="contraseña_bd"
DB_NAME="nombre_bd"
BACKUP_DIR="/var/backups/prestashop"
FECHA=$(date +%Y%m%d_%H%M%S)

# Crear directorio si no existe
mkdir -p $BACKUP_DIR

# Realizar backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/prestashop_bd_$FECHA.sql.gz

# Eliminar backups mayores a 7 días
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete

Dale permisos de ejecución: chmod +x /usr/local/bin/backup_prestashop_db.sh

Luego añádelo al crontab:

crontab -e

Añade esta línea para ejecutarlo cada día a las 3:00 AM:

0 3 * * * /usr/local/bin/backup_prestashop_db.sh

[WARNING] Nunca guardes contraseñas en texto plano en un script si otros usuarios pueden acceder al servidor. Usa archivos de configuración con permisos 600 o variables de entorno.


Copia de seguridad de los archivos de PrestaShop

Los archivos incluyen el código fuente, temas, módulos, imágenes subidas y configuraciones. Suelen ocupar varios GB.

1. Backup manual con tar y gzip

Desde SSH, navega al directorio raíz de tu tienda y ejecuta:

tar -czf /ruta/backups/prestashop_files_$(date +%Y%m%d_%H%M%S).tar.gz /var/www/mitienda

Esto comprimirá toda la carpeta. Si quieres excluir la carpeta cache o log (para ahorrar espacio):

tar -czf /ruta/backups/prestashop_files_$(date +%Y%m%d).tar.gz --exclude='var/cache' --exclude='var/log' /var/www/mitienda

2. Backup incremental con rsync (para tiendas grandes)

Si tu tienda ocupa más de 5 GB, hacer un tar completo cada día puede ser lento y consumir mucho espacio. Usa rsync para sincronizar solo los cambios:

rsync -avz --delete /var/www/mitienda/ /ruta/backups/mitienda_rsync/

Luego puedes comprimir esa copia local con tar una vez por semana.

3. Script combinado (base de datos + archivos)

Crea un script que haga todo junto:

#!/bin/bash
# Variables
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/var/backups/prestashop"
SITE_DIR="/var/www/mitienda"
DB_USER="usuario"
DB_PASS="contraseña"
DB_NAME="nombre_bd"

mkdir -p $BACKUP_DIR

# Backup BD
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/db_$DATE.sql.gz

# Backup archivos
tar -czf $BACKUP_DIR/files_$DATE.tar.gz --exclude='var/cache' $SITE_DIR

# Eliminar backups antiguos (más de 30 días)
find $BACKUP_DIR -name "*.gz" -mtime +30 -delete

echo "Backup completado: $DATE"

[TIP] Programa este script con cron cada 24 horas. Si tu tienda tiene mucho movimiento, considera backups cada 6 horas para la BD y diarios para archivos.


Restauración de una copia de seguridad

Saber restaurar es igual de importante que hacer el backup. Aquí los pasos:

1. Restaurar la base de datos

Primero, asegúrate de tener una base de datos vacía (o sobrescribe la existente):

mysql -u usuario_bd -p nombre_bd < backup_bd.sql

Si está comprimida:

gunzip < backup_bd.sql.gz | mysql -u usuario_bd -p nombre_bd

2. Restaurar los archivos

Extrae el tar en el directorio de tu tienda (primero haz otro backup por si acaso):

tar -xzf backup_files.tar.gz -C /var/www/mitienda

Si usaste rsync, simplemente sincroniza en sentido inverso:

rsync -avz /ruta/backups/mitienda_rsync/ /var/www/mitienda/

3. Verificar permisos y caché

Después de restaurar, es común que los permisos de archivos se desconfiguren. Ejecuta:

chown -R www-data:www-data /var/www/mitienda
chmod -R 755 /var/www/mitienda

Luego limpia la caché de PrestaShop desde el panel de administración (Parámetros Avanzados > Rendimiento > Limpiar caché) o manualmente eliminando la carpeta var/cache.

[WARNING] Siempre prueba la restauración en un entorno de pruebas antes de hacerla en producción. Un backup sin restauración probada no es un backup real.


Buenas prácticas de SysAdmin para backups

Como administrador de sistemas, tu objetivo es la disponibilidad y la integridad de los datos. Sigue estas reglas:

Regla 3-2-1

  • 3 copias de tus datos (una principal y dos backups).
  • 2 soportes diferentes (disco local y nube, por ejemplo).
  • 1 copia fuera del sitio (offsite). Ejemplo: un backup en otro servidor o en un servicio como S3.

Automatización total

Nunca confíes en backups manuales. Usa cron, systemd timers o herramientas como Syspanel (puerto 2106) que permiten programar backups diarios con un solo clic.

Monitoreo de backups

Añade notificaciones por email a tus scripts. Por ejemplo, al final del script:

if [ $? -eq 0 ]; then
    echo "Backup exitoso" | mail -s "Backup PrestaShop" tu@email.com
else
    echo "Backup falló" | mail -s "ALERTA Backup PrestaShop" tu@email.com
fi

Pruebas periódicas

Cada mes, restaura un backup en un subdominio o en localhost para verificar que todo funciona. Documenta el proceso.


Preguntas frecuentes (FAQ)

¿Cada cuánto debo hacer backups de mi tienda PrestaShop?

Depende del volumen de ventas. Para tiendas pequeñas, un backup diario de la BD y semanal de archivos es suficiente. Para tiendas con muchos pedidos, considera backups cada 6 horas de la BD y diarios de archivos.

¿Dónde debo guardar los backups?

Nunca en el mismo servidor donde está la tienda. Usa un disco externo, otro servidor, o servicios en la nube como Dropbox, Google Drive o Amazon S3. Puedes sincronizar con rclone o rsync.

¿Puedo hacer backups desde el panel de administración de PrestaShop?

Sí, pero son limitados. Ve a Parámetros Avanzados > Base de datos y exporta la BD. Para archivos, no hay opción nativa. Por eso los métodos vía SSH son más completos.

¿Qué hago si mi backup es muy grande y no cabe en el disco?

Usa compresión (gzip, bzip2) o haz backups incrementales con rsync. También puedes dividir archivos con split:

tar -czf - /var/www/mitienda | split -b 1G - backups/files_part_

¿Syspanel (HestiaCP) me ayuda con los backups?

Sí, Syspanel (puerto 2106) incluye un módulo de backups que permite programar copias de la base de datos y los archivos de forma gráfica. Sin embargo, para un control más fino, los scripts manuales son mejores.


Conclusión

Hacer copias de seguridad de tu tienda PrestaShop no es opcional, es una responsabilidad de SysAdmin. Con los scripts y comandos que has visto aquí, puedes automatizar todo el proceso y dormir tranquilo. Recuerda: un backup que no se prueba no es un backup. Dedica tiempo a verificar que tus restauraciones funcionan.

Ahora ya tienes el conocimiento para proteger tu tienda online. ¡Manos a la obra!

¿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