Review

Backblaze B2 as a Backup Target: 18 Months, $19 Total

Disclosure: this post contains affiliate links (Vendor programme). If you buy through them I may earn a commission, at no extra cost to you.

Why this matters

Offsite backup is the part of a self-hosted setup that everyone agrees is necessary and almost nobody does, because the options feel like either a $10/month minimum plan or a friend’s NAS in another city that you cannot rely on.

Backblaze B2 sits in the gap: object storage billed by the gigabyte, no minimum, S3-compatible, no client to install. I have used it as the offsite leg of my restic setup for eighteen months. This is the honest accounting.

What it is, precisely

B2 is object storage. You create a bucket, you get an S3-compatible endpoint, you point tools at it. There is a web UI for browsing and a CLI, but the normal use is that you never log in — restic writes, restic reads, you look at the bill once a month.

It is not:

  • a sync client (that is Computer Backup, a different product)
  • a filesystem you mount
  • a CDN, though it can back one
  • fast for millions of tiny objects — commit-per-file workloads feel the latency

What it costs, with my numbers

ItemValue
Data stored~180 GB across 12 months of snapshots
Storage chargeabout $1.10/month
Download charge$0 — restores stayed inside the free allowance
Transactionscents, not dollars, for daily restic runs
Total over 18 monthsroughly $19

That is the whole point of usage billing: my bill scales with what I actually keep, and pruning old snapshots lowers the bill next month instead of leaving me on a plan sized for someone else.

The egress rule deserves a sentence because it is unusual: downloads are free up to three times your average stored data per month. For backups, which are write-heavy and read-rarely, you will almost never pay for egress. Restore a whole repository in one day and you might.

How I use it

restic talks to B2 directly:

export RESTIC_REPOSITORY="b2:my-backup-bucket:/restic"
export RESTIC_PASSWORD_FILE="/root/.restic-pass"
export B2_ACCOUNT_ID="..."
export B2_ACCOUNT_KEY="..."

restic init
restic backup /srv/data --exclude-caches
restic check --read-data-subset=5%

Application keys matter here. Create a key scoped to one bucket with read-and-write, not the master key. A leaked master key is your entire account; a leaked bucket key is one bucket you can revoke.

Retention, run weekly by a timer:

restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune

--prune is what actually reduces the bill, and it is also the operation most likely to be slow. Run it monthly rather than daily.

What it does well

The API is boring, which is the highest compliment. restic, rclone, Duplicati, Arq, and anything else that speaks S3 work without a B2-specific integration. If I move to another provider later, the command changes and nothing else does.

No minimum, no plan. A 40 GB repository costs a fraction of a dollar. You are never paying for capacity you are not using.

Lifecycle rules and file versions. I keep 30 days of versions on the bucket, so a restic client that deletes the wrong snapshot does not immediately destroy the data behind it. Belt and braces on top of restic check.

Restores are straightforward. I test one file restore per quarter, and one full repository check per month with a partial read. Both have worked. The one time I needed a real restore — a deleted directory, my own mistake — it took four minutes including the download.

What it does not do well

Small-object latency. Every restic pack file is one HTTP request, and B2 is not the lowest-latency object store. A full restic check --read-data on 180 GB takes hours. That is fine for a monthly job and painful if you are impatient.

The web UI is slow with many objects. Browsing a repository with thousands of pack files is not a pleasant experience, and there is no “find the file I want” view. Plan to use restic’s own commands, not the console.

No built-in sync semantics. If you want “mirror this folder”, that is rclone’s job. B2 will happily store 400 versions of the same file and bill you for all of them.

Support is documentation. There is no account manager at this spending level, which is fair, but it means a billing question goes into a ticket queue like everything else.

What broke

Nothing in the storage layer. One incident worth recording: my restic password file ended up in a directory that the backup job excluded, so a restore test failed because I could not unlock the repository. The data was intact; my key management was not. The password now lives in the password manager and on paper, which the backup guide covers.

The other near-miss was a lifecycle rule that would have deleted versions after seven days during a month when --prune was failing silently. I caught it by watching the bill drop unexpectedly. Read your lifecycle rules like you read your retention policy.

Who should use it

You should, if you want an offsite copy that costs pennies, you already use a tool that speaks S3, and you are comfortable with the idea that restore speed is measured in hours rather than seconds.

You should not, if you need to restore 500 GB in a hurry (the download will cost and take a while), if your backup tool has no S3 support, or if you want a provider with a phone number.

Two things make it worth more than the bill suggests. The full routine — retention, prune, verification — is in the restic backup guide; and if the machine producing those snapshots is virtualised, the Proxmox notes explain why a consistent snapshot matters more than a fast backup. Storage is the cheap part. The rest is process.

Alternatives

  • Wasabi — no egress fees, but a 90-day minimum retention and a higher per-terabyte price. Better for large restores.
  • Hetzner Storage Box — cheapest per terabyte for European users, supports rsync and Borg over SSH rather than S3.
  • Storj — distributed object storage, S3-compatible, different trust model.
  • A second NAS at a relative’s house — free after hardware, and the most reliable option if you can maintain it.

Verdict

Recommended, with one condition: use it as the third copy, not the only one.

Eighteen months, nineteen dollars, zero lost data, one self-inflicted scare that taught me to store the repository password properly. For a home lab that needs a real offsite leg without a subscription, that is close to ideal.

The condition is the one from the backup guide: a backup you have not restored is a guess. B2 makes storing cheap; it does nothing about the part where you have to prove the restore works.

References

Tools used in this post

FAQ

Is B2 the same product as Backblaze Computer Backup?

No, and the confusion costs people money. B2 is S3-compatible object storage you point tools at; Computer Backup is an unlimited personal backup client for one machine with its own app. Different products, different billing, and the personal plan is not usable as a restic target.

How much does it cost for a small backup?

Storage is billed per terabyte per month, and downloads are free up to a multiple of what you store. I back up about 180 GB and pay roughly a dollar a month. Small enough that the exact number does not matter; what matters is that it is not a fixed plan you outgrow.

Can I use it directly with restic or rclone?

Yes, that is the point. It speaks the S3 API, so restic can use it as a repository target and rclone has native support. No agent, no client software to install on the server.

What happens if I stop paying?

The data becomes inaccessible and is eventually deleted. This is true of every storage provider and it is why the offsite copy should never be the only copy. Mine is the third leg of a 3-2-1 setup, not the primary.

Henry Xiang

I keep self-hosted services alive for a living — backups, docs, monitoring, the boring parts that break at 3am. Everything here runs on my own hardware first.