logo

Paleta de lienzo: 隆Hazlo colorido!馃帹

Palette - Constructor visual de p谩ginas, no se requiere t铆tulo en dise帽o.

Demo en vivo Descargar Palette

Scroll
19/06/2025, by Ivan

Drush es una interfaz de l铆nea de comandos y un entorno de scripting para Drupal. Actualizar a Drupal 8 usando Drush es una alternativa a utilizar la interfaz de usuario del navegador. Actualizar a Drupal 8 con Drush es muy 煤til al migrar sitios complejos, ya que permite ejecutar migraciones una por una y realizar reversiones.

Instalaci贸n de Drush usando Composer

Los sitios Drupal 8 pueden construirse con Composer. Si decides usar drupal-composer/drupal-project como plantilla de proyecto Composer, ya tendr谩s Drush porque est谩 listado como dependencia en el archivo composer.json del proyecto.

Si Drush no est谩 listado como dependencia en tu proyecto Composer, puedes instalar Drush desde la l铆nea de comandos as铆:

composer require drush/drush

 

Nota: usa Drush 9 ahora

Debido a un problema con Drush 10, por el momento se recomienda instalar Drush 9 con composer, requiriendo drush/drush: ^9.0, lo que lleva a la versi贸n 9.7.2. 

Esto te dar谩 la 煤ltima versi贸n estable de Drush, que deber铆a ser compatible con la 煤ltima versi贸n de Drupal. M谩s detalles est谩n en la matriz de compatibilidad de versiones entre Drush y Drupal.

Para comprobar tu versi贸n de Drush, usa

drush --version

M贸dulos requeridos de Drupal

Para migrar usando Drush, necesitas descargar e habilitar los siguientes m贸dulos a帽adidos:

  • Migrate Upgrade: proporciona soporte para Drush para actualizar de Drupal 6 o 7 a Drupal 8.
  • Migrate Plus: ofrece extensiones para la funcionalidad b谩sica del mecanismo de migraci贸n.
  • Migrate Tools: provee comandos Drush que se usan m谩s adelante en esta p谩gina.

 

隆IMPORTANTE! Presta especial atenci贸n a elegir la versi贸n correcta para cada uno de estos tres m贸dulos. Por favor, consulta la p谩gina del proyecto para elegir la versi贸n compatible con tu versi贸n del n煤cleo Drupal 8.

Para m谩s informaci贸n sobre los distintos m贸dulos de actualizaci贸n, por favor consulta la lista de m贸dulos de actualizaci贸n.

Define la base de datos fuente

Este es un ejemplo de c贸mo definir los detalles de conexi贸n a la base de datos para tu sitio Drupal 6/7 fuente. Si tu sitio fuente usa prefijos en la base de datos, aseg煤rate de incluirlos. Necesitar谩s conectarte tanto a la base de datos local de desarrollo (default/por defecto) como a la base de datos fuente (D6 o D7). Abajo hay un ejemplo usando Lando. El ejemplo incluye la base de datos por defecto configurada para mayor completitud.

Nota. Para evitar problemas, es importante nombrar la clave de la base de datos migratoria correctamente, v茅ase la secci贸n "Obtenci贸n de error de campo para el n煤cleo Drupal versi贸n 7" durante la migraci贸n.

Ejemplo de conexi贸n a base de datos en settings.php

