Jigar KarangiyaJigar Karangiya

How to Sync Magento 2 Media Files Using rsync on Adobe Commerce Cloud

JK
Jigar Karangiya
· 2 min read
How to Sync Magento 2 Media Files Using rsync on Adobe Commerce Cloud

When working on Adobe Commerce (Magento 2) Cloud projects, there are times when your product images or other media assets in pub/media need to be synced across environments — for example, from production to staging or local.

This tutorial will show you how to do that using the powerful [rsync](https://www.geeksforgeeks.org/linux-unix/rsync-command-in-linux-with-examples/) command.


Step 1: Understand the Use Case

Magento stores all product images inside this directory:

text
pub/media/catalog/product/

These images are not stored in the database , so when you set up a staging or local environment, the media folder might be missing.

To fix that, we’ll use rsync to copy media from one environment (like production) to another (like staging or local).


Step 2: Get SSH Access to Your Cloud Environment

First, log in to your project using the Magento Cloud CLI:

text
magento-cloud login

List all your available projects:

text
magento-cloud project:list

Copy your desired Project ID. It will look something like:

text
phoshzb26izzz

From now on, we’ll refer to it as your_project_id.


Step 3: List and Identify Environments

Now list all environments for your project:

text
magento-cloud environment:list -p your_project_id

Typical output:

text
* master (production)
  staging
  development

You’ll need the environment name (e.g. staging) in the next steps.


Step 4: Find the SSH Alias for Your Environment

Get the SSH alias (used in rsync) with:

text
magento-cloud ssh -p your_project_id -e staging --pipe

You’ll get something like:

text
1.ent-phoshzb26izzz-staging2-5zxmgzy@ssh.us-a1.magento.cloud

This will be used as the destination in the rsync command.


Step 5: Sync Local Media to Staging (or Any Environment)

Use the following command to sync images from your local machine to the cloud environment :

Run
rsync -azvP pub/media/catalog/product/ 1.ent-phoshzb26izzz-staging2-5zxmgzy@ssh.us-a1.magento.cloud:pub/media/catalog/product/

Replace the 1.ent-... alias with the one from your project.

Optional: Dry Run First

Test the command without actually copying files:

Run
rsync -azvP --dry-run pub/media/catalog/product/ 1.ent-phoshzb26izzz-staging-5zxmgzy@ssh.us-a1.magento.cloud:pub/media/catalog/product/

You can also copy files directly from one server to another , such as from production to staging , without needing to download them locally.

Simply SSH into the source environment (e.g., production), and then run the rsync command using the destination environment’s SSH alias as the target.

This allows for a direct server-to-server file transfer, which is faster and more efficient.


Bonus – Sync from Cloud to Local

If you want to pull images from cloud → local instead, just reverse the direction:

Run
rsync -azvP 1.ent-phoshzb26izzz-staging-5zxmgzy@ssh.us-a1.magento.cloud:pub/media/catalog/product/ pub/media/catalog/product/

Step 6: SSH into the Cloud Environment to Verify

After syncing, SSH into the environment to verify the files:

text
magento-cloud ssh -p your_project_id -e staging

Then check the product image directory:

Run
cd pub/media/catalog/product/
ls -al

Step 7: Clean Cache

Run
php bin/magento cache:clean
php bin/magento cache:flush

If using Fastly or Varnish, you may need to clear those caches as well.

That’s it!

So, Using rsync along with Magento Cloud CLI (magento-cloud) helps you manage media files efficiently across environments.

You may also like,

Backups (snapshots) in Magento Commerce Cloud

Adobe Commerce Cloud Project Structure

Thank you, See you in the next blog.

Written by Jigar Karangiya, Adobe Commerce & Magento 2 developer.

More about me

Related posts