Skip to content
Go back

Off-Site Encrypted Backup with rsync.net

By SumGuy 17 min read
Off-Site Encrypted Backup with rsync.net
Contents

Off-Site Backup Is Where Every Cheap Plan Falls Apart

You’ve got your data sorted. Restic, Borg, or plain old rsync. You’ve picked your poison and it works great locally. Your RAID array breathes easy. Your ZFS checksums pass. Your snapshots age gracefully.

Then you look at off-site backup options and the room gets cold.

Backblaze B2 hands you an S3 API and a token to lose. Wasabi’s free egress comes with a fair-use policy and a 90-day minimum storage duration that bites churn-heavy backup sets. S3 is overkill. Storj is decentralized until it isn’t, and their node operators get weird about storage. Every one of them is a bucket with a billing model attached, and none of them give you a filesystem you can ls.

Then there’s rsync.net.

It’s not that rsync.net is shiny. It’s that it doesn’t pretend to be. It’s SSH. It’s ZFS. No dashboards. No “egress windows.” No surprise charges for bandwidth you didn’t plan on needing. Your data lives in Fremont, Denver, Zurich, or Hong Kong (you pick, and migrating between them later is free), and you access it the same way you access your home lab: SSH keys and basic Unix tools.

Verdict up front, because the price is the part everybody gets wrong: rsync.net lists at 1.5 cents per GB per month. That’s $15 per TB, roughly double Backblaze B2 and about twice Wasabi. It is not the cheap option. If you back up with Borg specifically, their stripped-down borg plan drops to 1 cent per GB ($10 per TB, annual prepay) and the math gets closer. What you’re buying at either price is a real POSIX filesystem over SSH and a Unix engineer who answers the phone.

What Actually Is rsync.net?

Okay, here’s the unsexy part: rsync.net is an SSH server in a datacenter with a ZFS filesystem behind it.

That’s it. Nothing more to it.

But that simplicity is the feature.

You get an account. You get SSH access. You get a filesystem quota. You generate an SSH keypair, upload the public key, and suddenly you have an off-site target that speaks the same language as every backup tool you’ve ever used: POSIX.

Under the hood, your account is a ZFS pool living in its own VM at one of their four sites, and you pick the site when you order. One site, unless you pay for the geo-redundant product (more on the cost of that below). Snapshots are automatic and essentially free: ZFS snapshots don’t duplicate data, they just record the delta. Daily snapshots for years cost you the storage of those years’ changes, not full copies.

There’s no S3 API. There’s no weird lock semantics. There’s no “eventually consistent” handwaving. You SSH in, you write files, they exist. You read them back, they’re there. Your access keys are just SSH keys. If someone steals your SSH key, you revoke it and upload a new one, same model you’ve been using for fifteen years on actual servers.

No NSA-shaped SaaS layer. No venture capital vying for your eyeballs. The company makes money because you use storage. That’s the entire business model.

Pricing: What It Actually Costs

rsync.net’s pricing is straightforward, and it’s higher than the internet folklore suggests. Here are the published rates as of August 2026.

Standard accounts (single region, ZFS snapshots included, full support):

SizeRatePer TB per month
0 to 9 TB1.5 cents per GB$15.00
10 to 99 TB1.2 cents per GB$12.00
100 TB and up0.75 cents per GB$7.50

Small print that matters: the entry tier has an 800 GB minimum order, so the cheapest standard account is $12 a month whether you store 200 GB or 800 GB. Annual payment takes 10% off, two-year prepay takes 15%. Their pricing page prints 1.25 cents for the 10 TB tier while the order form charges 1.2, which is the number their FAQ uses too, so trust the order form.

Run the numbers: 2 TB costs $30 a month. 10 TB costs $120. Against Backblaze B2 at $6 per TB and Wasabi at roughly $8, rsync.net is two to three times the price of commodity object storage. Anyone quoting you $5 per TB for this service (including an earlier version of this article, for which I owe a reader an apology) is quoting a number that isn’t on the price list.

