Duplicator Duplicator
Migrar sitio con WP CLI

Cómo migrar un sitio web con WP-CLI

· 22 min de lectura ·
Escrito por: avatar del autor Joella Dunn
avatar del autor Joella Dunn
Joella es una escritora con años de experiencia en WordPress. En Duplicator, se especializa en el mantenimiento de sitios, desde copias de seguridad básicas hasta migraciones a gran escala. Su objetivo final es asegurarse de que su sitio web de WordPress sea seguro y esté preparado para crecer.
·
Revisado por: avatar del revisor John Turner
avatar del revisor John Turner
John Turner es el presidente de Duplicator. Tiene más de 20 años de experiencia en negocios y desarrollo, y sus plugins han sido descargados más de 25 millones de veces.

Si estás administrando un sitio grande de WordPress y necesitas moverlo a un nuevo host, WP-CLI te ofrece una ruta más rápida y programable.

No te dará tiempos de espera de PHP en bases de datos grandes. Además, tendrás un proceso que puedes repetir o automatizar en varios sitios.

En este tutorial, te mostraré cómo migrar un sitio de WordPress usando WP-CLI. Al final, tu sitio estará funcionando en el nuevo servidor y habrás confirmado que funciona antes de que un solo visitante acceda al nuevo host.

Aquí están los puntos clave:

  • La migración con WP-CLI es más rápida que la migración basada en plugins para sitios grandes, pero requiere acceso SSH en ambos servidores y WP-CLI instalado en cada uno.
  • La opción --precise en wp search-replace es el comando más importante de este tutorial. Sin ella, los datos serializados se corrompen silenciosamente y la configuración del tema, los widgets y las opciones de los plugins se restablecen sin ningún mensaje de error.
  • Copiar wp-config.php del servidor antiguo al nuevo trae consigo las credenciales de base de datos incorrectas. Debes actualizar DB_NAME, DB_USER, DB_PASSWORD y DB_HOST en el nuevo servidor antes de importar.
  • Nunca cambies el DNS antes de verificar que la migración funcionó. El paso 7 cubre una lista de verificación previa al DNS usando wp option get, wp core verify-checksums y una vista previa del archivo hosts.
  • wp duplicator build crea una copia de seguridad completa del sitio desde la terminal antes de que comiences. Si algo falla a mitad de la migración, la URL de recuperación de desastres de Duplicator restaura el sitio original sin SSH en el servidor antiguo.
  • Si estás migrando a un nuevo dominio, incluye --skip-columns=guid en tu comando search-replace. Reemplazar los GUIDs rompe las suscripciones RSS.

Tabla de Contenidos

Cuándo usar WP-CLI para migrar un sitio de WordPress

WP-CLI no es la herramienta adecuada para todas las migraciones. Aquí te explicamos cuándo tiene sentido optar por la línea de comandos (y cuándo otro enfoque encaja mejor).

Usa WP-CLI cuando:

  • Tu sitio es lo suficientemente grande como para que las herramientas basadas en navegador alcancen tiempos de espera de PHP o límites de memoria a mitad de la transferencia
  • Tu host no te proporciona suficiente espacio en disco temporal para crear una copia de seguridad completa a través del navegador
  • Estás migrando varios sitios y deseas un proceso repetible y programable. wp duplicator build dentro de un script de bash maneja copias de seguridad por lotes sin ningún trabajo manual
  • Deseas control total sobre cada paso: qué se transfiere, qué se reemplaza y qué se verifica antes de los cambios de DNS

Considere un plugin de migración en su lugar cuando:

  • No tenga acceso SSH en el servidor de origen o destino
  • No se sienta cómodo con la línea de comandos
  • Desea un proceso visual guiado con indicadores de progreso y reversión integrados

Cuál utilice depende de su configuración y preferencia.

Lo que necesitas antes de empezar

Tenga todo esto listo antes de ejecutar un solo comando. Si le falta algo a mitad de la migración (especialmente credenciales de base de datos o rutas de archivos), terminará con una base de datos medio importada y un sitio caído en ambos servidores.

  • Acceso SSH a ambos servidores. Necesitará ejecutar comandos en el servidor antiguo y en el nuevo en diferentes momentos de este proceso.
  • WP-CLI instalado en ambos servidores. Si aún no está instalado, siga la guía de instalación oficial. Lo necesitará en el servidor nuevo para los pasos de verificación en el Paso 7, no solo en el servidor antiguo.
  • Duplicator Pro instalado y activo en el servidor antiguo. Este plugin de copia de seguridad/migración tiene los comandos wp duplicator build, wp duplicator info y wp duplicator cleanup.
  • Una nueva base de datos ya creada en el servidor nuevo con un usuario que tenga privilegios completos. wp db import no crea la base de datos por usted; si no existe, la importación falla.
  • Sus credenciales de base de datos del servidor nuevo listas: DB_NAME, DB_USER, DB_PASSWORD y DB_HOST. Las necesitará en el Paso 4.
  • Las rutas de archivo absolutas para ambas instalaciones de WordPress. Ejecute pwd dentro de cada directorio raíz de WordPress y copie la salida en algún lugar útil.
  • Si va a cambiar de dominio: su URL antigua y su URL nueva listas para copiar/pegar exactamente como aparecen en la base de datos, incluido el protocolo (https:// frente a http://).

Cómo migrar un sitio de WordPress con WP-CLI

Esto es lo que hará. Cada paso se basa directamente en el anterior, así que trabaje en orden.

  • Paso 1: Ejecute una comprobación previa y cree una copia de seguridad completa con wp duplicator info y wp duplicator build
  • Paso 2: Exporte la base de datos del servidor antiguo usando wp db export
  • Paso 3: Transfiera los archivos de WordPress y la base de datos al servidor nuevo usando rsync y scp
  • Paso 4: Actualice wp-config.php en el servidor nuevo con sus nuevas credenciales de base de datos
  • Paso 5: Restablezca e importe la base de datos en el servidor nuevo usando wp db reset y wp db import
  • Paso 6: Ejecute búsqueda-reemplazo para actualizar las URL usando wp search-replace (solo cambios de dominio)
  • Paso 7: Vacíe la caché y verifique la migración antes de tocar DNS
  • Paso 8: Actualice DNS y ponga en marcha
  • Paso 9: Limpie el servidor antiguo con wp duplicator cleanup

Paso 1: Haz una copia de seguridad del sitio original

Antes de exportar nada, necesita un punto de restauración limpio en el servidor original. Si algo sale mal a mitad de la migración, querrá poder volver a un sitio que funcione sin prisas.

Utilizo Duplicator para la protección de copias de seguridad de WordPress. Es un plugin de copia de seguridad y migración utilizado por más de 1.5 millones de profesionales de WordPress y tiene comandos WP-CLI integrados.

Duplicator Pro

Eso significa que puedes crear una copia de seguridad completa del sitio sin salir de la terminal. Para un flujo de trabajo de línea de comandos, eso importa.

Comienza verificando que la configuración de copia de seguridad de Duplicator esté funcionando correctamente. Inicia sesión por SSH en el servidor antiguo, navega a la raíz de tu WordPress y ejecuta:

wp duplicator info

Una vez que esto regrese limpio, crea tu copia de seguridad:

wp duplicator build

Esto crea una copia de seguridad completa de tu sitio desde la terminal.

Si deseas guardar la copia de seguridad en una ubicación específica en lugar de la predeterminada, usa:

wp duplicator build --dir=/path/to/backup/location

Ejecuta wp duplicator build --help para ver todas las opciones disponibles, incluyendo --template=<ID> para plantillas de copia de seguridad predefinidas y opciones de motor de archivo como --phpsqldump, --phpzip y --duparchive.

Si esta migración rompe algo, la URL de recuperación de desastres de Duplicator puede restaurar tu sitio incluso si WordPress está completamente bloqueado en el servidor antiguo. Esa es tu red de seguridad antes de tocar cualquier otra cosa.

Opciones de recuperación ante desastres

Paso 2: Exporta la base de datos del servidor antiguo

Aún en el servidor antiguo, navega a la raíz de tu WordPress y exporta la base de datos:

wp db export site-backup.sql

Cuando termine, verás: Éxito: Exportado a 'site-backup.sql'.

El archivo se guarda en tu directorio actual. Anota dónde está, ya que lo transferirás en el siguiente paso.

Una cosa que hacer antes de continuar. Si tu archivo .sql termina dentro de un directorio accesible desde la web como /public_html o /htdocs, muévelo o elimínalo inmediatamente después de la transferencia.

Un archivo .sql expuesto es una copia completa de tu base de datos, incluyendo nombres de usuario, contraseñas hasheadas y cada pieza de contenido del sitio. No es un riesgo teórico.

Si estás migrando una red de WordPress Multisite, añade --all-tables para capturar datos de toda la red:

wp db export site-backup.sql --all-tables

Paso 3: Transfiere los archivos de WordPress y la base de datos al nuevo servidor

Dos cosas necesitan moverse al nuevo servidor: los archivos de WordPress y la exportación .sql que acabas de crear.

Para los archivos, usa rsync. Maneja transferencias grandes bien, muestra el progreso y reanuda donde lo dejó si la conexión se interrumpe:

rsync -avz --progress /path/to/old-wordpress/ user@newserver:/path/to/new-wordpress/

Con la barra, rsync copia el contenido del directorio. Sin ella, rsync copia el directorio en sí, lo que pone tus archivos un nivel más profundo de lo esperado en el nuevo servidor.

Ejecuta primero una simulación para verificar qué se transferirá antes de confirmar:

rsync -avz --progress --dry-run /path/to/old-wordpress/ user@newserver:/path/to/new-wordpress/

Para el archivo de la base de datos, usa scp:

scp site-backup.sql user@newserver:/path/to/new-wordpress/

Si prefieres comprimir todo en un solo archivo primero, eso también funciona:

tar -czf site_files.tar.gz .
scp site_backup.sql site_files.tar.gz user@newserver:/path/to/new-wordpress/

Luego extrae en el nuevo servidor:

tar -xzf site_files.tar.gz

Este enfoque funciona bien para sitios más pequeños o hosts que manejan transferencias de un solo archivo de manera más confiable que las conexiones rsync.

Paso 4: Actualiza wp-config.php en el nuevo servidor

Este es el paso que la mayoría de los tutoriales de migración de WP-CLI omiten, y es la razón más común por la que una migración falla inmediatamente después de la importación.

Cuando transferiste tus archivos de WordPress en el último paso, wp-config.php vino con ellos. Ese es el archivo correcto, pero todavía tiene las credenciales de la base de datos de tu servidor antiguo. Si ejecutas la importación ahora, WP-CLI intentará conectarse a una base de datos que no existe en el nuevo servidor.

Inicia sesi ilde{n}n por SSH en el nuevo servidor, navega hasta la ra ilde{i}z de tu WordPress y abre wp-config.php:

nano /path/to/new-wordpress/wp-config.php

Actualiza estos cuatro valores con los detalles de la base de datos de tu nuevo servidor:

  • DB_NAME: el nombre de la base de datos que creaste en el nuevo servidor
  • DB_USER: el nombre de usuario de la base de datos
  • DB_PASSWORD: la contrase ilde{n}a de la base de datos
  • DB_HOST: normalmente es localhost, pero cons ilde{u}ltalo con tu proveedor. Algunos proveedores de hosting gestionado utilizan un valor diferente aqu ilde{i}.

Guarda y sal. En nano, pulsa Ctrl+O para guardar y Ctrl+X para salir.

No olvides este paso. Si las credenciales son incorrectas, wp db import se conectar ilde{a} a la base de datos equivocada o fallar ilde{a} con "Error establishing a database connection", y no siempre ser ilde{a} obvio que wp-config.php es la causa.

Paso 5: Restablece e importa la base de datos en el nuevo servidor

Inicia sesi ilde{n}n por SSH en el nuevo servidor y navega hasta la ra ilde{i}z de tu WordPress. Si tienes una instalaci ilde{o}n nueva de WordPress en el nuevo servidor, elimina sus tablas predeterminadas antes de importar. Omitir este paso puede causar conflictos entre las tablas existentes y las de tu exportaci ilde{o}n.

wp db reset --yes

Ver ilde{a}s: Success: Database reset.

La opci ilde{o}n --yes omite la solicitud de confirmaci ilde{o}n. Sin ella, WP-CLI te pedir ilde{a} que confirmes antes de eliminar todas las tablas.

Ahora importa la base de datos:

wp db import site-backup.sql

Tan pronto como se confirme la importaci ilde{o}n, elimina el archivo SQL:

rm site-backup.sql

Luego, vuelve a iniciar sesi ilde{n}n por SSH en el servidor antiguo y elim ilde{i}nalo tambi ilde{e}n all ilde{i}.

Esto no es una tarea de limpieza opcional. Un archivo .sql en un directorio accesible por la web es una copia completa de tu base de datos. Elim ilde{i}nalo de ambos servidores antes de hacer nada m ilde{a}s.

Paso 6: Ejecuta Search-Replace para actualizar las URL

Si vas a conservar el mismo dominio y solo vas a cambiar de servidor, omite este paso y ve directamente al Paso 7. Tus URL ya son correctas en la base de datos.

Si vas a cambiar de dominio, aqu ilde{i} es donde la mayor ilde{i}a de las migraciones fallan silenciosamente. No con un error, sino con configuraciones de tema que se ven mal, widgets que desaparecieron y opciones de complementos que volvieron a los valores predeterminados. La causa es casi siempre la misma: una b ilde{u}squeda-reemplazo que no manej ilde{o} correctamente los datos serializados.

Antes de ejecutar nada, haz una prueba:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise --dry-run

Esto ejecuta la operaci ilde{o}n completa y te muestra una tabla de cu ilde{a}ntos reemplazos se har ilde{i}an por tabla de base de datos, sin guardar ning ilde{u}n cambio. Rev ilde{i}sala.

Busca tablas en las que esperar ilde{i}as reemplazos (wp_options, wp_posts, wp_postmeta) y aseg ilde{u}rate de que los recuentos parezcan razonables. Los ceros inesperados en esas tablas merecen ser investigados antes de que te comprometas.

Cuando est ilde{e}s satisfecho, ejec ilde{u}talo sin --dry-run:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise

Por qu ilde{e} --precise importa: WordPress almacena algunos datos como PHP serializado. La configuraci ilde{o}n del personalizador de temas, las configuraciones de widgets, las opciones de complementos, no se almacenan como texto plano. Se almacenan como cadenas PHP estructuradas que incluyen recuentos de caracteres.

Una b ilde{u}squeda-reemplazo est ilde{a}ndar basada en SQL intercambia la cadena de la URL pero no recalcula esos recuentos de caracteres. PHP lee el recuento, encuentra una discrepancia y descarta silenciosamente los datos.

Tu tema se reinicia. Tus widgets desaparecen. Nada genera un error: el sitio simplemente se ve mal.

La opción --precise fuerza a WP-CLI a usar PHP en lugar de SQL. Deserializa cada valor, realiza la sustitución, recalcula el recuento de caracteres y vuelve a serializar el resultado correctamente. Es más lento en bases de datos grandes. Úsalo de todos modos.

Una cosa que wp search-replace omite correctamente por defecto: la columna guid en wp_posts. No intentes forzar la sustitución de GUIDs.

La documentación de WordPress establece explícitamente que los GUID deben permanecer constantes. Identifican las publicaciones para los lectores de feeds, y cambiarlos rompe las suscripciones RSS.

Si estás migrando una red Multisite, añade la opción –network:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise --network

La documentación oficial de WordPress describe un orden diferente: actualiza tus URLs en Ajustes » Generales en el servidor antiguo antes de migrar, luego exporta la base de datos ya actualizada y omite el paso de buscar y reemplazar en el nuevo servidor por completo. Funciona. El enfoque de este tutorial (migrar primero, buscar y reemplazar después) es más fácil de verificar porque puedes ejecutar una simulación antes de confirmar cualquier cambio de URL.

Paso 7: Limpia la caché y verifica antes de tocar el DNS

Una vez que se ha realizado la búsqueda y el reemplazo, es tentador ir directamente al DNS. No lo hagas.

Cambiar el DNS antes de haber confirmado que el sitio funciona significa que cualquier problema que encuentres serán problemas en vivo, visibles para los visitantes reales. Tómate diez minutos aquí y verifica todo en el nuevo servidor primero.

Empieza vaciando la caché de objetos:

wp cache flush

Luego vacía las reglas de reescritura:

wp rewrite flush

Ahora verifica que las URLs en la base de datos son correctas. Ejecuta ambas:

wp option get siteurl
wp option get home

Ambas deberían devolver tu dominio correcto. Si alguna devuelve el dominio antiguo, puedes actualizarlas manualmente:

wp option update siteurl 'https://newdomain.com'

wp option update home 'https://newdomain.com'

A continuación, verifica que tus archivos principales de WordPress se transfirieron sin corrupción:

wp core verify-checksums

Si devuelve errores, anota qué archivos están marcados. Un puñado de archivos modificados en wp-content es esperado y no es un problema; esos son tus archivos de tema y plugin, que no forman parte de la comparación de checksum. Los errores en archivos principales en wp-admin o wp-includes merecen ser investigados.

Previsualiza el sitio antes de actualizar el DNS. Añade una línea temporal al archivo hosts de tu máquina local apuntando tu dominio a la dirección IP del nuevo servidor. En Mac o Linux, abre /etc/hosts en un editor de texto y añade:

123.456.789.0 yourdomain.com

Reemplaza 123.456.789.0 con la IP de tu nuevo servidor. Guarda el archivo, luego abre tu dominio en un navegador. Ahora estás viendo el nuevo servidor mientras que todos los demás siguen accediendo al antiguo.

Comprueba cada uno de estos antes de continuar:

  • La página de inicio carga correctamente
  • El inicio de sesión de administrador funciona en /wp-admin
  • Las imágenes se muestran en las publicaciones y páginas
  • Los menús de navegación están intactos
  • Los widgets aparecen correctamente en la barra lateral o el pie de página
  • La apariencia del tema coincide con la original

Cuando todo esté correcto, elimina la línea que añadiste a tu archivo hosts. Entonces, estarás listo para una actualización del DNS.

Paso 8: Actualiza el DNS y sal en vivo

Apunta el registro A de tu dominio a la dirección IP de tu nuevo servidor. Dónde hagas esto depende de dónde apunten los servidores de nombres de tu dominio: ya sea tu registrador de dominios o el gestor de DNS de tu proveedor de hosting.

Inicia sesión, encuentra el registro A para tu dominio y actualiza la IP.

La propagación de DNS tarda entre unos minutos y 48 horas, dependiendo de tu registrador y la configuración TTL (tiempo de vida) de tu dominio. Durante ese período, algunos visitantes accederán al servidor antiguo y otros al nuevo. Eso es normal. No es señal de que algo se haya roto.

Mantén el servidor antiguo en funcionamiento durante al menos 24-48 horas después de actualizar el DNS. Apagarlo durante la propagación significa que algunos visitantes no encontrarán nada.

Una vez que estés seguro de que la propagación se ha completado, realiza un último vaciado de caché en el servidor nuevo:

wp cache flush

Paso 9: Limpia con wp duplicator cleanup

Una vez confirmado que el servidor nuevo está activo y estable, vuelve al servidor antiguo y ejecuta:

wp duplicator cleanup

Esto elimina los archivos de copia de seguridad y cualquier dato temporal que Duplicator haya creado durante el proceso de compilación en el Paso 1. Mantiene el servidor antiguo ordenado y elimina cualquier artefacto de migración antes de que lo desmanteles.

Ejecuta esto solo después de estar seguro de que la migración está completa. Una vez que los archivos de copia de seguridad hayan desaparecido, la opción de recuperación ante desastres del Paso 1 también lo hará.

Si deseas conservar la copia de seguridad como archivo a largo plazo, múévela a almacenamiento remoto antes de ejecutar la limpieza.

Solución de problemas comunes de errores de migración de WP-CLI

Incluso una migración cuidadosa puede encontrar obstáculos. Aquí están los puntos de fallo más comunes, cómo se manifiestan y cómo solucionarlos.

“Error al establecer una conexión con la base de datos” después de la importación

Lo que ves: WordPress muestra una pantalla en blanco o el mensaje “Error al establecer una conexión con la base de datos” en el servidor nuevo inmediatamente después de la importación.

Por qué sucede: wp-config.php todavía tiene las credenciales de la base de datos del servidor antiguo. Este es el error más común en una migración con WP-CLI y es fácil de pasar por alto si transferiste archivos antes de actualizar la configuración.

Cómo solucionarlo: Abre wp-config.php en el servidor nuevo y actualiza DB_NAME, DB_USER, DB_PASSWORD y DB_HOST para que coincidan con la base de datos de tu servidor nuevo. Guarda el archivo y recarga el sitio.

Configuración del tema, widgets u opciones de plugins restablecidos después de la migración

Lo que ves: El sitio carga, pero el tema se ve mal, faltan widgets o la configuración de los plugins ha vuelto a los valores predeterminados. No hay mensajes de error en ninguna parte.

Por qué sucede: Ejecutaste wp search-replace sin la opción --precise. El reemplazo de URL corrompió los datos serializados en la base de datos, y WordPress descartó silenciosamente los valores rotos.

Cómo solucionarlo: Vuelve a ejecutar search-replace con --precise y --all-tables:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise

Si los datos ya están gravemente corruptos y volver a ejecutar search-replace no restaura la configuración, restaura la copia de seguridad de Duplicator que creaste en el Paso 1 y repite la migración.

“wp: command not found” en el servidor nuevo

Lo que ves: Cualquier comando de WP-CLI en el servidor nuevo devuelve wp: command not found o command not found: wp.

Por qué sucede: WP-CLI no está instalado en el servidor nuevo, o está instalado pero no en tu PATH.

Cómo solucionarlo: Instala WP-CLI en el nuevo servidor. Si no tienes permiso para hacer que el archivo sea ejecutable en tu host, puedes ejecutar comandos usando php wp-cli.phar en lugar de wp.

rsync Sale con "Permiso denegado"

Lo que ves: rsync se ejecuta pero sale prematuramente con uno o más errores de "Permiso denegado" en archivos o directorios específicos.

Por qué sucede: O tu clave SSH no está configurada correctamente para el servidor de destino, o hay una discrepancia en la propiedad de los archivos entre los dos servidores.

Cómo solucionarlo: Verifica primero el acceso a la clave SSH con ssh user@newserver. Si eso falla, soluciona la autenticación de la clave antes de reintentar rsync. Si la conexión funciona pero se deniegan archivos específicos, es posible que necesites usar chown en los archivos transferidos en el nuevo servidor para que coincidan con el usuario web que usa tu host, comúnmente www-data en Ubuntu o el nombre de usuario de la cuenta en hosts cPanel.

El sitio carga pero las imágenes están rotas

Lo que ves: Las páginas cargan correctamente, pero las imágenes muestran iconos de imagen rota en todo el sitio.

Por qué sucede: O la carpeta wp-content/uploads no se transfirió completamente, o las URL de imágenes codificadas en el contenido de las publicaciones no fueron capturadas por search-replace.

Cómo solucionarlo: Vuelve a ejecutar rsync apuntando solo a la carpeta de subidas para capturar cualquier archivo que no se haya transferido:

rsync -avz --progress /path/to/old-wordpress/wp-content/uploads/ user@newserver:/path/to/new-wordpress/wp-content/uploads/

Luego, vuelve a ejecutar search-replace con --dry-run para comprobar si alguna URL de imagen todavía hace referencia al dominio anterior.

Nada funciona: Restaura y empieza de nuevo

Si el sitio está completamente roto y no puedes identificar una causa clara, no pases horas depurando un estado de migración a medias. Restaura la copia de seguridad de Duplicator Pro que creaste en el Paso 1.

La URL de recuperación ante desastres de Duplicator puede restaurar el sitio anterior incluso si WordPress está bloqueado.

Una vez que vuelvas a un estado limpio y funcional, repite los pasos lentamente. Usa –dry-run en rsync y wp search-replace antes de confirmar nada, y comprueba las credenciales de wp-config.php antes de ejecutar la importación.

Preguntas Frecuentes (FAQs)

¿Necesito tener WP-CLI instalado en ambos servidores para migrar un sitio de WordPress?

Sí. Necesitas WP-CLI en el servidor antiguo para exportar la base de datos con wp db export y crear la copia de seguridad con wp duplicator build. Lo necesitas en el servidor nuevo para importar la base de datos, ejecutar search-replace, limpiar la caché y verificar la migración antes de los cambios de DNS. Técnicamente, puedes arreglártelas con comandos mysqldump manuales para los pasos de exportación e importación, pero perderás los comandos de verificación del Paso 7, que valen la pena tener.

¿Cómo uso WP-CLI para cambiar la URL del sitio en la base de datos de WordPress?

Usa wp search-replace con las opciones --all-tables y --precise:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise

Ejecútalo siempre primero con --dry-run para ver qué cambiará antes de confirmar.

El modificador --precise es crítico. Sin él, los datos serializados en la base de datos pueden corromperse silenciosamente, restableciendo la configuración del tema y las configuraciones de los widgets sin ningún mensaje de error.

¿Puedo migrar un sitio de WordPress a un dominio nuevo sin un plugin?

Sí. WP-CLI maneja las tres tareas principales de forma nativa: wp db export exporta la base de datos, rsync y scp transfieren los archivos, y wp search-replace actualiza las URL en toda la base de datos. El único paso en este tutorial que utiliza un plugin es la copia de seguridad en el Paso 1, que se ejecuta a través de wp duplicator build completamente desde la terminal. Si tu objetivo es permanecer en la línea de comandos de principio a fin, este proceso lo cubre.

¿Qué hace exactamente wp search-replace –precise?

Sin --precise, WP-CLI utiliza SQL para buscar y reemplazar cadenas en la base de datos. Eso funciona bien para texto plano, pero WordPress almacena algunos datos como PHP serializado, que incluye recuentos de caracteres incrustados en la estructura de datos. Un reemplazo SQL directo actualiza la cadena pero no el recuento de caracteres. PHP lee el recuento incorrecto y descarta los datos silenciosamente. El modificador --precise cambia a un reemplazo basado en PHP que deserializa cada valor, realiza el reemplazo, recalcula el recuento de caracteres y vuelve a serializar el resultado correctamente. Es más lento, pero es la única forma de reemplazar de forma segura las URL en datos serializados.

¿Qué pasa si mi nuevo host no permite el acceso SSH?

La migración con WP-CLI requiere SSH en ambos servidores. Si tu nuevo host no ofrece SSH, el enfoque de línea de comandos de este tutorial no funcionará de principio a fin. El flujo de trabajo de migración estándar de Duplicator Pro maneja este caso: crea una copia de seguridad en WordPress en el servidor antiguo, carga los archivos del instalador y del archivo en el nuevo servidor a través de FTP, y ejecuta el instalador a través de un navegador. No se requiere SSH en ningún extremo.

Subir archivos del sitio clonado

¿Funcionará este proceso de migración con WP-CLI para WordPress Multisite?

Los pasos principales son los mismos, pero dos comandos necesitan modificadores adicionales. Al exportar la base de datos, añade --all-tables para capturar las tablas de toda la red: wp db export site-backup.sql --all-tables. Al ejecutar search-replace, añade tanto --all-tables como --network: wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise --network. Todo lo demás en el tutorial se aplica.

¿Cómo cambio la URL del sitio en wp-config.php?

wp-config.php almacena las credenciales de la base de datos, no la URL del sitio. La URL del sitio vive en la base de datos, en la tabla wp_options. Si necesitas actualizarla directamente, usa wp option update siteurl 'https://newdomain.com' y wp option update home 'https://newdomain.com'. Solo harías esto como una corrección específica si wp search-replace omitió la tabla de opciones o si necesitas corregir la URL antes de que el resto del sitio esté listo.

¿Cuánto tiempo tarda la propagación de DNS después de una migración de WordPress?

Normalmente, entre unos pocos minutos y 48 horas. El tiempo real depende de tu registrador de dominios, la configuración DNS de tu proveedor de hosting y el valor TTL establecido en el registro A de tu dominio. Un TTL más bajo significa una propagación más rápida. Si quieres que la propagación sea rápida, reduce el TTL de tu registro A uno o dos días antes de la migración. La mayoría de los registradores te permiten establecerlo tan bajo como 300 segundos (5 minutos). Mantén el servidor antiguo en funcionamiento hasta que la propagación se complete por completo.

Tu sitio está en el nuevo servidor. Esto es lo que debes vigilar a continuación.

Has exportado la base de datos, transferido los archivos, actualizado wp-config.php, importado, ejecutado una búsqueda y reemplazo, verificado todo en el nuevo servidor y cambiado el DNS. Esa es la migración completa.

Las primeras 48 horas merecen atención. La propagación del DNS significa que algunos visitantes seguirán accediendo al servidor antiguo durante ese período, así que no lo desactives todavía.

Vigila las capas de caché que puedan estar sirviendo contenido obsoleto. Un vaciado completo de la caché en el nuevo servidor una vez confirmada la propagación tarda diez segundos y descarta muchos problemas de visualización.

Si algo todavía parece incorrecto después de que la propagación se haya completado, usa wp search-replace --dry-run como herramienta de diagnóstico antes de tocar nada:

wp search-replace 'https://olddomain.com' 'https://newdomain.com' --all-tables --precise --dry-run

Esto te muestra qué tablas todavía contienen el dominio antiguo sin realizar ningún cambio. Es la forma más rápida de confirmar si una URL persistente es un error de búsqueda y reemplazo o algo codificado directamente en un archivo de tema.

Las URL codificadas directamente en archivos de tema personalizados no serán detectadas por la búsqueda y reemplazo en absoluto. Necesitarás encontrarlas y actualizarlas manualmente en el código del tema.

Migra con confianza usando Duplicator Pro

Una migración sin copia de seguridad es una apuesta. Los servidores se comportan de forma inesperada, las importaciones se interrumpen y los datos serializados no siempre sobreviven a una búsqueda y reemplazo de forma limpia.

Tener un punto de restauración antes de empezar significa que cualquiera de esas situaciones es un contratiempo menor en lugar de un problema grave.

Duplicator Pro hace la copia de seguridad con un solo comando desde la terminal: wp duplicator build. Y si algo sale mal, la URL de recuperación ante desastres recupera tu sitio original incluso si WordPress está completamente bloqueado.

Más de 1.5 millones de profesionales de WordPress usan Duplicator Pro para hacer copias de seguridad, migrar y clonar sus sitios. ¡Únete a ellos!

Si este tutorial te ha sido útil, estas guías también merecen ser marcadas.

avatar del autor
Joella Dunn Redactor de Contenidos
Joella es una escritora con años de experiencia en WordPress. En Duplicator, se especializa en el mantenimiento de sitios, desde copias de seguridad básicas hasta migraciones a gran escala. Su objetivo final es asegurarse de que su sitio web de WordPress sea seguro y esté preparado para crecer.
Nuestro contenido es compatible con el lector. Si hace clic en ciertos enlaces, podemos recibir una comisión.

No dejes pasar un día más sin protección

Cada hora sin copias de seguridad adecuadas de WordPress pone tu sitio en riesgo • Cada migración de WordPress retrasada te cuesta rendimiento y crecimiento

Obtener Duplicator ahora
Plugin Duplicator

¡Espera! No te pierdas tu
oferta exclusiva!

Como cliente de , obtienes un 60% DE DESCUENTO

Prueba Duplicator gratis en tu sitio y comprueba por qué más de 1,5 millones de profesionales de WordPress confían en nosotros. Pero no esperes, este descuento exclusivo del 60% solo está disponible por tiempo limitado.

o
Obtén un 60% de descuento en Duplicator Pro ahora →