How to Migrate from Azure blob storage to Quake AI
Coming from another cloud?
▸Azure·Blob Storage, Blob versioning
Blob versioning
- Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts; Swift native uses container headers (X-Versions-Location) requiring archive container, two modes differing on DELETE behavior.
- Azure versions immutable, one current version; Swift POST metadata doesn't version, DELETE promotes or moves to history based on mode.
- Azure integrates with soft delete/lifecycle; Swift S3 emulation may differ in delete markers/version listing behaviors from pure S3.
How to migrate from Azure blob storage to Quake AI
This guide walks through migrating objects from an Azure Blob Storage container to Quake AI object storage using rclone for direct cloud-to-cloud transfer.
Service mapping#
Azure to Quake AI
| Azure service | Quake AI equivalent | Key difference |
|---|---|---|
| Blob Storage | Object storage | No notable divergence |
| RBAC / ABAC / SAS | Object storage | Azure uses RBAC/ABAC with Entra ID (AAD), SAS, shared keys; Quake AI/OpenStack Swift S3 uses Keystone/S3 token auth mapped to Swift ACLs,... see details |
| Blob lifecycle management | S3 | Azure supports automated tiering (hot/cool/cold/archive) and expiration rules based on age, access time; Quake AI Swift S3 API lacks native... see details |
| N/A (No native S3 API — Azure Blob Storage REST API only) | S3 Compatibility | Azure Blob Storage has no native S3-compatible endpoint; S3 compatibility requires third-party gateways (Flexify.IO, S3Proxy). Applications... see details |
| Blob versioning | Versioning | Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts;... see details |
Prerequisites#
- A Quake AI account with S3 credentials
- An Azure Storage Account SAS token with Read and List permissions, or an Azure service principal with Storage Blob Data Reader role
- rclone installed (v1.65+)
Before you start#
Read the migration planning guide to review S3/Swift feature compatibility and build a validation checklist.
Azure-specific considerations:
- Terminology mapping: Azure uses "containers" (equivalent to S3 buckets) and "blobs" (equivalent to S3 objects). Quake AI uses both "containers" and "buckets" interchangeably.
- Access tiers: Azure Blob offers Hot, Cool, Cold, and Archive tiers, plus a smart tier option that automatically moves data across the Hot, Cool, and Cold tiers based on access patterns (it does not cover Archive). Data on Quake AI is stored on a single tier. Two Azure tier behaviors affect migration timing and cost:
- Minimum retention and early deletion: Azure sets a minimum retention period for cooler tiers: 30 days for Cool, 90 days for Cold, and 180 days for Archive. If you delete source objects after migrating them, objects still inside their minimum period incur an early deletion fee. Check each object's tier and age before you clean up the source.
- Archive rehydration: Objects in the Archive tier must be rehydrated before they can be copied. Standard-priority rehydration can take up to 15 hours; high-priority rehydration can finish in under 1 hour for objects under 10 GB but costs more. Rehydration incurs a per-GB fee.
- RBAC and ABAC: Azure uses Entra ID (Azure AD) with RBAC and ABAC policies. These do not translate to Swift ACLs. Re-apply access controls on Quake AI using grant access control.
- Lifecycle management: Azure lifecycle policies (tier transitions, expiration) are not supported on Quake AI. See retention without lifecycle policies.
- Hierarchical namespace (ADLS Gen2): If your Azure Storage Account has hierarchical namespace enabled (Azure Data Lake Storage Gen2), rclone's
azureblobbackend supports it but may requireadls = truein the remote config, and SAS token scoping can differ. Verify your settings against the rclone Azure Blob documentation.
Configure rclone remotes#
Using a SAS token#
Generate a SAS token in the Azure portal: Storage Account > Shared access signature > grant Read and List > generate.
Add both remotes to ~/.config/rclone/rclone.conf:
[azure]
type = azureblob
account = YOUR_STORAGE_ACCOUNT_NAME
sas_url = https://YOUR_ACCOUNT.blob.core.windows.net/?YOUR_SAS_TOKEN
[quakeai]
type = s3
provider = Ceph
access_key_id = YOUR_RUMBLE_ACCESS_KEY
secret_access_key = YOUR_RUMBLE_SECRET_KEY
endpoint = object.us-east-2.rumble.cloud
acl = privateUsing a service principal#
[azure]
type = azureblob
account = YOUR_STORAGE_ACCOUNT_NAME
tenant = YOUR_TENANT_ID
client_id = YOUR_CLIENT_ID
client_secret = YOUR_CLIENT_SECRETVerify both remotes:
rclone lsd azure:
rclone lsd quakeai:Create the destination bucket#
rclone mkdir quakeai:my-bucketRun the migration#
Initial copy#
rclone copy azure:my-source-container quakeai:my-bucket \
--transfers 16 \
--checkers 32 \
--s3-chunk-size 64M \
--progress \
--log-file migration.log \
--log-level INFODelta syncs#
rclone sync azure:my-source-container quakeai:my-bucket \
--transfers 16 \
--checkers 32 \
--progressSchedule daily until cutover.
Estimate egress cost#
Azure charges per-GB for egress, with rates that vary by region. Azure does not currently run a free egress program for migrations. For current rates, see the Azure bandwidth pricing page.
For large data sets, consider a phased migration or check if your Azure support plan includes migration credits.
Verify the migration#
rclone size azure:my-source-container
rclone size quakeai:my-bucketCheck file integrity:
rclone check azure:my-source-container quakeai:my-bucket \
--one-way \
--log-file check.logSee the validation checklist for the full procedure.
Cut over#
- Run a final
rclone sync. - Update your application's storage endpoint. See update application endpoint.
- Keep the Azure source container for 30 days as a rollback target.
See also#
- Plan your migration: compatibility matrix, cost estimation, validation checklist
- Migration tools comparison: rclone configuration and alternatives
- Update application endpoint: swap SDK config to Quake AI
Usage Guidelines
The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.
For the full policy, see Usage Guidelines.
Last validated: 08.09.2026
Quick answers
- What is the S3-compatible endpoint hostname?CLIAPI
- Where do I set CORS rules, lifecycle policies, or bucket policies in the Console?Console
- Why do Object Storage API curl examples fail before the first request?API
- Why does my public bucket URL return 404 from the browser after I apply a public-read policy?APIConsole
See Also
S3 on Quake AI
Prerequisite
How to Migrate from Backblaze B2 to Quake AI
Shares: S3, Migration
How to Migrate from DigitalOcean Spaces to Quake AI
Shares: S3, Migration
How to Migrate from Google Cloud storage to Quake AI
Shares: S3, Migration
How to Migrate from Hetzner object storage to Quake AI
Shares: S3, Migration