DEV Community

selfhosting.sh
selfhosting.sh

Posted on • Originally published at selfhosting.sh

Restic Vs Kopia Vs Borgbackup

Quick Verdict

Restic is the best choice for most people — broad cloud backend support, strong deduplication, and the largest community. BorgBackup wins if storage efficiency is your top priority (best-in-class compression). Kopia is the best pick if you want a web UI or need a centralized repository server.

Overview

All three are open-source, deduplicated, encrypted backup tools. They solve the same core problem — creating reliable, space-efficient backups — but differ in philosophy, features, and ecosystem.

Aspect Restic Kopia BorgBackup
Language Go Go Python + C
First release 2015 2019 2015 (forked from Attic)
License BSD-2 Apache-2.0 BSD-3
GitHub stars 27,000+ 8,500+ 11,500+
Approach Cloud-first, multi-backend Modern, UI-enabled Compression-first, SSH-focused

Feature Comparison

Feature Restic Kopia BorgBackup
Deduplication Content-defined chunking Content-defined chunking Content-defined chunking
Compression zstd (v0.16+) zstd, gzip, s2 zstd, lz4, zlib, lzma
Encryption AES-256 in CTR mode + Poly1305 AES-256-GCM or ChaCha20 AES-256-CTR + HMAC-SHA256
Web UI No Yes (built-in) No
Repository server Via rest-server (separate tool) Built-in (kopia server) Via borg serve
Cloud backends S3, B2, Azure, GCS, SFTP, local, REST S3, B2, Azure, GCS, SFTP, local, WebDAV SFTP, local only (natively)
Rclone integration Yes (40+ cloud providers) No Via rclone mount (workaround)
Snapshot browsing restic mount (FUSE) Web UI or kopia mount borg mount (FUSE)
Parallel backup Yes Yes No (single-threaded by default)
Pruning/retention Time-based policies Flexible policies Time + count-based
Lock-free operations No (uses locks) Yes (optimistic concurrency) No (uses locks)
Integrity verification restic check kopia snapshot verify borg check
Docker image Yes (official) Yes (official) Yes (community)

Cloud Storage Support

This is the biggest differentiator. If you want to back up to cloud storage, Restic and Kopia pull far ahead.

Backend Restic Kopia BorgBackup
Local filesystem Yes Yes Yes
SFTP/SSH Yes Yes Yes
Amazon S3 Yes Yes No
Backblaze B2 Yes Yes No
Google Cloud Storage Yes Yes No
Azure Blob Yes Yes No
MinIO / S3-compatible Yes Yes No
Wasabi Yes Yes No
WebDAV Via rclone Yes No
Rclone (40+ providers) Yes No No (workaround)

BorgBackup limitation: Borg only supports local and SSH-based repositories natively. Backing up to S3 or B2 requires mounting via rclone or using BorgBase (managed hosting). This is by design — Borg optimizes for direct repository access.

Performance Comparison

Performance depends heavily on data characteristics, but general patterns:

Metric Restic Kopia BorgBackup
Initial backup speed Fast (parallel) Fastest (parallel + modern chunking) Medium (single-threaded)
Incremental backup speed Fast Fast Fast
Deduplication ratio Good (variable chunks) Good (variable chunks) Best (variable chunks + compression)
Storage efficiency Good Good Best (superior compression options)
Memory usage Moderate (100-500 MB) Moderate (100-500 MB) Higher (500 MB - 2 GB for large repos)
Repository overhead ~1-3% ~1-2% ~1-2%

Key insight: BorgBackup typically achieves 10-30% smaller repositories than Restic for the same data, thanks to its superior compression. Kopia falls between them, with zstd compression closing the gap against Borg.

Automation and Scheduling

Feature Restic Kopia BorgBackup
Built-in scheduler No Yes (via server mode) No
Recommended scheduler cron / systemd timer Built-in or cron Borgmatic (wrapper)
Docker scheduling Via cron in container Via server or cron Via Borgmatic
Pre/post backup hooks Via wrapper scripts Built-in actions Via Borgmatic
Email notifications Via wrapper scripts Built-in (server mode) Via Borgmatic

Restic and BorgBackup both need external scheduling. Borgmatic wraps BorgBackup with YAML-based configuration, scheduling, and monitoring hooks — making Borg much easier to automate.

Setup Complexity

Restic — Moderate

