Foreword
A lot of teams move their backups to object storage because the per-GB price looks unbeatable. Then the first restore bill arrives, or a cross-region replication job runs for a month, and the number on the invoice stops matching the number on the pricing page. This article breaks down the real cost structure of object storage backup, using current pricing from Amazon S3, Cloudflare R2, and Backblaze B2 as examples, and shows where the hidden costs live.
The headline price is only one line item
Amazon S3 Standard starts at $0.023 per GB-month** for the first 50 TB. Cloudflare R2 charges $0.015 per GB-month for standard storage and $0.01 per GB-month for infrequent access. Backblaze B2 sits at **$6.95 per TB per month, which works out to roughly $0.00695 per GB-month.
On capacity cost alone, object storage beats block storage by a wide margin. A 10 TB backup archive on S3 Standard runs about $230 per month. The same volume on block storage or a traditional SAN costs several times that.
But capacity is not the whole bill.
Cross-region replication is where budgets break
Cross-region replication is the first hidden cost. AWS charges $0.02 per GB** for inter-region data transfer. A 10 TB backup set that replicates daily generates $6 per day, or $180 per month, in replication traffic. Over a year, that reaches **$2,160.
Cloudflare R2 eliminates egress fees entirely, including cross-region transfers. Backblaze B2 offers free egress up to 3x the average monthly stored data, then charges $0.01 per GB beyond that. Those differences matter for teams planning multi-region backup architectures.
The restore bill nobody plans for
Restore egress is the second hidden cost. Backup data only has value when it can be restored, and restoring from object storage often means pulling data across the public internet or into a compute environment.
Amazon S3 charges standard egress rates for data pulled out of a bucket, typically $0.09 per GB** after the first 100 GB per month. A 5 TB restore costs **$450 in egress alone, which is more than two months of storage for the same data. If restore happens more than once or twice a year, egress can rival or exceed the storage line item.
Cloudflare R2 charges zero egress for all storage classes. Backblaze B2 includes free egress up to 3x the average monthly stored data.
Minimum storage duration and deletion penalties
Object storage is built for data that stays put. When retention policies change or old backups are cleaned up, minimum storage duration requirements apply.
S3 Standard-IA and One Zone-IA impose a 30-day minimum. Objects deleted earlier are charged for the remaining days.
S3 Glacier Instant Retrieval and Flexible Retrieval require 90 days.
S3 Glacier Deep Archive requires 180 days.
For teams that rotate backups frequently or run short retention cycles, these minimums turn cheap archive storage into a fixed cost regardless of actual usage.
API request costs add up at scale
Every PUT, GET, and LIST operation on object storage is billed. Amazon S3 charges $0.005 per 1,000 PUT requests** and $0.0004 per 1,000 GET requests. Cloudflare R2 charges $4.50 per million Class A operations and **$0.36 per million Class B operations.
For a backup workload that writes millions of small objects, API request costs can become a meaningful line item. Backing up a database as one large object is cheaper than backing it up as thousands of small files.
When object storage still wins
Object storage remains the right choice for long-term retention, compliance archives, and cold data that is written once and rarely read. S3 Glacier Deep Archive at $0.00099 per GB-month is hard to beat for data that can tolerate retrieval delays of hours.
The math changes when restore frequency and replication requirements enter the picture. For weekly restores or active disaster recovery replication, the egress and transfer fees can make block storage snapshots or a dedicated backup appliance more predictable.
A practical cost model
For a backup architecture, the total cost formula looks like this:
Storage capacity × storage rate
Cross-region traffic × transfer rate
Restore frequency × restore volume × egress rate
API request volume × request rate
Minimum duration penalties for early deletion
Teams that only budget the first term will consistently underestimate their object storage backup TCO. The second and third terms are where the surprises live.
Summary
Object storage is cheaper than block storage for capacity, not necessarily for backup operations. Cross-region replication traffic, restore egress fees, API request costs, and minimum storage duration penalties can turn a $0.015 per GB storage rate into a significantly higher effective cost per protected gigabyte.
The right approach is to model backup TCO across all five cost dimensions, not just the headline storage rate.
Thank you very much for reading to the end!
