
# Best Self-Hosted Backup Tools in 2026: Restic vs Kopia vs Duplicati vs Borg
Your hard drive doesn’t care that your family photos are irreplaceable. Neither does a ransomware script. If your backup strategy right now is “I should really set that up properly,” this guide is for you.
We’re comparing four mature, self-hosted backup tools â Restic, Kopia, Duplicati, and BorgBackup â for homelab and home server use in 2026. All four are free and open source. All four do deduplication and encryption. But they differ enough in practice that picking the wrong one will either leave you with a broken restore at the worst moment or a backup job you abandon because it’s too annoying to maintain.
The practical thread running through this whole piece: backing up 2TB of family photos to Backblaze B2, currently running around CAD $0.006/GB/month (roughly CAD $12/month for 2TB at rest, less with egress caps).
—
What to Look For
Deduplication: All four tools deduplicate at the chunk level, meaning they only store data that’s actually changed between backups. The difference is in chunk size, algorithm, and how efficiently they handle large binary files like RAW photos or video.
Backend support: Can it talk to Backblaze B2, local drives, NAS over SFTP, and Wasabi without you writing a wrapper script? The wider the native support, the simpler your setup.
Encryption: You want client-side AES-256 minimum, with keys you hold. Avoid any tool that stores keys server-side by default.
Restore speed: Deduplicated backups can be slow to restore if the tool has to reconstruct files from thousands of chunks. This matters a lot at 2TB scale.
Snapshot mounting: Some tools let you mount a past backup as a filesystem and browse it like a folder. Extremely useful for recovering a single deleted photo from three weeks ago.
Scheduling and automation: CLI tools need a cron job or systemd timer. GUI tools often have built-in schedulers. Neither is inherently better, but your skill level and patience should guide the choice.
Cross-platform: Windows, Linux, macOS â does it run everywhere your data lives?
—
Restic
Restic is the workhorse most serious homelab operators eventually land on. It’s a single static binary, written in Go, with no dependencies. Version 0.16.x is stable and well-tested as of 2026.
Backend support is the headline feature. Restic speaks S3 (including Wasabi and MinIO), Backblaze B2 natively, SFTP, local filesystem, REST server, Azure, and Google Cloud Storage. For B2 specifically, you set RESTIC_REPOSITORY and two environment variables for your B2 application key, and you’re off. No plugins, no extra config files.
Deduplication uses content-defined chunking with an average chunk size of around 1MB. On a 2TB photo library with mixed file sizes, expect initial backup times of several hours depending on your upload speed, but subsequent incremental backups of a few thousand changed or new photos typically complete in under 10 minutes. In practice, a 2TB photo library with moderate churn will deduplicate to maybe 1.8â1.9TB stored remotely, since RAW files and JPEGs don’t compress or deduplicate dramatically â the value shows up over time as you avoid re-uploading unchanged files.
Encryption is AES-256-CTR with Poly1305-AES for authentication. Your key stays local. The repository password is the only thing standing between your data and anyone who gets B2 credentials, so use a strong password and store it in a password manager.
Restore speed is Restic’s weak point at scale. Restoring a full 2TB repository means downloading everything and reconstructing files from chunks. On a 500Mbps connection that’s still a multi-hour job. Single-file restores are fast. Full restores are not.
Snapshot mounting works on Linux and macOS via FUSE (restic mount). You browse snapshots like a directory tree, find the file you want, copy it out. Works well. Windows support for mounting is limited without WSL.
Scheduling is entirely on you. Restic does nothing automatically. You write a shell script, drop it in cron or a systemd timer, and monitor it yourself. There are third-party wrappers like resticprofile that add scheduling, retention policy enforcement, and notifications, and they’re worth using.
Cross-platform: Single binary for Linux, macOS, Windows, FreeBSD. Works everywhere.
Drawbacks: No GUI. Retention policy pruning (restic forget --prune) is a separate step and can be slow on large repositories â locking the repo while it runs. restic check on a 2TB B2 repository can take a very long time and costs you B2 egress fees. The learning curve is real for anyone not comfortable with a terminal.
—
Kopia
Kopia is the newer contender that’s been eating into Restic’s mindshare since its 1.0 release. It offers both a CLI and a proper GUI (KopiaUI), and it’s meaningfully faster than Restic on snapshot maintenance operations.
Backend support matches Restic closely: S3-compatible, Backblaze B2, Google Cloud Storage, Azure, SFTP, WebDAV, local filesystem, and the Kopia Repository Server for self-hosted central repositories. B2 setup is straightforward â provide your bucket name, application key ID, and application key, and Kopia handles the rest.
Deduplication is where Kopia differentiates itself. It uses a content-addressable storage model with configurable chunk sizes, similar to Restic, but adds compression before encryption. For a photo library of mostly JPEGs and RAWs, compression won’t help much â those formats are already compressed â but for a mixed backup that includes documents, databases, or config files, Kopia’s compression can make a real difference. The dedup efficiency on photos is comparable to Restic.
Encryption is AES-256-GCM or ChaCha20-Poly1305, your choice during repository creation. Both are solid. Keys are derived from your password locally.
Restore speed is notably better than Restic in practice. Kopia parallelizes download and reconstruction more aggressively. In informal community benchmarks circulating on r/homelab in early 2026, Kopia restored large repositories 20â40% faster than Restic under similar conditions. That gap matters when you’re staring at a failed drive at midnight.
KopiaUI is a real desktop GUI â not a web interface bolted on, but an Electron app with a server mode you can run headless and access via browser. For non-technical family members who need to be able to run a restore without calling you, this is a genuine advantage. Scheduling is built in.
Snapshot mounting works on Linux and macOS via FUSE, same as Restic. The UI makes browsing snapshots significantly easier.
Cross-platform: Linux, macOS, Windows, FreeBSD, ARM. Docker image available for server mode.
Drawbacks: Kopia’s repository format is not compatible with anything else â if Kopia development stalls, you need Kopia to read your data. The project is healthy as of 2026, but it’s worth knowing. The documentation has improved but still has gaps, especially around the server mode and multi-user setups. The KopiaUI Electron app is heavier than a terminal window, and some homelab setups running on low-RAM SBCs will feel that.
—
Duplicati
Duplicati has been the “recommended for non-technical users” backup tool for years, primarily because it has a polished web UI and genuinely tries to be approachable. Version 2.0.x has been in beta for what feels like most of the decade, but the recently released Duplicati 2.1 in 2025 finally addressed many of the long-standing database corruption issues.
Backend support is extensive: S3, B2, SFTP, FTP, WebDAV, Azure, Google Drive, OneDrive, Mega, and more. It’s the widest native backend list of any tool here.
Deduplication uses a block-based approach with AES-256 encryption, but the dedup efficiency is generally worse than Restic or Kopia. Duplicati stores data in archive volumes (configurable size, typically 50â200MB), which means restoring individual files requires downloading and decrypting entire volumes. For a 2TB photo library, this results in significantly more remote data read during single-file restores than Restic or Kopia.
Encryption is AES-256 with optional GnuPG. Fine. Key management is handled through the UI.
Restore speed is the biggest practical problem. Restoring a single file from a large Duplicati backup requires the tool to consult its local SQLite database to find which remote volumes contain your file, then download those volumes, decrypt them, and extract. If your local database is gone (drive failure, migration), you can rebuild it from the remote backend, but that rebuild on 2TB of B2 data will take a very long time and cost you egress fees.
Scheduling is built into the web UI. Set a schedule, set retention, walk away. This is genuinely the easiest scheduling experience of the four tools.
Cross-platform: Linux, macOS, Windows. Runs as a background service with a web UI.
Drawbacks: The database corruption history, though much improved in 2.1, means you should keep an eye on your Duplicati logs. Restoration reliability has historically been the community’s biggest complaint. The block-based volume approach makes it less efficient than chunk-deduplicated tools for large binary file collections. If you’re backing up 2TB of photos, Duplicati is probably not your best option unless the web UI is a hard requirement.
—
BorgBackup
Borg is the greybeard of this comparison. It’s been around since 2015, it’s rock solid, and it has a different design philosophy than the other three: it’s primarily built for local and SFTP targets, not cloud object storage.
Backend support is the main limitation. Borg natively supports local filesystem and SSH/SFTP targets. There is no native S3 or B2 support. To back up to Backblaze B2 with Borg, you need to either use rclone as a backend proxy (via borgmatic or manual scripting) or run a VPS with Borg installed that serves as an SSH target, with that VPS then syncing to B2 separately. This is doable â many people do it â but it adds moving parts.
Deduplication is Borg’s strong suit. Variable-length chunking with BLAKE2b or SHA-256 hashing, with mature, well-optimized code. Borg’s dedup efficiency on a mixed workload is excellent. For a photo library where most files don’t change, incremental backups are very fast and very small.
Encryption is AES-256-CTR with HMAC-SHA256 or BLAKE2b-MAC. Solid, well-audited. Borg has had security audits that the newer tools haven’t yet received, which matters to some operators.
Restore speed is fast for SFTP/local targets. Borg’s chunk reconstruction is efficient, and for SSH targets, the transfer is direct. For B2-via-rclone setups, speed depends on how you’ve wired it together.
Snapshot mounting via FUSE is excellent and fast. Borgmatic (the companion config/wrapper tool) integrates this well.
Scheduling is via cron/systemd or borgmatic, which handles scheduling, retention, and notifications in a clean YAML config. Borgmatic is genuinely good and reduces the friction of running Borg considerably.
Cross-platform: Linux and macOS primarily. Windows is not officially supported and WSL works but is awkward. If you’re on Windows, Borg is probably not your tool.
Drawbacks: No native cloud object storage support is a real limitation for off-site backup to B2 without extra steps. Not practical for Windows environments. The rclone bridge works but breaks the simplicity that makes Borg appealing in the first place.
—
Comparison Summary
| | Restic | Kopia | Duplicati | Borg | |—|—|—|—|—| | Native B2 support | â | â | â | â (needs rclone) | | GUI | â | â (KopiaUI) | â (Web UI) | â | | Dedup efficiency | Good | Good | Fair | Excellent | | Restore speed (large) | Fair | Good | Fair | Good (local/SFTP) | | Snapshot mount | â Linux/macOS | â Linux/macOS | â | â Linux/macOS | | Windows support | â | â | â | Limited | | Scheduling built-in | â | â | â | â (borgmatic) | | Maturity/audit history | Strong | Growing | Strong | Strongest |
—
Conclusion: Which One to Pick
For backing up 2TB of family photos to Backblaze B2 on Linux or macOS: Use Kopia. Native B2 support, faster restores than Restic, better UI for the occasional “I need to find that photo from 2023” recovery, and active development. Pair it with KopiaUI in server mode so your partner can run restores without your help.
For a technical homelab operator who lives in the terminal and wants maximum flexibility: Use Restic with resticprofile. It’s the most portable, has the largest community, and the ecosystem of wrappers and integrations is mature. You can switch backends later without reformatting your workflow.
If you’re primarily backing up to a local NAS or a rented VPS over SSH and cloud storage is not a priority: Use Borg with borgmatic. Nothing beats it for that specific use case.
For Windows-primary environments or non-technical users who need a GUI and don’t want to touch a terminal: Use Duplicati 2.1, but watch your logs, test your restores quarterly, and keep a local copy of your database backed up separately.
Whatever you pick, the most important thing is actually running a test restore before you need one. A backup you haven’t verified is just an expensive hope.
Related Auburn AI Products
Building a homelab or self-hosting content site? Auburn AI has practical kits:
- 500 Homelab and Self-Hosting Blog Titles ($27)
- Auburn AI Monitoring Stack ($37) – 6 production PowerShell scripts
- Podcast Automation Kit ($37)
- Browse all Auburn AI products
