projects.jimsonyang.com/storage

I back up twenty gigabytes, the cheapest plan sells a hundred.

I didn't want a flat monthly fee for space I don't use, so I moved my backups to Backblaze B2, where the bill is a few cents a month and tracks exactly what I store.

Why

Paying for a hundred gigabytes to use twenty

I want an offsite backup of maybe 20 gigabytes, documents, a few project folders, the things I'd be genuinely upset to lose. Google One's cheapest paid tier is $2 a month for 100 gigabytes, that's a floor, I can't go under it, so I'm paying for 80 gigabytes of nothing, every month, forever.

Backblaze B2 charges $0.006 per gigabyte per month, no minimum, nothing for uploads. Twenty gigabytes is about 13 cents, even at 50 it's under a dollar. The money isn't really the point, it's small either way, but I'd rather pay for what I actually store than pay a flat fee for a tier I've barely touched.

And if my needs ever change, Backblaze also sells a flat $9 a month plan with unlimited storage, so the ceiling is known, scaling up later is a change of plan, not a migration. For now my needs are small and my bill is small, that's the whole idea.

There's a subscription in this for me too, I'm dropping a Dropbox plan I barely used, so that's about $10 a month back on top of the storage saving. Nice, but not the reason, the reason is I'd rather pay for bytes than for a tier.

This isn't a technically impressive project, it's a small one. What it shows is a habit, when something mundane in my life has friction I build the tool that removes it, and I hold it to the same bar I'd hold something at work.

The sync itself is rclone, reimplementing hashing or encryption would have been a mistake. What I built is the layer around it, a disk-usage map to decide what to keep, a local dashboard so I don't memorize flags, one-click launchers so it runs without a terminal, folder icons so I can tell two folders apart at a glance.

What it is

Two folders, two rules

I started with a version that sorted files automatically, by type and age, I deleted it. I didn't want a policy engine running forever, I wanted a one-time cleanup and control over what goes where. What's left is deliberately plain:

Everything is encrypted on my machine before it leaves, Backblaze only ever sees scrambled files with scrambled names. The tiers were hot and cold at first, I renamed them, working and archive says what they're for.

The math

Flat tier vs. per gigabyte

What a small backup actually costs, per month
OptionPricing model20 GB50 GB200 GB
Google Oneflat tier, 100 GB minimum$1.99$1.99$2.99
Backblaze B2$0.006 / GB, no minimum~$0.12~$0.30~$1.20
uploads free · egress free up to 3× stored / month · flat $9 / mo unlimited plan if it ever gets big

A couple of dollars a month either way, this was never going to make me rich. The satisfying part is that the bill is proportional to something real now, and I own the whole thing end to end.

Under it

How it's put together

rcloneDoes all the transfer, hashing, resume and encryption. My CLI is a thin layer of policy and reporting on top, it never reimplements any of that.
Python · Typerstorage init / status / cost / sync / offload / restore / analyze / web / watch / doctor. Python 3.11+ for tomllib.
crypt remotesrclone crypt wraps the Backblaze backend, both file contents and filenames are encrypted before upload. The passphrase never goes in the repo.
stateLast-sync times and the bisync baseline flag live in a small JSON file in ~/.storage, no database.
watchmtime polling, not inotify, WSL2 gets no filesystem events for changes made on the Windows side.