WP Manifestindependent plugin directory
manifest / utilities / mi-migrator

Mi Migrador

Respalda, migra y restaura WordPress sin límite de tamaño. Compatible con .wpress. En español.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/soymegh/mi-migrator/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

🚚 Mi Migrador

Respalda, migra y restaura tu sitio WordPress. Sin límite de tamaño. Gratis y en español.

Compatible con los archivos .wpress de All-in-One WP Migration, en los dos sentidos.

Descargar · Cómo se usa · Contribuir

English · Español


¿Por qué otro migrador?

Porque migrar un sitio no debería costar una licencia ni terminar en "el archivo excede el tamaño máximo permitido".

  • 🆓 Sin límite de tamaño, sin extensiones de pago. Todo se procesa por partes de unos segundos: da igual el max_execution_time o el límite de subida de tu hosting. El archivo se sube en trozos y, si se corta la conexión, continúa donde iba.
  • 🔁 Usa el formato .wpress. Importa respaldos hechos con All-in-One WP Migration, y All-in-One importa los de Mi Migrador. No tienes que cambiar tu forma de trabajar.
  • 🛡️ No rompe tu sitio si algo falla. La base de datos se carga en tablas temporales y se activa con un único RENAME TABLE atómico. Si cancelas o falla antes de ese paso, tu sitio queda exactamente como estaba.
  • 🧩 Te pregunta qué plugins llevar. Antes de respaldar o importar revisa tus plugins y te avisa de duplicados, plugins de pago, posibles copias "nulled", plugins desactivados y otros migradores. (Ver más abajo.)
  • 🇪🇸 Pensado en español. Interfaz, mensajes de error, documentación y soporte en español. También está en inglés, para que lo uses con clientes de cualquier país.

En pruebas importó un respaldo real de All-in-One de 1.5 GB y 30 000 archivos en 42 segundos (servidor local).

✨ Lo que hace

Exportar Base de datos + wp-content en un .wpress. Puedes excluir medios, plugins, temas, must-use plugins, base de datos, comentarios spam o revisiones.
Importar Archivos .wpress de Mi Migrador y de All-in-One WP Migration. Cambia solas las URL del sitio viejo por las del nuevo, incluso dentro de datos serializados y JSON (Elementor, opciones de temas, widgets…).
Revisión de plugins Antes de respaldar o importar te muestra cada plugin con avisos y te deja elegir cuáles llevar.
Respaldos programados Diarios o semanales, a la hora que elijas, conservando los últimos N.
Google Drive (beta) Subida reanudable, carpeta propia y rotación de copias, con tus propias credenciales OAuth: nada pasa por servidores de terceros.
WP-CLI wp mimig export, import, plugins, list, delete, drive-upload.

🧩 Revisión de plugins: migra limpio

La mayoría de los problemas después de una migración vienen de los plugins: dos plugins de SEO peleándose, una licencia que no funciona en el dominio nuevo o un plugin "nulled" que nadie recuerda haber instalado. Mi Migrador los revisa antes de mover nada:

Aviso Qué detecta
🔴 Sin licencia Posibles copias "nulled": textos típicos de sitios de descarga pirata, o código que fuerza la licencia a "válida". Suelen traer código malicioso.
🟡 Duplicado Dos plugins activos que hacen lo mismo: SEO, caché, SMTP, seguridad, optimización de imágenes, reservas, respaldos o SSL.
🔵 De pago Plugins premium cuya licencia suele estar atada al dominio.
⚪ Desactivado Plugins apagados que probablemente no necesitas llevar.
🟣 Otro migrador All-in-One, Duplicator y similares: ya no hacen falta.
  • Al exportar, desmarca los que no quieras: no se copian y no quedan activos en el sitio nuevo.
  • Al importar, eliges para cada plugin: Importar, Conservar la de este sitio (por ejemplo, si aquí ya tienes la versión con licencia o una más nueva) o No migrar.

Las sugerencias son orientativas: siempre decides tú.

🚀 Migrar un sitio en 3 pasos

  1. En el sitio viejo: Mi Migrador → Exportar → Crear respaldo. Descárgalo desde Respaldos.
  2. En el sitio nuevo (sirve un WordPress recién instalado): instala Mi Migrador, ve a Importar, arrastra el .wpress, revisa los plugins y continúa.
  3. Inicia sesión con un usuario del sitio importado. Listo.

El sitio nuevo conserva su propia URL y su prefijo de tablas. Del viejo llegan el contenido, los usuarios, los ajustes, el tema y los plugins activos.

Restaurar es igual de fácil: Respaldos → Restaurar.

📦 Instalación

  1. Descarga mi-migrador-x.y.z.zip desde Releases.
  2. En WordPress: Plugins → Añadir nuevo → Subir plugin y elige el .zip.
  3. Actívalo. Aparece el menú Mi Migrador.

Requisitos: WordPress 5.8+, PHP 7.4+ (64 bits para archivos de más de 2 GB) y MySQL o MariaDB. Por ahora no es compatible con multisitio.

¿Prefieres armar el zip tú mismo? python bin/build.py lo genera en dist/.

🌍 Idiomas

La interfaz sigue el idioma de tu WordPress (o el de tu usuario):

  • Español (es_*): es el idioma original del plugin.
  • Inglés (en_US): también se usa para cualquier otro idioma que todavía no tenga traducción propia.

¿Lo quieres en tu idioma? Traduce languages/mi-migrador.pot (por ejemplo con Poedit) y manda un pull request con tus archivos mi-migrador-xx_XX.po y .mo.

⌨️ WP-CLI

wp mimig export --exclude=media,spam --tag=antes-de-actualizar
wp mimig import respaldo.wpress --yes            # ruta o nombre de un respaldo de la carpeta
wp mimig plugins                                 # revisión de los plugins de este sitio
wp mimig plugins respaldo.wpress                 # ... o de los que trae un respaldo
wp mimig export --suggested                      # deja fuera los plugins sugeridos
wp mimig export --exclude-plugins=query-monitor,hello-dolly
wp mimig import respaldo.wpress --yes --suggested
wp mimig import respaldo.wpress --yes --exclude-plugins=wp-rocket --keep-local-plugins=seo-by-rank-math-pro
wp mimig list
wp mimig delete nombre.wpress
wp mimig drive-upload nombre.wpress

☁️ Google Drive (beta)

  1. En Google Cloud Console: crea un proyecto, activa Google Drive API y configura la pantalla de consentimiento (tipo Externo, con tu correo como usuario de prueba).
  2. Crea credenciales: ID de cliente de OAuth → Aplicación web.
  3. En URI de redireccionamiento autorizados pega la que muestra el plugin en Programados y Drive.
  4. Copia el ID y el secreto en el plugin y pulsa Guardar y conectar.

El permiso que se pide es drive.file: el plugin solo ve los archivos que él mismo crea.

La subida a Drive está probada contra una API simulada (cortes de red, reanudación, rotación). Si la usas con tu cuenta, cuéntanos cómo te fue en un issue.

🔒 Seguridad

  • Toda acción exige permisos de administrador (manage_options) y un nonce.
  • Los respaldos se guardan en wp-content/mi-migrador-backups/, protegida con .htaccess, web.config e index.php, y con nombres aleatorios (para nginx, que ignora .htaccess). Las descargas siempre pasan por PHP con permiso y nonce.
  • Al importar se rechazan rutas con .., absolutas o con unidad de disco.
  • El reemplazo de URL no usa unserialize(), así que no ejecuta código de clases desconocidas.
  • Los tokens de Drive y los ajustes del plugin no viajan dentro de los respaldos.
Cómo funciona la importación por dentro
  1. Comprueba que el archivo esté completo antes de tocar nada.
  2. Extrae los archivos a wp-content (salta el propio plugin y la carpeta de respaldos).
  3. Carga la base de datos en tablas temporales: el sitio sigue funcionando con las suyas.
  4. Reemplaza las URL en las temporales.
  5. Cambia temporales por reales en un único RENAME TABLE atómico y restaura las llaves foráneas con su nombre original.

Si falla o se cancela antes del paso 5, la base de datos queda como estaba y las temporales se borran. Los archivos extraídos en el paso 2 sí se quedan.

Notas
  • WP-Cron depende de las visitas: en sitios con poco tráfico configura un cron real del servidor que llame a wp-cron.php cada 5 minutos.
  • Si el origen tenía opciones como wp_mail_smtp y <prefijo>mail_smtp y el destino usa el prefijo wp_, los nombres coinciden al cambiar el prefijo: se conserva el primero y queda un aviso en el registro (All-in-One se comporta igual).
  • Al desinstalar se borran los ajustes, pero no los respaldos: pueden ser tu única copia.
Filtros y acciones para desarrolladores
Filtro Para qué
mimig_step_seconds Segundos de trabajo por petición (por defecto 8).
mimig_export_exclude Rutas de wp-content que no se respaldan.
mimig_export_tables Tablas que se exportan.
mimig_export_excluded_options Opciones que no viajan.
mimig_import_skip Rutas del archivo que no se extraen.
mimig_import_replace Pares de reemplazo viejo → nuevo.
mimig_import_keep_options Opciones del destino que sobreviven a la importación.
mimig_import_deactivate_plugins Plugins del origen que no se activan.

Acciones: mimig_export_done ( $ruta, $job ) y mimig_import_done ( $job ).

🤝 Contribuir

Mi Migrador nace para la comunidad WordPress hispanohablante y crece con ella.

  • 🐛 ¿Encontraste un error? Abre un issue con tu versión de WordPress, PHP y hosting, y lo que dice el Registro del proceso.
  • 💡 ¿Tienes una idea? También va en un issue. Hay temas abiertos donde la ayuda vale oro: probar Google Drive con cuentas reales, más destinos en la nube (Dropbox, S3, OneDrive), soporte para multisitio y traducciones a otros idiomas (portugués, francés…).
  • 🔧 ¿Quieres programar? Haz un fork, crea una rama y manda un pull request. Antes, corre las pruebas:
php tests/test-replacer.php                              # reemplazo seguro (sin WordPress)
wp eval-file tests/test-resume.php export x 0.1          # exportar con pausas de 0.1 ms
wp eval-file tests/test-resume.php import <archivo> 0.5  # importar con pausas de 0.5 ms
wp eval-file tests/test-cancel.php <archivo>             # cancelar a mitad no toca el sitio
wp eval-file tests/test-gdrive-mock.php                  # Drive contra una API simulada
  • ⭐ ¿Te sirvió? Dale una estrella al repo y compártelo en tu comunidad, grupo de Facebook, WordCamp o Meetup. Así llega a más gente.

📄 Licencia

GPL-2.0-or-later, como WordPress. Úsalo, modifícalo y compártelo libremente.


Mi Migrador es un proyecto independiente. No está afiliado a ServMask ni a All-in-One WP Migration; los nombres se mencionan solo para indicar compatibilidad con su formato de archivo.