All Sync Guides
Sync Guide

How to Transfer Files from Backblaze B2 to Cloudflare R2 on macOS: 3 Methods That Work

Learn how to transfer files from Backblaze B2 to Cloudflare R2 on macOS — three methods: manual web upload/download, OurClone's Migrate tool, and the rclone command line.

Overview

Backblaze B2 and Cloudflare R2 are both budget object stores, but R2's truly unlimited free egress and tight Cloudflare integration tempt a lot of B2 users to consolidate. This guide compares the two and shows three ways to move your buckets on macOS — manually, with OurClone, or with rclone.

Why Move from Backblaze B2 to Cloudflare R2?

Both are cheap, so this isn't usually a cost-rescue migration like leaving S3 — it's about egress headroom and ecosystem. B2 includes a generous free download allowance but still meters egress beyond it; R2 removes egress charges entirely, which matters if you serve a lot of traffic or already run on Cloudflare.

  • ♾️ Unmetered Egress — B2's free egress is generous but capped; R2 charges nothing for downloads at any volume, which suits heavy-traffic assets.
  • 🌐 You're Already on Cloudflare — If your site runs through Cloudflare's CDN and Workers, R2 sits natively inside that stack with no cross-provider hops.
  • ⚙️ Workers and Edge Compute — R2 buckets bind directly to Cloudflare Workers for edge-side processing, something B2 can't do natively.
  • 🔌 Same S3 API — Both speak S3, so OurClone, rclone, and your tooling keep working through the move with just a credential and endpoint swap.

Backblaze B2 vs Cloudflare R2: What Each One Is Good At

Two low-cost object stores with slightly different philosophies — B2 leans simple-and-cheap, R2 leans egress-free-and-integrated.

🟥 Backblaze B2

Backblaze B2 is the no-frills, low-price object store popular for backup and archive.

  • Storage around $0.006/GB/month — one of the cheapest on the market.
  • Free egress up to 3× your stored data daily, plus free egress via the Cloudflare Bandwidth Alliance.
  • Native B2 API alongside an S3-compatible endpoint.
  • Simple, flat pricing managed in the Backblaze console.

🟠 Cloudflare R2

Cloudflare R2 is object storage with zero egress fees and deep edge integration.

  • No egress charges at any volume — only storage and operations cost money.
  • Storage around $0.015/GB/month.
  • Native binding to Cloudflare Workers and the global CDN.
  • S3-compatible endpoint at https://<accountid>.r2.cloudflarestorage.com.

Method 1: Download from Backblaze B2 and Upload to Cloudflare R2 by Hand

You can shuttle objects through your Mac using each provider's web console. It's workable for a few files and tedious for a whole bucket.

  1. 📥 Download from Backblaze B2 — Sign in to the Backblaze web app, open your B2 bucket, select objects, and download them into a folder like ~/Downloads/b2-export.
  2. Download files from Backblaze B2 web interface
  3. 📤 Upload to Cloudflare R2 — In the Cloudflare dashboard, open R2, select your bucket, and drag the downloaded files in.
  4. Upload files to Cloudflare R2 dashboard

Good for a handful of objects, but there's no resume, no bulk selection at scale, and your Mac holds a full local copy in between. For real buckets, Method 2 is the saner path.

Method 2: Transfer Backblaze B2 to Cloudflare R2 with OurClone

OurClone moves objects from Backblaze B2 to Cloudflare R2 directly through your Mac, with live progress and no relay server. The flow is three steps: add the source, add the target, run the migration.

  • 🔐 Step 1: Add Backblaze B2 as the Source — In OurClone open Add Storage and choose Backblaze B2. Set a Remote Name, then enter your Account ID (keyID) and Account Key (applicationKey) — create these under App Keys in the Backblaze console. The Endpoint is optional. OurClone verifies and adds it.
  • Add Backblaze B2 to OurClone
  • 🔐 Step 2: Add Cloudflare R2 as the Destination — Still in Add Storage, choose Cloudflare R2. Set a Remote Name, then enter the Access Key ID and Secret Access Key from an R2 API token (create one under R2 → Manage R2 API Tokens in the Cloudflare dashboard) and the Endpoint https://<accountid>.r2.cloudflarestorage.com. R2 then joins B2 in your storage list.
  • Add Cloudflare R2 to OurClone
  • 🔀 Step 3: Set Source, Target and Mode on the Migrate Page — Open the Migrate tab. Pick Backblaze B2 and browse to the bucket or prefix to move, then pick Cloudflare R2 and choose (or create) the destination bucket. Select a transfer mode:
    • Copy — duplicates objects to R2; nothing is deleted from Backblaze B2.
    • Move — transfers to R2, then deletes the originals from Backblaze B2.
    • Sync — makes R2 mirror B2; extra objects in R2 are removed, but Backblaze B2 is left untouched.
    Click Migrate to start.
  • Configure Source, Target and transfer mode in OurClone Migrate
  • 📊 Watch Progress and Confirm — The Task panel shows live counts, speed, ETA, and any failed objects. When it reads completed, open Cloudflare R2 in OurClone (or the Cloudflare dashboard) to confirm. If you chose Move, verify the B2 bucket no longer holds the originals.
  • Monitor transfer progress in OurClone Task panel

Since the transfer runs locally and respects your chosen mode, you control whether B2 keeps its copy — and a large migration resumes from where it stopped rather than restarting.

Method 3: Transfer Backblaze B2 to Cloudflare R2 with rclone (Command Line)

OurClone is built on rclone, so you can run the B2-to-R2 move straight from a terminal — useful for automation and scripted, repeatable jobs.

Step 1: Install rclone

Grab it from the official downloads page, or run brew install rclone on macOS.

Step 2: Configure both remotes

Run rclone config and add a b2 remote (with your keyID and applicationKey) and a Cloudflare R2 remote (provider Cloudflare, with the R2 token keys and the https://<accountid>.r2.cloudflarestorage.com endpoint). Name them b2 and r2.

Step 3: Run the transfer

Pick the verb that maps to OurClone's modes:

# Copy — keep the B2 bucket intact
rclone copy b2:archive r2:archive --progress

# Move — delete the B2 originals after transfer
rclone move b2:archive r2:archive --progress

# Sync — make R2 mirror B2 (deletes extras in R2)
rclone sync b2:archive r2:archive --progress

For example, rclone copy b2:site-backups r2:site-backups --progress copies your backups bucket to R2 and leaves B2 untouched.

Caveats

  • ⚠️ sync and move delete objects — confirm direction and run --dry-run first.
  • ⚠️ No GUI; progress and errors are terminal-only.
  • ⚠️ Each remote's keys and endpoint are configured by hand — the friction OurClone removes.

Common B2 → R2 Migration Snags

Both stores are S3-compatible, so issues are mostly about credentials and endpoints.

  • 🔗 R2 endpoint must be exact — Use https://<accountid>.r2.cloudflarestorage.com; a wrong account ID is the number-one cause of failed connections.
  • 🔑 B2 key capabilities — Your B2 application key needs read and list on the source bucket; restricted keys can stall the job with permission errors.
  • 🐢 Web route doesn't scale — Manual download/upload has no resume and no real bulk handling. OurClone and rclone stream object-by-object.
  • 🔁 Copy vs Sync behavior — Copy adds objects alongside whatever's in R2; Sync makes R2 match B2 exactly and deletes anything extra on the R2 side.
  • 🧮 Object counts — B2 hides lifecycle-hidden file versions; check the Task panel's summary if your R2 count differs from what B2's console shows.

Will this delete my B2 objects?

Only if you choose Move. Copy leaves Backblaze B2 fully intact, and Sync only removes extra objects in R2 — never in B2.

Summary

You can migrate objects from Backblaze B2 to Cloudflare R2 manually through each web console, with OurClone's local Copy/Move/Sync Migrate engine, or with rclone in a terminal. OurClone runs the transfer on your Mac with live progress — Copy keeps your B2 objects, Move deletes them after transfer, and Sync makes R2 mirror B2.

Questions? [email protected]
↑ Back to Top