一、获取合适的Drush版本
确保你使用的是从composer或者Github获取的最新的drush。如果你使用Github版本,你仍然需要Composer下载相关的依赖。 Drupal.org/PECL/Pear/etc的Drush已经过期了。
对桌面端开发用户来说,你可以在桌面开发端通过发起一个命令提示符,运行下面的命令:[c:\your_path_to_acquia]\drush\composer global require drush/drush:dev-master 来使用composer更新drush。
检查Drush的版本drush --version
二、必要的Drupal模块
要使用Drush迁移,你需要下载并启用Migrate Upgrade模块,如果你计划做的不止一次性的升级,你需要下载migrate tools
三、简单的方法:使用 migrate-upgrade
迁移工具将添加 drush迁移的命令,比如drush migrate-staus(ms) 以及migrate-import(mi).如果你启用这个模块并运行drush migrate-status 而没有通过migte upgrade 模块做任何动作,你不会看到任何可用的迁移在运行。
这是因为独特的迁移被基于你设置的源数据动态地创建。只要Migrate 不知道使用的源,就不会有迁移被创建。
为了解决这个问题,我们使用migrate upgrade 模块,migrate upgrade 模块来自Drush命令 drush migrate-upgrade.这个模块做两件事情:
1)它将为你的网站生成迁移,基于你配置的源网站,比如,如果book 模块在你的Drupal6和Drupal8网站同时被启用,D6的book 迁移会被创建。
2)它通过依赖顺序,执行每一个创建的迁移。
尽管如此,为了更多的控制,你可能想通过--configure-only选项,这样,他只执行第一步的创建迁移。
drush migrate-upgrade --legacy-db-url=mysql://user:password@server/db --legacy-root=http://mydrupal6site.com --configure-only
加上configure-only 参数运行drush迁移Drupal后,你可以运行drush migrate-status 来列出可能执行的迁移。这时,你可以概览或者选择实行某些迁移。drush migrate-import {migrate name} 可以被用来分别执行他们,或者drush migrate-import --all 执行整个列表。
四、复杂的方法:使用 migrate-manifest
也可以通过一个manifest文件来设置一个特殊的迁移设置。这个让你可以以重复的方式运行成组的迁移。使用这种方法,你需要migrate manifest模块,当你有所有单元的设置,你可以通过运行drush config-list|grep migrate 得到全部可用的迁移。
这时,你需要创建一个可用的yaml文件,它看起来像下面的代码例子。你只需列出你需要的部分,你需要添加迁移来解决所有依赖,迁移能够被列出来,迁移将基于依赖为他们排序。
# user - 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 # taxonomy - d6_taxonomy_vocabulary - d6_taxonomy_settings - d6_taxonomy_term # nodes - 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:* # taxonomy fields - d6_term_node_revision - d6_term_node - d6_vocabulary_entity_display - d6_vocabulary_entity_form_display - d6_vocabulary_field_instance - d6_vocabulary_field # blocks - d6_block - d6_menu # custom blocks - d6_custom_block - d6_filter_format # book - d6_book - d6_book_settings # file migrations are configurable, see https://www.drupal.org/node/2257723 - d6_file: source: conf_path: sites/assets destination: source_base_path: destination/base/path destination_path_property: uri