Backup (Sysadmin Toolkit)
restic, borg, Kopia, Velero — the file-and-volume backup picks.
For database-specific backup tooling see Postgres HA and the web-dev backup page. This page is the host / volume / cluster perspective.
File-level backup tools (encrypted, deduplicated)
- ★ restic — Go binary; encrypted; deduplicated; supports S3 / R2 / B2 / GCS / SFTP / many. The default for new setups.
- ★ borg — Python; encrypted; deduplicated; very mature.
- Kopia — Go; modern; nice UI option; faster than borg in some workloads.
- Duplicacy — proprietary; lock-free dedup; commercial license required for some uses.
- Bup — git-style backups; older.
Hosted / managed companions
- BorgBase — hosted borg repo storage.
- rsync.net — generic SFTP-accessible storage; popular for restic / borg.
- Cloudflare R2 / Backblaze B2 / Wasabi — cheap S3-compatible targets.
- AWS S3 + lifecycle to Glacier — long-term cheap archive.
Kubernetes-native
- ★ Velero — backup k8s resources + PV snapshots; restore across clusters. The default.
- Kasten K10 — paid; rich UI; great for stateful workloads.
- Stash — open-source backup operator.
- VolumeSnapshot + restore — built into k8s; CSI driver-dependent.
Image / VM-level
- Proxmox Backup Server — for Proxmox hypervisors; deduplicated; remote sync.
- Veeam — enterprise heavyweight.
- Bareos / Bacula — old-school enterprise backup; still around.
- BackupPC — server-pull backup; classic homelab choice.
Enterprise / heavyweight
- Bacula / Bareos — for tape libraries / massive estates.
- Amanda — long-running.
- Commvault / Veeam / Rubrik — paid; enterprise.
What good backup looks like
- ★ 3-2-1 rule — 3 copies, 2 different media, 1 off-site.
- Encrypted at rest — restic / borg do this by default.
- Tested restores — quarterly; otherwise it's a hope.
- Automated — cron / systemd timer / k8s CronJob.
- Retention policies — daily for 7 days, weekly for 4 weeks, monthly for 12 months. Adjust to your RPO.
- Off-host / off-cloud copies — for disaster scenarios where the provider is the disaster.
Common patterns
Single VPS:
- restic to R2 nightly.
- Lifecycle policy on R2 deletes old copies.
- Restore drill: monthly script, restores into a temp dir, reports success.
Self-host fleet:
- Each box runs restic to a shared B2 / R2 bucket with prefixes per host.
- Plus DB-level WAL archiving for important data.
Kubernetes:
- Velero scheduled backups daily; PV snapshots + manifests to R2.
- Database operators (CloudNativePG) handle their own.
- Quarterly restore drill into a fresh cluster.
Homelab:
- Proxmox Backup Server on a separate box / NAS.
- Replicate offsite via
pbs-syncto a second PBS at a friend's house or cloud.
Restore RTO / RPO planning
- RTO (recovery time objective) — how long until you're back up. Drives how fast restores must be.
- RPO (recovery point objective) — how much data you can afford to lose. Drives backup frequency.
- Document both. Test against them quarterly.
Patterns to adopt
- ★ Encrypted off-host copies — anything else isn't a backup.
- Restore drill cadence — monthly for prod, quarterly for everything else.
- Multiple targets — restic / borg can write to two repos in different providers.
- Don't rely on snapshots alone. Snapshots help for fat-finger; off-host backups help for the host dying.
- Automate it. Backups people remember to run get forgotten.
Pick this if…
- Default file backup, free: restic → R2 / B2.
- Default file backup, hosted target: restic → BorgBase / rsync.net.
- k8s: Velero.
- Proxmox / VMs: Proxmox Backup Server.
- Large enterprise: Veeam (paid) or Bareos (OSS).
- Database-specific: see Postgres HA for WAL-G.