The Borg Discount, and the Stale Page Advertising It

If your backup tool is Borg, rsync.net sells a stripped-down “borg account” at 1 cent per GB per month, which is $10 per TB. Minimum order is 200 GB. Billing is annual only, since the order form disables the monthly option on that package. Geo-redundancy on it runs 1.75 cents per GB.

Check this yourself before you budget, because their own site disagrees with itself. The borg product page at /products/attic.html advertises tiers of 0.8 cents and 0.5 cents per GB. Click through its order buttons and the checkout charges either 1 cent (the borg package) or plain 1.5 cent standard pricing, depending on which button you hit. The $18-a-year-for-100GB offer on that page is stale too, since the borg package now has a 200 GB floor. The page at /products/borg.html quotes the 1 cent rate that checkout actually applies. If you want the 0.8 cent rate, email sales and get it in writing rather than assuming the marketing page is live.

What you give up on a borg account:

Ingress and egress are free on both plans, and there’s no per-request billing. Unlimited repositories.

The Lifetime Option Nobody Mentions

The order form also offers a one-time lifetime payment: $540 per TB on a standard account, $480 per TB on the borg package, 1 TB minimum. That’s roughly three years of standard monthly billing, after which you stop paying. Whether you’d hand any company a lump sum against the word “lifetime” is your call, but a 25-year-old profitable business with no acquisition story is a better bet for it than most.

Geo-Redundancy Is a Separate, Pricier Product

A standard account is one copy in one datacenter. rsync.net quotes 99.9999% resilience within a site, which covers disk and hardware failure, not the site itself.

If you want your filesystem replicated nightly to a second rsync.net site, that’s the geo-redundant product at 2.625 cents per GB per month, about $26 per TB. That’s a 75% premium over standard, and it is not applied automatically because you’d notice the bill.

rsync.net’s own FAQ draws the line well: if you still hold the primary copy at home, a standard single-site account is your backup and you’re fine. If rsync.net is the only place your data exists, buy geo-redundant or accept that your “backup” lives in one building.

So Why Pay the Premium

Not for the storage price, which loses. You’re paying for:

If storage cost per TB is your deciding factor, B2 wins and you should buy B2. Read on for where that trade actually breaks down.

SSH-Only API Is a Feature, Not a Limitation

This is the part that trips people up.

rsync.net doesn’t have a REST API. They don’t have a web console. You can’t click a button to restore your data through a browser. Your backup tool can’t make HTTP requests to rsync.net.

Honestly? That’s the best thing about them.

Everything you back up flows over SSH. Everything you restore flows over SSH. SSH is cryptographically signed. Your SSH keypair lives on your backup machine, not in some cloud provider’s “secure enclave.” There’s no token to expire. There’s no OAuth flow that confuses you. There’s no leaking “share link” that somebody finds.

When you back up to rsync.net, your data is encrypted client-side, SSH-tunneled to their datacenter, and lands in a ZFS pool where it’s automatically checksummed to hell. If a bit flips, ZFS knows immediately. If someone on their network tries to read your files, they need your SSH key.

Compare that to Backblaze B2 (REST API over HTTPS, tokens stored by your backup tool, metered egress above a threshold) or Wasabi (S3-compatible REST API with the same token mess). You’re trading HTTP convenience for SSH security, and for off-site backup, that’s a trade worth making.

Plus, anything that speaks SFTP, SCP, or rsync can talk to rsync.net. That’s most of the Unix ecosystem. Restic does SFTP. Borg does SFTP. Plain rsync works. If you’re paranoid and want to write your own backup script in POSIX shell, rsync.net doesn’t care.

Client-Side Encryption: Restic or Borg

rsync.net itself doesn’t encrypt your data. ZFS can, but by default it doesn’t. That means their staff (or a legal order, or a datacenter-access incident) could theoretically read your files.

That’s fine, because Restic and Borg handle that for you.