# Initialize repository
restic init --repo /path/to/backup

# Run backup
restic backup /data --repo /path/to/backup

# S3 example
restic init --repo s3:s3.amazonaws.com/my-bucket
restic backup /data --repo s3:s3.amazonaws.com/my-bucket
Enter fullscreen mode Exit fullscreen mode

Kopia — Easiest

# Initialize repository (local)
kopia repository create filesystem --path /path/to/backup

# Or use the web UI
kopia server start --insecure --address 0.0.0.0:51515

# Run backup
kopia snapshot create /data
Enter fullscreen mode Exit fullscreen mode

BorgBackup — Moderate (Easy with Borgmatic)

# Initialize repository
borg init --encryption=repokey /path/to/backup

# Run backup
borg create /path/to/backup::backup-{now} /data

# With Borgmatic (recommended)
borgmatic init
borgmatic
Enter fullscreen mode Exit fullscreen mode

Use Cases

Choose Restic If...

  • You want to back up to cloud storage (S3, B2, Wasabi)
  • You need rclone integration for exotic backends
  • You want the largest community and most documentation
  • You prefer a simple, well-documented CLI
  • You back up from multiple machines to a shared repository

Choose Kopia If...

  • You want a web UI for managing backups
  • You need a centralized repository server for multiple clients
  • You want built-in scheduling without external tools
  • You prefer modern, actively-developing software
  • Lock-free operation matters (concurrent backups to same repo)

Choose BorgBackup If...

  • Storage efficiency is your top priority
  • You back up over SSH to a remote server or NAS
  • You don't need cloud storage backends
  • You want the most mature, battle-tested deduplication
  • You're comfortable with Borgmatic for automation

Final Verdict

Use Case Winner Why
Cloud backup (S3/B2) Restic Most backends, rclone integration
NAS/SSH backup BorgBackup Best compression, proven reliability
GUI management Kopia Only one with built-in web UI
Multi-device backup Kopia Built-in repository server
Storage efficiency BorgBackup Best-in-class deduplication + compression
Community/ecosystem Restic Largest community, most documentation
Beginner-friendly Kopia Web UI, built-in scheduling

For a self-hosting setup backing up to Backblaze B2 or S3, Restic is the default recommendation. For local NAS backups where storage cost matters, BorgBackup with Borgmatic. For those who want the easiest experience with a visual interface, Kopia.

FAQ

Can I switch between Restic, Kopia, and BorgBackup without losing data?

No — each tool uses an incompatible repository format. Switching requires restoring data from the old tool and creating a new backup with the new tool. There is no direct migration path between any of these three. Plan for this by keeping the old repository accessible until you've verified the new backup is complete.

Which tool works best with Backblaze B2?

Restic has the most mature B2 integration. It supports B2 natively as a backend and handles large uploads efficiently with chunked transfers. Kopia also supports B2 well. BorgBackup does not support B2 directly — you need to mount B2 as a filesystem using rclone or use a network storage layer, which adds complexity and can reduce performance.

Can I use these tools to back up Docker volumes?

Yes, all three can back up Docker volumes. The approach is the same: stop the container (or use a database dump for databases), then back up the volume directory on the host. Borgmatic and Kopia's built-in scheduling make this easier to automate. Restic requires a wrapper script or cron job to handle the stop/backup/start sequence.

Do any of these tools support Windows?

Restic and Kopia support Windows natively with official binaries. BorgBackup does not have official Windows support — it runs on Linux and macOS only. If you need to back up Windows machines, Restic or Kopia are your options. For mixed environments, Restic is the safest choice due to its broader platform support.

Which tool is fastest for large backups (1 TB+)?

BorgBackup is typically fastest for local backups due to its efficient deduplication and compression pipeline. For cloud backups, Restic and Kopia perform similarly — both parallelize uploads and handle large repositories well. The bottleneck for cloud backups is usually network bandwidth, not the tool itself. All three handle multi-terabyte repositories without issues.

Can I monitor backup health with these tools?

Kopia has a built-in web UI showing backup status, schedules, and repository health. Restic and BorgBackup are CLI-only — you need external monitoring. A common approach is using Healthchecks or Uptime Kuma to monitor whether backup scripts complete on schedule. Borgmatic (the BorgBackup wrapper) supports Healthchecks pings natively.

Related

Top comments (0)