Zend certified PHP/Magento developer

Best way to migrate Media Files after running the Magento Migration tool?

Magento 1.9.4 --> Magento 2.4.2-p1

I successfully ran the settings and data migration using the Magento Migration tool. Now I read up on how to transfer the Media Files over (product images) and the guide I’m looking at says:

Expect to manually transfer a few aspects of your site, such as images.

To copy the data over to Magento 2, we simply copy the M1:media folder over to M2:pub/media:

cp -r /path/to/magento1/media /path/to/magento2/pub

After that, we have to reindex the Magento 2 store with the following command:

php bin/magento indexer:reindex

Then recompile it:

php bin/magento deploy:mode:set production

Now, our website should have all our M1 products, along with their images.

My question is – can I do this via FTP? The reason being is running commands via SSH ROOT seems to cause a problem for us as the files change ownership and it needs to be chmoded afterwards to assign the correct ownership?

If I download the media directory to a local folder and then re-upload it to the new site’s Media folder, do I still have to run those commands to reindex the Magento 2 store and recompile it?

Also – am I to copy /public_html/media/catalog/product or should I copy everything in the Media folder?


As per a request from @Nilesh Dubey here is my config.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<config xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="urn:magento:module:Magento_DataMigrationTool:etc/config.xsd">
<steps mode="settings">
<step title="Settings Step">
<integrity>MigrationStepSettingsIntegrity</integrity>
<data>MigrationStepSettingsData</data>
</step>
<step title="Stores Step">
<integrity>MigrationStepStoresIntegrity</integrity>
<data>MigrationStepStoresData</data>
<volume>MigrationStepStoresVolume</volume>
</step>
</steps>
<steps mode="data">
<step title="Data Integrity Step">
<integrity>MigrationStepDataIntegrityIntegrity</integrity>
</step>
<step title="EAV Step">
<integrity>MigrationStepEavIntegrity</integrity>
<data>MigrationStepEavData</data>
<volume>MigrationStepEavVolume</volume>
</step>
<step title="Customer Attributes Step">
<integrity>MigrationStepCustomerIntegrity</integrity>
<data>MigrationStepCustomerData</data>
<volume>MigrationStepCustomerVolume</volume>
</step>
<step title="Map Step">
<integrity>MigrationStepMapIntegrity</integrity>
<data>MigrationStepMapData</data>
<volume>MigrationStepMapVolume</volume>
</step>
<step title="Url Rewrite Step">
<integrity>MigrationStepUrlRewriteVersion191to2000</integrity>
<data>MigrationStepUrlRewriteVersion191to2000</data>
<volume>MigrationStepUrlRewriteVersion191to2000</volume>
</step>
<step title="Log Step">
<integrity>MigrationStepLogIntegrity</integrity>
<data>MigrationStepLogData</data>
<volume>MigrationStepLogVolume</volume>
</step>
<step title="Ratings Step">
<integrity>MigrationStepRatingsIntegrity</integrity>
<data>MigrationStepRatingsData</data>
<volume>MigrationStepRatingsVolume</volume>
</step>
<step title="ConfigurablePrices step">
<integrity>MigrationStepConfigurablePricesIntegrity</integrity>
<data>MigrationStepConfigurablePricesData</data>
<volume>MigrationStepConfigurablePricesVolume</volume>
</step>
<!--       <step title="OrderGrids Step">                   -->
<!--           <integrity>MigrationStepOrderGridsIntegrity</integrity>       -->
<!--           <data>MigrationStepOrderGridsData</data>                      -->
<!--          <volume>MigrationStepOrderGridsVolume</volume>                 -->
<!--       </step>                                                              -->
<step title="Tier Price Step">
<integrity>MigrationStepTierPriceIntegrity</integrity>
<data>MigrationStepTierPriceData</data>
<volume>MigrationStepTierPriceVolume</volume>
</step>
<!--     <step title="SalesIncrement Step">                                         -->
<!--         <integrity>MigrationStepSalesIncrementIntegrity</integrity>           -->
<!--         <data>MigrationStepSalesIncrementData</data>                         -->
<!--         <volume>MigrationStepSalesIncrementVolume</volume>                  -->
<!--     </step>                                                                    -->
<step title="Inventory Step">
<integrity>MigrationStepInventoryIntegrity</integrity>
<data>MigrationStepInventoryData</data>
<volume>MigrationStepInventoryVolume</volume>
</step>
<step title="PostProcessing Step">
<data>MigrationStepPostProcessingData</data>
</step>
</steps>
<steps mode="delta">
<step title="Customer Attributes Step">
<delta>MigrationStepCustomerDelta</delta>
<volume>MigrationStepCustomerVolume</volume>
</step>
<step title="Map Step">
<delta>MigrationStepMapDelta</delta>
<volume>MigrationStepMapVolume</volume>
</step>
<step title="Log Step">
<delta>MigrationStepLogDelta</delta>
<volume>MigrationStepLogVolume</volume>
</step>
<step title="ConfigurablePrices step">
<delta>MigrationStepConfigurablePricesDelta</delta>
<volume>MigrationStepConfigurablePricesVolume</volume>
</step>
<step title="Tier Price Step">
<delta>MigrationStepTierPriceDelta</delta>
<volume>MigrationStepTierPriceVolume</volume>
</step>
<step title="Url Rewrite Step">
<delta>MigrationStepUrlRewriteVersion191to2000Delta</delta>
<volume>MigrationStepUrlRewriteVersion191to2000</volume>
</step>
<step title="OrderGrids Step">
<delta>MigrationStepOrderGridsDelta</delta>
<volume>MigrationStepOrderGridsVolume</volume>
</step>
<step title="SalesIncrement Step">
<delta>MigrationStepSalesIncrementDelta</delta>
<volume>MigrationStepSalesIncrementVolume</volume>
</step>
<step title="Inventory Step">
<delta>MigrationStepInventoryDelta</delta>
<volume>MigrationStepInventoryVolume</volume>
</step>
</steps>
<source>
<database host="localhost" name="name_of_database_Magento1" user="user_of_database_Magento1" password="password_of_database_Magento1"/>
</source>
<destination>
<database host="localhost" name="name_of_database_Magento2" user="user_of_database_Magento2" password="password_of_database_Magento2"/>
</destination>
<options>
<map_file>etc/opensource-to-opensource/1.9.4.0/map.xml.dist</map_file>
<eav_map_file>etc/opensource-to-opensource/map-eav.xml.dist</eav_map_file>
<eav_document_groups_file>etc/opensource-to-opensource/eav-document-groups.xml.dist</eav_document_groups_file>
<eav_attribute_groups_file>etc/opensource-to-opensource/eav-attribute-groups.xml.dist</eav_attribute_groups_file>
<log_map_file>etc/opensource-to-opensource/map-log.xml.dist</log_map_file>
<log_document_groups_file>etc/opensource-to-opensource/log-document-groups.xml.dist</log_document_groups_file>
<settings_map_file>etc/opensource-to-opensource/settings.xml.dist</settings_map_file>
<customer_map_file>etc/opensource-to-opensource/map-customer.xml.dist</customer_map_file>
<customer_document_groups_file>etc/opensource-to-opensource/customer-document-groups.xml.dist</customer_document_groups_file>
<customer_attribute_groups_file>etc/opensource-to-opensource/customer-attribute-groups.xml.dist</customer_attribute_groups_file>
<delta_document_groups_file>etc/opensource-to-opensource/deltalog.xml.dist</delta_document_groups_file>
<order_grids_document_groups_file>etc/opensource-to-opensource/order-grids-document-groups.xml.dist</order_grids_document_groups_file>
<map_document_groups>etc/opensource-to-opensource/map-document-groups.xml.dist</map_document_groups>
<class_map>etc/opensource-to-opensource/class-map.xml.dist</class_map>
<tier_price_map_file>etc/opensource-to-opensource/1.9.4.0/map-tier-price.xml.dist</tier_price_map_file>
<stores_map_file>etc/opensource-to-opensource/map-stores.xml.dist</stores_map_file>
<!--
In case bulk_size=0 it will be auto-detected for every document.
-->
<bulk_size>0</bulk_size>
<!--
Set direct_document_copy = 1 for better performance.
NOTE: 'source' and 'destination' databases MUST be placed on the same MySQL instance
and 'destination' user MUST be granted with 'SELECT' permissions on 'source' database
-->
<direct_document_copy>0</direct_document_copy>
<source_prefix>aa_</source_prefix>
<dest_prefix>bbcc_</dest_prefix>
<auto_resolve_urlrewrite_duplicates>0</auto_resolve_urlrewrite_duplicates>
<log_file>migration.log</log_file>
<progress_bar_format>%percent%% [%bar%] Remaining Time: %remaining%</progress_bar_format>
<upgrade_customer_password_hash>1</upgrade_customer_password_hash>
<edition_migrate>opensource-to-opensource</edition_migrate>
<edition_number>1.9.4.0</edition_number>
<init_statements_source>SET NAMES utf8;</init_statements_source>
<init_statements_destination>SET NAMES utf8;</init_statements_destination>
<crypt_key>akdfhaofsdjfjasdfsdu</crypt_key>
</options>
</config>