Restic is simpler to reason about. You point it at an SFTP location, give it a password, and every backup is encrypted and deduplicated on your machine before it leaves your network. Restic uses AES-256 in counter mode, authenticated with Poly1305-AES, under the hood. A password secures the repo. No private keys to manage. You can restore from anywhere with the password.

Borg is weirder but more powerful. Borg generates a random repository key (actually three secrets), and that key is itself protected by your passphrase. Your passphrase is salted and iterated (like a password manager) to unlock it. The nice part: you can rotate the passphrase with borg key change-passphrase without re-encrypting the whole repo, because you’re only re-wrapping the key, not the data. Borg’s deduplication is aggressive within a repo: if you point multiple machines at the same repo, identical chunks across all of them are stored once, which saves you disk space (and money). It’s overkill for most home labs, but if you’ve got several machines backing up overlapping datasets, that shared dedup is real.

Here’s a Restic config:

#!/bin/bash
# Restic backup to rsync.net via SFTP
export RESTIC_REPOSITORY="sftp:[email protected]:/backup"
export RESTIC_PASSWORD="$(cat /etc/restic/password.txt)"
# First run: init the repo
# restic init
# Daily backup
restic backup \
--exclude-file=/etc/restic/excludes.txt \
/home /var/www /etc
# Retention: keep 30 daily, 12 monthly, 2 yearly
restic forget \
--keep-daily 30 \
--keep-monthly 12 \
--keep-yearly 2 \
--prune

That’s it. Restic handles encryption transparently. Your data lands at rsync.net encrypted, and only you (with the password) can read it.

Borg looks similar but the setup is slightly different:

#!/bin/bash
# Borg backup to rsync.net via SFTP
export BORG_REPO="sftp://[email protected]/backup"
export BORG_PASSPHRASE="$(cat /etc/borg/passphrase.txt)"
# First run: init the repo with repokey encryption
# borg init --encryption=repokey-blake2
# Daily backup
borg create \
--progress \
--stats \
--compression lz4 \
::'{hostname}-{now}' \
/home /var/www /etc
# Retention: 30 days, 12 months, 2 years
borg prune \
--keep-daily 30 \
--keep-monthly 12 \
--keep-yearly 2 \
--progress

The core difference: Borg compresses by default, Restic doesn’t (Restic assumes compressed files don’t compress well, which is fair). Borg names snapshots with :: separators and supports mounting snapshots as FUSE filesystems. Restic has better restore UX and doesn’t require a FUSE mount.

Pick Restic if you want simplicity. Pick Borg if you want to show off.

Snapshots on Their Side (Bonus Retention)

Here’s where rsync.net gets interesting: they snapshot your entire filesystem automatically.

You don’t pay extra for these and you don’t have to trigger them. The published default on the entry tier is 7 daily snapshots. Accounts at 10 TB and up get 7 daily plus 4 weekly. Any account can request a custom snapshot schedule, so if you want hourlies or a longer weekly tail, ask for it rather than assuming it. Borg-plan accounts get none of this, per the discount terms above.

This is a layer of protection on top of Restic or Borg’s retention. If a ransomware incident or human error wipes your backup (the backup tool deletes old snapshots because you set the retention wrong, etc.), rsync.net’s snapshots are still there. You can ask their support team to roll back a directory to a specific point in time, and they’ll restore it to your filesystem.

This only works if you’re not encrypting at the rsync.net level. With client-side encryption (Restic/Borg), rsync.net’s snapshots just snapshot the encrypted blobs, which is fine, you’ve still got historical versions of encrypted data if your backup tool breaks.

Restore Drill: Make Sure It Actually Works

If you’ve never restored from it, you haven’t actually tested it. This is not theoretical. Multiple times a year, somebody discovers their “backups” have been corrupted the whole time. Or the backup tool has a bug. Or the encryption password doesn’t work.

Do a restore drill every quarter.

With Restic:

