How to Migrate Azure Blob Storage to Vultr Object Storage

Azure Blob Storage is Microsoft's object storage solution for the cloud, designed to store massive amounts of unstructured data such as images, videos, backups, and application data. Migrating from Azure Blob Storage to Vultr Object Storage allows you to benefit from simplified pricing, S3-compatible APIs, and flexible deployment options across multiple global regions. Vultr Object Storage provides several advantages:
- S3 Compatibility: Vultr Object Storage uses the industry-standard S3 API, enabling seamless integration with existing tools, SDKs, and applications.
- Multiple Locations: Choose from multiple data center locations worldwide to store your data closer to your users.
- Predictable Pricing: Vultr offers straightforward pricing without complex egress fees or tiered storage calculations.
- CDN Integration: Vultr Object Storage integrates with Vultr's CDN for low-latency content delivery.
This guide explains how to migrate your containers and blobs from Azure Blob Storage to Vultr Object Storage using Rclone. You will configure authentication for both storage providers, transfer your data, verify integrity, and complete the cutover.
Prerequisites
Before you begin, you need to:
- Have an existing Azure Storage Account with Blob containers to migrate.
- Have access to your Azure Storage Account name and access key from the Azure Portal.
- Provision a Vultr Object Storage subscription and retrieve the S3 credentials from the Overview tab.
- Deploy an Ubuntu 24.04-based server on Vultr to use as the migration workstation and enable the Limited User Login feature.
- Access the instance using SSH.
Retrieve Azure Storage Account Credentials
Before configuring Rclone, gather the necessary credentials from your Azure Storage Account.
Log in to the Azure Portal.
Navigate to Storage accounts and select your storage account.
In the left menu, click Access keys under Security + networking.
Copy the Storage account name and one of the Key values. You will use these to authenticate Rclone with Azure Blob Storage.
You can also use a Shared Access Signature (SAS) token for more granular access control. Generate a SAS token from the Shared access signature section if preferred.Note
Set Up the Migration Workstation
Rclone is an open-source command-line tool for managing cloud storage, supporting over 40 providers including Azure Blob Storage and S3-compatible services like Vultr Object Storage. In this section, you will install Rclone and configure it to authenticate with both Azure and Vultr.
Update the APT package index.
console$ sudo apt update
Download the latest Rclone installation script.
console$ wget -O rclone.sh https://rclone.org/install.sh
Run the script to install Rclone.
console$ sudo bash rclone.sh
Verify the installed Rclone version.
console$ rclone version
Your output should be similar to the one below:
rclone v1.69.0 - os/version: ubuntu 24.04 (64 bit) - os/kernel: 6.8.0-57-generic (x86_64) - os/type: linux - os/arch: amd64 - go/version: go1.23.4 - go/linking: static - go/tags: noneGenerate a new Rclone configuration file.
console$ rclone config file
Your output should be similar to the one below:
Configuration file doesn't exist, but rclone will use this path: /home/linuxuser/.config/rclone/rclone.conf
Configure Rclone with Azure Blob Storage
Configure Rclone to authenticate with your Azure Storage Account using your account name and access key.
Open the Rclone configuration file.
console$ nano /home/linuxuser/.config/rclone/rclone.conf
Add the following Azure Blob Storage configuration block. Replace
YOUR_AZURE_STORAGE_ACCOUNTandYOUR_AZURE_ACCESS_KEYwith your actual credentials.ini[azure] type = azureblob account = YOUR_AZURE_STORAGE_ACCOUNT key = YOUR_AZURE_ACCESS_KEY
Save and close the file.
The above configuration creates a remote named
azurethat connects to your Azure Blob Storage using account key authentication.List all configured Rclone remotes to confirm the Azure configuration is active.
console$ rclone listremotes
Output:
azure:List all containers in your Azure Storage Account to verify the connection.
console$ rclone lsd azure:
Your output should be similar to the one below:
-1 2025-01-15 10:30:00 -1 media-assets -1 2025-01-15 11:45:00 -1 application-logs -1 2025-01-15 14:20:00 -1 backup-data
Configure Rclone with Vultr Object Storage
Configure Rclone to authenticate with your Vultr Object Storage subscription using your S3 credentials.
Open the Rclone configuration file.
console$ nano /home/linuxuser/.config/rclone/rclone.conf
Add the following Vultr Object Storage configuration block. Replace
YOUR_VULTR_ACCESS_KEY,YOUR_VULTR_SECRET_KEY, andYOUR_VULTR_ENDPOINTwith your actual Vultr Object Storage credentials and endpoint (e.g.,ewr1.vultrobjects.com).ini[vultr] type = s3 provider = Other access_key_id = YOUR_VULTR_ACCESS_KEY secret_access_key = YOUR_VULTR_SECRET_KEY endpoint = YOUR_VULTR_ENDPOINT env_auth = false
Save and close the file.
List all configured Rclone remotes to confirm both configurations are active.
console$ rclone listremotes
Output:
azure: vultr:View the full Rclone configuration to verify your credentials.
console$ rclone config show
Your output should be similar to the one below:
[azure] type = azureblob account = mystorageaccount key = XXXXXXXXXXXXXXXXXXXX [vultr] type = s3 provider = Other access_key_id = XXXXXXXXXXXXXXXXXXXX secret_access_key = XXXXXXXXXXXXXXXXXXXX endpoint = ewr1.vultrobjects.com env_auth = falseList all buckets in your Vultr Object Storage subscription to verify the connection.
console$ rclone lsd vultr:
If your subscription has no buckets yet, the output will be empty.
Migrate Azure Blob Storage to Vultr Object Storage
You can migrate all containers or specific containers from Azure Blob Storage to Vultr Object Storage. Rclone handles the translation between Azure's container/blob structure and S3's bucket/object structure automatically. Follow the steps below to transfer your data.
List all containers in your Azure Storage Account.
console$ rclone lsd azure:
Your output should be similar to the one below:
-1 2025-01-15 10:30:00 -1 media-assets -1 2025-01-15 11:45:00 -1 application-logs -1 2025-01-15 14:20:00 -1 backup-dataList all blobs in a specific container to review its contents.
console$ rclone ls azure:media-assets
Your output should be similar to the one below:
2986036 images/logo.png 2944141 images/banner.jpg 1024512 videos/intro.mp4Migrate all containers and blobs from Azure to Vultr Object Storage.
console$ rclone sync azure: vultr: --progress
Monitor the transfer and wait for it to complete. Your output should be similar to the one below when successful:
Transferred: 45.234 MiB / 45.234 MiB, 100%, 1.2 MiB/s, ETA 0s Transferred: 156 / 156, 100% Elapsed time: 38.5sThe transfer duration depends on the total size of your Azure Blob Storage. Verify the
100%prompt to confirm a complete migration.To migrate a specific container, specify the source and destination. Replace
media-assetswith your container name.console$ rclone sync azure:media-assets vultr:media-assets --progress
Output:
Transferred: 12.451 MiB / 12.451 MiB, 100%, 985.6 KiB/s, ETA 0s Transferred: 42 / 42, 100% Elapsed time: 13.2s
For large migrations, run Rclone in a screen or tmux session to prevent interruption if your SSH connection drops.
Set Up Automatic Synchronization with Cron (Optional)
If your Azure Blob Storage is actively in use during migration, set up automatic synchronization to capture ongoing changes before the final cutover.
Open the system crontab file.
console$ sudo nano /etc/crontab
Add the following cron entry to synchronize every 30 minutes.
ini*/30 * * * * linuxuser /usr/bin/rclone sync azure: vultr: --progress >> /var/log/azure-vultr-migration.log 2>&1
Save and close the file.
This cron job runs every 30 minutes as the
linuxuseruser and logs all output to/var/log/azure-vultr-migration.log.Verify the cron job is active.
console$ sudo grep rclone /etc/crontab
Verify the Migrated Data
Verify that all your data has been migrated correctly and matches the source Azure Blob Storage.
List all buckets in your Vultr Object Storage subscription to confirm containers were migrated.
console$ rclone lsd vultr:
Output:
-1 2025-01-15 12:00:00 -1 media-assets -1 2025-01-15 12:00:00 -1 application-logs -1 2025-01-15 12:00:00 -1 backup-dataRun a checksum comparison to verify data integrity between Azure and Vultr.
console$ rclone check azure: vultr:
Your output should be similar to the one below:
2025/01/15 14:30:00 NOTICE: S3 root: 0 differences found 2025/01/15 14:30:00 NOTICE: S3 root: 156 matching filesThe
0 differences foundmessage confirms that all blobs in Azure match the objects in Vultr Object Storage.Verify a specific container/bucket. Replace
media-assetswith your container name.console$ rclone check azure:media-assets vultr:media-assets
Output:
2025/01/15 14:32:00 NOTICE: S3 bucket media-assets: 0 differences found 2025/01/15 14:32:00 NOTICE: S3 bucket media-assets: 42 matching filesCompare the total size of source and destination.
console$ rclone size azure: $ rclone size vultr:
Both commands should return similar total sizes.
Cutover to Vultr Object Storage
After verification confirms data integrity, update your applications to use Vultr Object Storage.
Update application configurations: Replace Azure Blob Storage connection strings with Vultr Object Storage S3 credentials.
- Azure SDK calls should be replaced with S3-compatible SDK calls
- Update environment variables or configuration files with Vultr endpoint and credentials
Update CDN or static hosting: If you use Azure CDN, configure Vultr CDN to serve content from your new Vultr Object Storage buckets.
Perform a final sync: Capture any last-minute changes before cutover.
console$ rclone sync azure: vultr: --progress
Remove the cron job if you configured automatic synchronization.
console$ sudo nano /etc/crontab
Delete the Rclone sync line and save the file.
Monitor applications for several days to ensure they function correctly with Vultr Object Storage.
Conclusion
You have migrated your data from Azure Blob Storage to Vultr Object Storage using Rclone. This guide covered retrieving Azure credentials, configuring Rclone for both providers, transferring containers and blobs, verifying data integrity, and completing the cutover. Your applications now benefit from Vultr's S3-compatible storage with predictable pricing and global availability. For more information on managing your Vultr Object Storage subscription, visit the product documentation page.