$databases['default']['default'] = [
  'database' => 'drupal8',
  'username' => 'drupal8',
  'password' => 'drupal8',
  'prefix' => '',
  'host' => 'database',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

$databases['migrate']['default'] = [
  'database' => 'drupal7db',
  'username' => 'drupal7db',
  'password' => 'drupal7db',
  'prefix' => '',
  'host' => 'd7db',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

Ejemplo de .lando.yml

name: mywebsite
recipe: drupal8
config:
  webroot: web

# Crear servicio de base de datos Drupal 7, considera agregar phpmyadmin
services:
  d7db:
    type: mariadb
    creds:
      user: drupal7db
      password: drupal7db
      database: drupal7db
    portforward: true

Importa la base de datos Drupal 7, asumiendo que el archivo dump de la base de datos se llama mywebsite_db.sql.gz y est谩 en la carpeta actual:

lando db-import --host=d7db --user=drupal7db mywebsite_db.sql.gz

Inspirado en https://github.com/thinktandem/migration_boilerplate.

Generaci贸n de migraciones usando migrate-upgrade

El m贸dulo a帽adido Migrate Tools agregar谩 comandos Drush como drush migrate-status y drush migrate-import. La lista completa de comandos Drush relacionados con migraci贸n est谩 al final de esta p谩gina.

Si intentas ejecutar el comando drush migrate-status sin hacer nada m谩s, no ver谩s migraciones disponibles para ejecutar. Esto es porque las migraciones individuales deben crearse primero bas谩ndose en tu base de datos fuente. Como Migrate no sabe qu茅 fuente usar, a煤n no existen migraciones.

Para generar migraciones necesitar谩s el comando Drush drush migrate-upgrade, que proporciona el m贸dulo de actualizaci贸n Migrate Upgrade.

Lo m谩s probable es que quieras generar solo migraciones individuales para poder ejecutarlas una por una. Para esto, necesitas usar el par谩metro --configure-only

drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://example.com --configure-only 

donde

  • 'user' es el nombre de usuario de la base de datos fuente.
  • 'password' es la contrase帽a del usuario de la base de datos fuente.
  • 'server' es el servidor de la base de datos fuente.
  • 'db' es la base de datos fuente.
  • 'http://example.com' es la ra铆z de tu sitio fuente. Si el sitio antiguo est谩 en el sistema de archivos local, puedes usar la ruta al directorio ra铆z de Drupal como valor para esta opci贸n. El valor que pongas aqu铆 se a帽adir谩 a las rutas de archivos individuales para encontrarlos e importarlos.

 

La opci贸n --legacy-db-key te permite usar el arreglo $database con la clave correspondiente definida en settings.php.

Si tu sitio fuente usa prefijo de tabla en los nombres de tablas de la base de datos, debes a帽adirlo como argumento adicional as铆. En este ejemplo, el prefijo de base de datos es "drupal_":

drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-db-prefix=drupal_ --legacy-root=http://example.com --configure-only 

Si no usas la opci贸n --configure-only, drush migrate-upgrade generar谩 primero y luego ejecutar谩 todas las migraciones.

Despu茅s de ejecutar migrate-upgrade con --configure-only, ejecuta migrate-status para ver la lista de migraciones posibles:

drush migrate-status

Luego puedes revisar y ejecutar esas migraciones de forma selectiva. Para ejecutar una migraci贸n individualmente usa:

drush migrate-import <migration name> 

Para ejecutar todas las migraciones en la lista, ejecuta:

drush migrate-import --all 

Ejecutar migraciones espec铆ficas usando migrate-manifest

Tambi茅n puedes usar un archivo manifest para configurar un conjunto espec铆fico de migraciones. Esto permite reproducir grupos de migraciones de manera repetible. Para este m茅todo tambi茅n necesitar谩s el m贸dulo Migrate Manifest. Con Migrate Manifest puedes obtener una lista completa de migraciones disponibles usando los siguientes comandos:

drush migrate-template-list # Drush 8

o

drush migrate:template:list # Drush 9

Nota: Actualmente el m贸dulo Migrate Manifest no es completamente compatible con Drush 10+.

Las migraciones deseadas se definen como un archivo YAML, como muestra el ejemplo abajo. Solo necesitas listar las migraciones que requieres. Migrate Manifest te pedir谩 que agregues migraciones adicionales necesarias para resolver dependencias. Las migraciones pueden listarse en cualquier orden, se ejecutar谩n en el orden correcto basado en las dependencias.

# usuario 
- d6_user 
- d6_user_profile_field 
- d6_user_profile_field_instance 
- d6_user_profile_entity_display 
- d6_user_profile_entity_form_display 
- d6_profile_values:user 
- d6_filter_format 
- d6_user_role 
- d6_user_picture_entity_display 
- d6_user_picture_entity_form_display 
- d6_user_picture_file 
- d6_user_picture_field 
- d6_user_picture_field_instance 

# taxonom铆a 
- d6_taxonomy_vocabulary 
- d6_taxonomy_settings 
- d6_taxonomy_term 

# nodos 
- d6_node 
- d6_node_revision 
- d6_node_type 
- d6_view_modes 
- d6_filter_format 
- d6_field_instance_per_form_display 
- d6_field_instance_widget_settings 
- d6_field_formatter_settings 
- d6_field_instance 
- d6_field 
- d6_field_settings 
- d6_node_settings 
- d6_cck_field_values:* 
- d6_cck_field_revision:* 

# campos de taxonom铆a 
- d6_term_node_revision 
- d6_term_node 
- d6_vocabulary_entity_display 
- d6_vocabulary_entity_form_display 
- d6_vocabulary_field_instance 
- d6_vocabulary_field 

# bloques 
- d6_block 
- d6_menu 

# bloques personalizados 
- d6_custom_block 
- d6_filter_format 

# libro 
- d6_book 
- d6_book_settings 

# las migraciones de archivos son configurables, ver https://www.drupal.org/node/2257723 
- d6_file: 
    source: 
      conf_path: sites/assets 
    destination: 
      source_base_path: destination/base/path 
      destination_path_property: uri 

Coloca el archivo manifest en una ubicaci贸n accesible al ejecutar Drush. Se recomienda guardarlo en tu sistema de control de versiones para poder rastrear cambios en tus migraciones.

Aseg煤rate de que los m贸dulos usados por las migraciones listadas en el archivo manifest existen y est谩n habilitados en el sitio fuente (por ejemplo, el m贸dulo de campo para d6_field). De lo contrario, se producir谩n errores al ejecutar las migraciones.

Las migraciones definidas en el archivo manifest se ejecutan desde la l铆nea de comandos como se muestra abajo. Reemplaza la URL de la base de datos y la ruta al archivo manifest con los valores correspondientes (por ejemplo, migrate-upgrade, migrate-manifest aceptan URL MySQL o clave del arreglo en settings.php):

drush migrate-manifest --legacy-db-url=mysql://d6user:d6pass@localhost/drupal_6 manifest.yml 

Notas para usuarios de Acquia Dev Desktop

Si usas Acquia Dev Desktop y tienes un sitio Drupal 6 en Dev Desktop, las credenciales por defecto de la base de datos son drupaluser sin contrase帽a y puerto 33067 para la base de datos en la IP 127.0.0.1. Esto significa que en los comandos --legacy-db-url=mysql://drupaluser:@127.0.0.1:33067/drupal_6 se asume que el nombre de la base de datos es drupal_6. Ejecuta drush status si tienes problemas de conexi贸n para verificar estos valores.

Gu铆a de comandos de migraci贸n Drush

migrate-upgrade (sin alias)

Proporcionado por el proyecto Migrate Upgrade. 脷salo para iniciar la actualizaci贸n de Drupal 6/7 a Drupal 8. Este comando generar谩 configuraciones de migraci贸n basadas en la configuraci贸n y contenido del sitio fuente.

Consulta ejemplos m谩s arriba en esta documentaci贸n.

Ejemplo principal

drush migrate-upgrade --legacy-db-key=migrate

Opciones

  • legacy-db-url: informaci贸n de conexi贸n a la base de datos para la base de datos fuente.
  • legacy-db-prefix: prefijo de tabla para la base de datos fuente.
  • legacy-root: ruta al sitio fuente, usada para acceder al contenido en el directorio de archivos. Si los archivos son privados, debe usarse la ruta local, para archivos p煤blicos tambi茅n funciona http(s).
  • configure-only: usa esto para crear solo las configuraciones de migraci贸n. Cuando esta opci贸n est谩 activada, las migraciones se generan para poder ejecutarse individualmente con "drush migrate-import".

migrate-status (ms)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para obtener una lista de todas las migraciones con su estado actual.

Ejemplo principal

drush migrate-status

migrate-import (mi)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para ejecutar una o varias migraciones. Normalmente se usa con migraciones personalizadas desde fuentes no Drupal. Por ejemplo, si has creado e importado una configuraci贸n de migraci贸n personalizada, este comando puede usarse para ejecutarla.

Ejemplos principales

drush migrate-import migration_id
drush migrate-import --group=files

Opciones

  • all: ejecuta todas las migraciones configuradas.
  • group: ejecuta todas las migraciones de un grupo espec铆fico.
  • limit: l铆mite en la cantidad de elementos procesados por migraci贸n.
  • feedback: frecuencia de mensajes de progreso en elementos procesados.
  • idlist: lista separada por comas de IDs de fuente para importar.
  • update: migra nuevos elementos y tambi茅n los previamente migrados que han cambiado en la fuente.
  • force: fuerza la ejecuci贸n aunque haya dependencias no cumplidas.

 

Casos de uso comunes

  • Cuando se usa migrate-upgrade --configure-only, se crean objetos de configuraci贸n. Como Drupal 8 por defecto no permite sobreescribir objetos existentes, migrate-upgrade no puede usarse para ejecutar migraciones despu茅s de migrate-upgrade --configure-only. En su lugar, usa migrate-import.
  • Cuando una migraci贸n personalizada es creada e importada (por la UI de configuraci贸n o drush config-import), usa migrate-import para ejecutarla.

Consejo profesional: si importaste una configuraci贸n de migraci贸n personalizada y necesitas actualizarla y reimportarla, usa el m贸dulo Configuration Update Manager.

migrate-rollback (mr)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para revertir una migraci贸n. Normalmente se usa para pruebas o si tuviste problemas y necesitas comenzar de nuevo. Usa con el ID o grupo de migraci贸n.

Ejemplos principales

drush migrate-rollback migration_id
drush migrate-rollback --group=files

migrate-stop (mst)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para detener una operaci贸n de migraci贸n activa.

Ejemplo principal

drush migrate-stop migration_id

migrate-reset-status (mrs)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para restablecer el estado de una migraci贸n activa a pendiente.

Ejemplo principal

drush migrate-reset-status migration_id

migrate-messages (mmsg)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para ver mensajes relacionados con una migraci贸n. Es 煤til cuando fallan migraciones, para saber la causa del fallo.

Ejemplo principal

drush migrate-messages migration_id

migrate-fields-source (mfs)

Proporcionado por el m贸dulo Migrate Tools. 脷salo para listar los campos disponibles para mapeo en la fuente.

Ejemplo principal

drush migrate-fields-source migration_id