Terminal window
export RESTIC_REPOSITORY="sftp:[email protected]:/backup"
export RESTIC_PASSWORD="$(cat /etc/restic/password.txt)"
# List available snapshots
restic snapshots
# Restore a specific file
restic restore <snapshot-id> --target /tmp/restore -- /home/user/critical-file.txt
# Verify it
ls -la /tmp/restore/home/user/critical-file.txt

With Borg:

Terminal window
export BORG_REPO="sftp://[email protected]/backup"
export BORG_PASSPHRASE="$(cat /etc/borg/passphrase.txt)"
# List snapshots
borg list
# Mount a snapshot and poke around
mkdir -p /mnt/borg-restore
borg mount ::latest /mnt/borg-restore
ls -la /mnt/borg-restore/
# Clean up
fusermount -u /mnt/borg-restore

The point isn’t to do a full restore (that takes forever). The point is to verify that:

  1. You can authenticate to rsync.net
  2. The backup data is there
  3. The encryption key/password is correct
  4. You can list snapshots and extract files

If any of that fails, your off-site backup is security theatre. Fix it immediately.

Where the Cheaper Plans Actually Cost You

rsync.net at $15 per TB (or $8 on the borg plan) loses the price fight. Here’s what the cheaper options really charge, because the scary egress numbers people repeat are mostly out of date.

Backblaze B2 is $6 per TB for storage, and egress is free up to three times your average monthly stored volume, then $0.01/GB after that. A full 2 TB restore from a 2 TB bucket costs you nothing. The old “your restore will cost $200” warning belongs to 2019-era S3 pricing, not B2 today. What you actually get instead of a bill is an S3 API, token management in your backup tool, and no filesystem to poke at.

Wasabi is around $8 per TB with no egress or API charges, subject to a fair-use policy that expects your monthly egress to stay under your stored volume. The real gotcha is the 90-day minimum storage duration: delete or rewrite data early and you still pay out the 90 days. That hurts churn-heavy backup sets far more than egress ever did.

Rclone + S3 (any provider) is cheaper from Backblaze, DigitalOcean Spaces, or Linode. You’re back to REST APIs, token management, and per-provider egress rules that change without asking you.

Storj is cheap because they’re decentralized (you’re funding node operators worldwide). But Storj’s model depends on nodes staying online. When a node drops, your data is re-replicated to new nodes. It works, but you’re trusting a distributed incentive structure that’s 7 years old.

Local NAS + off-site replication (Synology, TrueNAS with Replication over SSH) is cheaper if you’ve already got a second box somewhere. But you’re managing two systems, and if that second location is compromised, so is your backup.

rsync.net wins if:

rsync.net is overkill if:

rsync.net is underkill if:

Key Management: One Less Thing

Okay, back to the SSH key thing.

Your backup machine needs an SSH keypair to talk to rsync.net. That keypair lives in /root/.ssh/ or /home/backup/.ssh/, somewhere on your machine that the backup service can read. If that machine is compromised, your SSH key is compromised. If your SSH key is compromised, someone can access your off-site backup.

That’s not specific to rsync.net. That’s specific to SSH-based backups.

You can mitigate it:

None of this is rocket science. This is the same key management you’d use for any SSH-based deploy, database backup, or remote data sync.

When rsync.net Earns the Premium

If you’ve got data you’d lose sleep over losing (a home lab with 10+ years of photos, a server with customer data, a dataset you spent months building), rsync.net earns its keep:

Off-site backup is not where you cheap out. It’s where you spend money once so you never have to spend money again (because your data didn’t burn down).

Budget honestly: a 2 TB home lab is $30 a month on a standard account, or $240 a year on a borg account (that’s $20 a month, prepaid). Call it a takeaway dinner a month to stop sweating the overnight fire, the ransomware, or the RAID controller that decides to yeet itself into the void at 3 AM.

Set it up, run a quarterly restore drill, and stop thinking about it.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Previous Post
Cold Archive: B2 vs Storj vs Scaleway Glacier
Next Post
ZFS Tuning for SSDs and NVMe

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts