BorgBackup vs Kopia: Which Backup Tool to Self-Host?
Want deduplication-based backups without paying for cloud services? BorgBackup and Kopia both compress, encrypt, and deduplicate your data locally — but they come from different eras of backup tool design, and the gap in usability is significant.
Quick Verdict
Kopia wins on usability and modern features. It includes a built-in web UI, official Docker images, native cloud storage backends (S3, B2, Azure), and FUSE snapshot browsing — all out of the box. BorgBackup is the proven veteran (10+ years, battle-tested) with superior deduplication ratios and a massive ecosystem of frontends. For new deployments, Kopia is the easier path. For users already invested in Borg’s ecosystem, the migration cost may not be worth it.
Overview
BorgBackup (Borg) is a deduplication backup tool that has been the gold standard in the self-hosted backup space since its 2015 fork from Attic. Written in Python and C, it achieves high deduplication ratios through content-defined chunking with a Buzhash rolling hash. Borg repositories are local or accessed via SSH — there’s no native cloud storage support. Version 1.4.0 is the current stable release, with Borg 2.0 in beta.
Kopia is a modern backup tool written in Go that launched in 2019. It combines deduplication, encryption, compression, and error correction in a single binary with a built-in web UI. Kopia connects natively to S3-compatible storage, Backblaze B2, Azure Blob, Google Cloud Storage, and local/SFTP backends. Version 0.22.3 is the current stable release (December 2025).
Feature Comparison
| Feature | BorgBackup | Kopia |
|---|---|---|
| Language | Python + C (Cython) | Go |
| First release | 2015 (Attic fork) | 2019 |
| Deduplication | Content-defined chunking (Buzhash) | Content-defined chunking |
| Encryption | AES-256-CTR + HMAC-SHA256 | AES-256-GCM, ChaCha20-Poly1305 |
| Compression | lz4, zstd, zlib, lzma | zstd, s2, pgzip, gzip |
| Web UI | None (CLI-only; use Borgmatic or Vorta) | Built-in (KopiaUI) |
| Cloud storage | None native (SSH/local only) | S3, B2, Azure, GCS, Rclone |
| FUSE mount | Yes (mount archives as filesystem) | Yes (mount snapshots as filesystem) |
| Error correction | No | Built-in (Reed-Solomon) |
| Docker image | Community only | Official (kopia/kopia) |
| Repository server mode | No (client-side only) | Yes (centralized Kopia server) |
| Database backup integration | Via Borgmatic (PostgreSQL, MySQL, MongoDB) | Manual (pre-backup scripts) |
| Monitoring hooks | Via Borgmatic (Healthchecks, ntfy, PagerDuty) | Built-in notifications |
| Retention policies | Prune by count, daily, weekly, monthly, yearly | Full policy engine (per-directory policies) |
| GitHub stars | ~11,800 | ~12,700 |
Installation Complexity
Kopia offers the simpler Docker deployment — one container runs a repository server with web UI:
services:
kopia:
image: kopia/kopia:0.22.3
ports:
- "51515:51515"
command: server start --address=0.0.0.0:51515 --insecure
volumes:
- kopia-config:/app/config
- kopia-cache:/app/cache
- kopia-repo:/repository
- /data:/source:ro
restart: unless-stopped
volumes:
kopia-config:
kopia-cache:
kopia-repo:
BorgBackup has no official Docker image and no built-in UI. Most users pair it with Borgmatic for automation:
services:
borgmatic:
image: ghcr.io/borgmatic-collective/borgmatic:2.1.2
volumes:
- /etc/borgmatic:/etc/borgmatic:ro
- borg-cache:/root/.cache/borg
- /srv:/srv:ro
environment:
- CRON_SCHEDULE=0 3 * * *
restart: unless-stopped
volumes:
borg-cache:
| Setup Step | BorgBackup | Kopia |
|---|---|---|
| Install | pip/package manager + Borgmatic | Docker pull |
| Repository init | borg init --encryption=repokey | Web UI or kopia repo create |
| Configure backup sources | Edit Borgmatic YAML | Web UI policies |
| Cloud backend | SSH tunnel to remote server | Native S3/B2/Azure |
| Web management | Not available (CLI or Vorta GUI) | Built-in |
| Time to first backup | 15–20 min | 5–10 min |
Performance and Resource Usage
BorgBackup’s Python/C implementation is highly optimized for deduplication. In benchmarks with large datasets, Borg often achieves slightly higher dedup ratios than Kopia due to its mature chunking algorithm.
Kopia’s Go implementation is faster for initial backups on multi-core systems (better parallelism) but uses more memory during deduplication.
| Resource | BorgBackup | Kopia |
|---|---|---|
| RAM (during backup) | 200–500 MB | 300–600 MB |
| CPU utilization | Moderate (single-threaded chunking) | Higher (parallel chunking) |
| Dedup ratio (typical) | Excellent (mature algorithm) | Very good |
| Initial backup speed | Moderate | Fast (parallel processing) |
| Incremental speed | Fast | Fast |
| Disk (application) | ~20 MB | ~50 MB |
Community and Support
BorgBackup has a decade of production use behind it. The 11,800+ GitHub stars undercount its popularity — Borg is the default backup recommendation in nearly every self-hosted community. The ecosystem is broad: Borgmatic (server automation), Vorta (desktop GUI), BorgBase (hosted repositories), and extensive third-party documentation.
Kopia is newer but growing rapidly. With 12,700+ GitHub stars (surpassing Borg), active development, and an official Docker image, it’s gained significant traction since 2023. The built-in UI lowers the barrier to entry compared to Borg’s CLI-first approach.
Use Cases
Choose BorgBackup If…
- You already use Borg and have established repositories (no reason to migrate)
- You need database-aware backups via Borgmatic (PostgreSQL, MySQL, MongoDB dumps)
- You want the highest possible deduplication ratios for large datasets
- You back up to SSH-accessible servers (no cloud storage needed)
- You want the broadest ecosystem of frontends and integrations
- You need monitoring hooks via Borgmatic (Healthchecks, Uptime Kuma, ntfy)
Choose Kopia If…
- You’re setting up backups from scratch and want the fastest path to working backups
- You need native cloud storage support (S3, Backblaze B2, Azure, GCS)
- You want a built-in web UI without installing additional tools
- You prefer official Docker images and a single-binary architecture
- You want built-in error correction (Reed-Solomon) to protect against storage corruption
- You need a centralized repository server for managing backups from multiple machines
Final Verdict
Kopia wins on accessibility and modern deployment patterns. The built-in web UI, official Docker support, native cloud backends, and error correction make it the more complete out-of-the-box solution. If you’re starting fresh, Kopia gets you to working, encrypted, deduplicated backups faster.
BorgBackup wins on ecosystem maturity and proven reliability. A decade of production use, Borgmatic’s database integration, and the highest deduplication ratios in the space make it the safer choice for mission-critical server backups — especially if you already have SSH-based backup infrastructure.
Neither is a wrong choice. For most home servers, Kopia’s lower friction wins. For production infrastructure with database backup needs, BorgBackup + Borgmatic is the more battle-tested combination.
Frequently Asked Questions
Can I migrate from BorgBackup to Kopia?
Not directly — the repository formats are incompatible. You’d need to create a fresh Kopia repository and re-back up your data. The initial backup will take as long as a fresh backup, but subsequent incrementals will be fast.
Does Kopia support Borg repositories?
No. Kopia uses its own repository format. They are entirely separate backup ecosystems.
Which is more secure?
Both support strong encryption (AES-256). Kopia additionally offers ChaCha20-Poly1305 and includes Reed-Solomon error correction. BorgBackup supports authenticated encryption modes (repokey-blake2). Both are suitable for encrypted backups — the security difference is marginal.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments