Copias de seguridad

Asegure integridad de cursos y tiempos de recuperación en LMS

¿Cuánto costaría recuperar cursos y progreso tras una corrupción de la base de datos o una migración fallida? Los responsables técnicos y gestores de academias WordPress afrontan pérdida de contenidos, metadatos de alumnos y horas de trabajo si las copias no incluyen las tablas y meta del plugin LMS; se necesita una estrategia que garantice integridad y tiempos de recuperación predecibles.

Backup para LMS y cursos: la protección pasa por copias completas de archivos, subidas y la base de datos (incluidas tablas y metadatos del plugin LMS). Configurar backups automáticos e incrementales a almacenamiento externo, probar restauraciones periódicas y aplicar retención y cifrado por GDPR evita pérdida de progreso, datos de alumnos y reduce el tiempo de recuperación. Conviene mapear tablas críticas (LearnPress/LearnDash/TutorLMS) y automatizar verificaciones.

Índice

Anuncio

Resumen del proceso

El proceso completo cubre identificación, exportación, programación y restauración verificada. Cada paso reduce pérdida de progreso y tiempo de recuperación.

Identificar datos críticos

Identificar tablas, postmeta y ficheros del LMS antes de hacer cualquier copia. Esto evita perder inscripciones, progresos y calificaciones.

Exportar y cifrar

Exportar la base de datos completa y tablas LMS específicas, y cifrar los archivos antes de enviarlos offsite. Mantener copias en la UE cuando haya datos personales.

Restaurar en staging

Restaurar siempre en un entorno de pruebas y verificar integridad de cursos y usuarios. Validar progreso de alumnos y quizzes antes de abrir en producción.

Para un RTO orientativo: RTO ≤ 4 horas y RPO ≤ 1 hora para academias con actividad continua; retención sugerida: 30/90/365 días según riesgo y requisitos legales.

Infografía del flujo de pasos

Paso 1
Mapear tablas y assets
Paso 2
Backups automáticos e incrementales
Paso 3
Restaurar en staging y verificar
Almacenamiento UE (S3/GCS) → Cifrado KMS → Transferencia segura (SFTP/TLS) → Almacenamiento UE (S3/GCS) → Cifrado KMS. Utilice los mecanismos de transferencia adecuados para cada destino: para S3/GCS lo normal es utilizar las APIs/SDKs o herramientas oficiales (awscli, gsutil) sobre HTTPS/TLS y habilitar el cifrado del lado del servidor o KMS; si dispone de un gateway SFTP que acepte subidas y las reenvíe a un bucket, documente ese componente intermedio y mantenga TLS y controles de acceso estrictos. Evite asumir que SFTP es el método directo para object storage sin un gateway compatible.
Asegure integridad de cursos y tiempos de recuperación en LMS

Paso 1: identificar y exportar datos críticos

Identificar tablas y ficheros evita pérdidas de progreso al restaurar. La lista no es opcional; es necesaria para cursos con usuarios activos.

Tablas core y CPTs

La base de datos core incluye wp_posts, wp_postmeta, wp_users y wp_usermeta. Muchos LMS usan CPTs dentro de wp_posts para cursos y lecciones.

Tablas propias del LMS

LearnDash, LearnPress y TutorLMS crean tablas propias o usan metadatos. Identificar esas tablas asegura que el progreso y las inscripciones se conserven.

Un error frecuente en este punto es asumir que exportar solo wp_posts salva todo el LMS. Eso provoca pérdida de promedios, notas y datos de usuarios.

Mapeo por LMS

LearnDash guarda cursos como CPTs con postmeta que comienza por sfwd-. LearnPress crea tablas wp_learnpress con registros de progreso. TutorLMS suele usar wp_tutor_ para cursos y matrículas.

Cómo detectar tablas con SQL

SELECT table_name FROM information_schema.tables WHERE table_schema = 'tu_bd' AND (table_name LIKE '%learn%' OR table_name LIKE '%tutor%' OR table_name LIKE '%sfwd%');

WP-CLI para meta_keys

wp db query "SELECT meta_key, COUNT() FROM wp_postmeta GROUP BY meta_key ORDER BY COUNT() DESC;" ayuda a localizar metadatos críticos.

Para respaldos técnicos fiables de un LMS conviene un inventario explícito de tablas y meta_keys además de los ficheros. A nivel general siempre incluya: wp_posts (con post_type relacionados con cursos, lecciones, quizzes y certificados), wp_postmeta (meta_keys como los que empiezan por sfwd- en LearnDash), wp_users y wp_usermeta. Además de las tablas core, identifique y exporte las tablas custom creadas por el LMS: por ejemplo, LearnDash suele crear tablas de actividad de usuario (p. ej. wp_learndash_user_activity y tablas relacionadas con metadatos de actividad), LearnPress usa prefijos wp_learnpress (items, user_items, user_itemmeta) y TutorLMS crea tablas con prefijo wp_tutor_ para cursos, matrículas y respuestas a quizzes.

No olvide archivos: wp-content/uploads (medios del curso), certificados en PDF, paquetes SCORM/xAPI si los hubiera, y cualquier carpeta de plugins que aloje contenidos (ej.: /wp-content/plugins/tutor/assets/uploads). Finalmente documente los meta_keys críticos (ej.: _sfwd-* para LearnDash, claves de progreso de LearnPress) y use queries sobre information_schema o wp db query para listarlos antes de automatizar exportaciones.

Anuncio

Paso 2: configurar backups automáticos y almacenamiento

Combinar backups completos y backups incrementales reduce espacio y mejora RPO. La estrategia elegida debe documentarse y probarse.

Modelo recomendado de retención

Full semanal y incrementales cada 1 a 6 horas según actividad. Mantener diarios 30 días, semanales 12 semanas, mensuales 12 meses como punto de partida.

Destinos y cifrado

Usar buckets en la UE como AWS eu-west-1 o GCP europe-west. Cifrar en tránsito con TLS y en reposo con KMS o GPG.

En entornos de pruebas internas se ha observado que aplicar versionado de objetos junto con verificación de checksums y replicación reduce de forma apreciable los incidentes de corrupción en copias; el impacto exacto varía según configuración, frecuencias de backup y políticas de verificación, por lo que conviene medir la tasa de fallos en su propio entorno y registrar métricas antes/después de implementar versionado.

Transferencia y permisos

Transferir con SFTP o rsync sobre SSH y aplicar políticas IAM mínimas. Rotar claves y controlar accesos mediante roles.

Automatización y verificación

Programar tareas que hagan backup, verifiquen checksums y envíen informes por correo. Un cronjob que falle sin alertar equivale a no tener backup.

Copias de seguridad: asegure integridad de

Paso 3: restaurar cursos y verificar integridad

Restaurar en staging evita interrupciones en producción y permite validar datos. La restauración correcta sigue un orden lógico.

Orden recomendado de restauración

Restaurar archivos de wp-content, luego wp_users/wp_usermeta, después wp_posts/wp_postmeta y finalmente tablas custom del LMS. Seguir este orden minimiza inconsistencias.

Comandos y ejemplos

Exportar tabla específica con mysqldump:

bash mysqldump -u dbuser -p dbname wp_posts --where="post_type='sfwd-courses'" > ld_courses.sql

WP-CLI para cambiar URLs sin romper serializados:

bash wp search-replace 'https://antiguo' 'https://nuevo' --skip-columns=guid --recurse-objects --precise

Verificaciones post-restauración

Abrir cursos y revisar lecciones, quizzes y certificados. Comprobar progreso de tres usuarios de prueba y ejecutar CHECK TABLE en tablas críticas.

Un caso habitual: al restaurar, los quizzes pierden referencias a imágenes porque las rutas en postmeta estaban serializadas y se reemplazaron con herramientas simples. La consecuencia es fallo en renderizado.

Manejo de serialización

Evitar sed o replace directos en SQL. Usar WP-CLI o herramientas que respeten objetos serializados y arrays PHP.

Un procedimiento reproducible para restaurar uno o varios cursos debe ser paso a paso y probado:

Anote errores y compare checksums de archivos multimedia y de dumps SQL para confirmar integridad antes de promover a producción.

Errores que arruinan el resultado

Confiar solo en copias de archivos deja fuera las tablas LMS y elimina progreso. Esa omisión provoca pérdida irreversible de calificaciones.

No verificar restauraciones en staging conduce a sorpresas en producción. Asumir que un backup es válido sin test aumenta el tiempo de recuperación.

Almacenar backups en el mismo servidor sin offsite expone a ransomware. Mantener un offsite en la UE o con SCCs es prudente.

Anuncio

Compatibilidad entre plugins de backup y LMS

No todos los plugins exportan tablas custom o preservan serialización. Verificar compatibilidad antes de confiar en un servicio.

Tabla comparativa de plugins

Plugin Export selectivo Serialización Destinos UE Incremental
UpdraftPlus (Premium) Buena S3/GCS/Azure
All-in-One WP Migration Limitada Variable Plugins de pago No
Duplicator Completo Limitada Manual No
BlogVault / WP Time Capsule Buena S3/Propios

Problemas concretos

Algunos plugins no listan tablas custom y dejan fuera user_items de LearnPress. Detectarlo antes evita restauraciones incompletas.

Comprobar que el plugin preserve serialización y permita restauración selectiva de tablas y archivos.

Scripts y ejemplos prácticos

Incluir scripts reproducibles ayuda a auditar backups y a automatizar exportaciones. Los ejemplos permiten adaptarlos al prefijo de tabla.

Script bash básico

bash DB_USER="dbuser" DB_PASS="dbpass" DB_NAME="dbname" OUT_DIR="/backups/$(date +%F)" mkdir -p $OUT_DIR TABLES=(wp_posts wp_postmeta wp_users wp_usermeta wp_learnpress_items wp_learnpress_user_items) for t in "${TABLES[@]}"; do mysqldump -u $DB_USER -p$DB_PASS $DB_NAME $t > $OUT_DIR/$t.sql done tar -czf $OUT_DIR/uploads.tar.gz /var/www/html/wp-content/uploads aws s3 cp $OUT_DIR s3://mi-bucket-backups/ --recursive --storage-class STANDARD

Export JSON de metadatos

Usar WP-CLI para exportar postmeta específicos:

bash wp db query "SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE meta_key LIKE '%sfwd%';" --skip-column-names > sfwd_meta.csv

Además del mysqldump básico, es útil generar un export JSON que represente la estructura de un curso para importadores o auditoría. Ejemplo de comando de exportación SQL para un curso LearnDash: mysqldump -u dbuser -p dbname wp_posts --where="post_type IN ('sfwd-courses','sfwd-lessons','sfwd-topic','sfwd-quiz') AND ID IN (SELECT ID FROM wp_posts WHERE post_type='sfwd-courses' AND post_name='slug-del-curso')" > curso_posts.sql; y para postmeta: mysqldump ... wp_postmeta --where="post_id IN (LISTA_DE_IDS)" > curso_postmeta.sql. Como alternativa JSON mínimo para un curso (esquema ilustrativo): { "course": { "post": {"post_title":"Título","post_content":"...","ID":123 }, "postmeta": [{"meta_key":"_sfwd-courses","meta_value":"..."}], "lessons": [{"post":{...}, "postmeta":[...]}], "quizzes": [{"post":{...}, "questions":[{...}]}], "user_progress":[{"user_id":45,"status":"completed","score":92}] }.

Para reimportar se puede usar un script PHP/Python que inserte wp_posts/wp_postmeta y las tablas custom respetando IDs y serialized values, o reconstruir posts con WP-CLI (wp post create) y añadir postmeta con wp post meta add; al final ejecute wp search-replace para ajustar rutas y verifique CHECK TABLE y la experiencia práctica con usuarios de prueba.

GDPR y consideraciones legales

Tratar backups como datos personales obliga a controles de acceso, cifrado y políticas de retención. La normativa RGPD data de 2016 y sigue vigente.

Almacenamiento fuera de la UE

Evitarlo salvo que exista SCCs o medidas adecuadas de transferencia. Documentar el Transfer Impact Assessment para proveedores no europeos.

Para información práctica sobre GDPR y medidas técnicas, consultar gdpr.eu.

Medidas técnicas y organizativas

Cifrado en reposo con KMS y cifrado de cliente para backups críticos. Pseudonimizar datos en entornos de desarrollo para evitar exposición.

Retención y eliminación

Definir políticas que permitan purgar backups antiguos de forma trazable. Registrar accesos y restauraciones para auditoría.

Anuncio

Checklist pre-migración y pruebas post-migración

Tener una checklist evita sorpresas durante migraciones y restauraciones. El checklist debe ser específico para LMS y verificable.

Items imprescindibles antes de migrar

Backup full de archivos y BD, export de tablas LMS, listado de versiones de PHP/MySQL y plan de rollback documentado.

Pruebas mínimas en staging

Matricular un alumno de prueba, completar un curso, hacer un quiz y validar certificado. Verificar emails y webhooks.

Registro de resultados

Mantener un registro con ID de backup, ubicación, checksum y responsable técnico. Esto acelera auditorías y reclamaciones.

Opinión técnica y matiz práctico

Una política de backups que funcione bien combina backups completos regulares con incrementales muy frecuentes y pruebas periódicas de restauración; funciona bien, pero solo si se prueba en staging y se verifica la integridad de metadatos serializados, porque muchos fallos en restauración provienen de reemplazos mal hechos de URLs.

Cuando no aplicar este método / alternativas

No aplica si el LMS está fuera de WordPress en un servicio SaaS que ya incluye backups con RTO/RPO contractuales, o si la web es informativa sin usuarios ni progreso almacenado. En esos casos conviene revisar el contrato del proveedor y su auditoría de backups.

Para una auditoría de backups y pruebas de restauración en staging se ofrece un servicio de puesta en marcha y verificación que incluye export de tablas LMS y configuración de offsite en la UE dentro de un plazo acordado.

Anuncio

Preguntas frecuentes

¿Qué tablas debo respaldar para LearnDash?

Las tablas obligatorias son wp_posts con post_type 'sfwd-' y wp_postmeta con claves _sfwd-. También exportar wp_users y wp_usermeta para mantener usuarios y progresos.

¿Basta con copiar wp-content para salvar cursos?

No basta. Copiar solo wp-content omite tablas y metadatos críticos que almacenan progreso y calificaciones. La base de datos completa es imprescindible.

¿Con qué frecuencia programar backups?

Programar incrementales cada 1 a 6 horas y un full semanal para la mayoría de academias. Ajustar según actividad y RPO deseado.

¿Cómo evitar problemas de serialización al reemplazar URLs?

Usar WP-CLI o herramientas que respeten objetos serializados. Evitar sustituciones directas con sed o replace en SQL.

¿Puedo almacenar backups en servicios no europeos?

Se puede, pero requiere SCCs y evaluación de impacto. Guardar en la UE simplifica cumplimiento y reduce riesgos legales.

¿Cómo probar que un backup es válido?

Restaurar en staging, abrir cursos, revisar lecciones, quizzes y progreso de usuarios. Comprobar checksums y logs de error.

¿Qué plugins son recomendables para LMS grandes?

Plugins con export selectivo y soporte incremental como UpdraftPlus (versión premium) o servicios como BlogVault suelen funcionar mejor para sitios con mucho tráfico y activos multimedia.

Síntesis y recomendación final

La recomendación es clara: exportar la base de datos completa y las tablas específicas del LMS, copiar wp-content y almacenar copias cifradas offsite en la UE. Probar restauraciones en staging y mantener retención documentada para cumplir requisitos legales.

El siguiente paso práctico para el responsable técnico es ejecutar un mysqldump de la BD completa, listar tablas que contengan 'sfwd', 'learnpress' o 'tutor' y configurar subida automática a un bucket europeo.

RESUMIR CON IA: Extrae lo importante

Comparte este artículo:

Josu Barrios

Josu Barrios

Somos especialistas en mantenimiento WordPress para empresas, profesionales y tiendas online. Contamos con experiencia en seguridad web, optimización de rendimiento, actualizaciones, copias de seguridad y resolución de incidencias técnicas, ayudando a que cada sitio funcione de forma rápida, estable y protegida. Nuestro enfoque combina soporte técnico profesional, buenas prácticas de seguridad y seguimiento continuo para ofrecer un servicio fiable, transparente y orientado a resultados reales.