Restic vs Kopia vs BorgBackup: Best Backup Tool?

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.

AspectResticKopiaBorgBackup
LanguageGoGoPython + C
First release201520192015 (forked from Attic)
LicenseBSD-2Apache-2.0BSD-3
GitHub stars27,000+8,500+11,500+
ApproachCloud-first, multi-backendModern, UI-enabledCompression-first, SSH-focused

Feature Comparison

FeatureResticKopiaBorgBackup
DeduplicationContent-defined chunkingContent-defined chunkingContent-defined chunking
Compressionzstd (v0.16+)zstd, gzip, s2zstd, lz4, zlib, lzma
EncryptionAES-256 in CTR mode + Poly1305AES-256-GCM or ChaCha20AES-256-CTR + HMAC-SHA256
Web UINoYes (built-in)No
Repository serverVia rest-server (separate tool)Built-in (kopia server)Via borg serve
Cloud backendsS3, B2, Azure, GCS, SFTP, local, RESTS3, B2, Azure, GCS, SFTP, local, WebDAVSFTP, local only (natively)
Rclone integrationYes (40+ cloud providers)NoVia rclone mount (workaround)
Snapshot browsingrestic mount (FUSE)Web UI or kopia mountborg mount (FUSE)
Parallel backupYesYesNo (single-threaded by default)
Pruning/retentionTime-based policiesFlexible policiesTime + count-based
Lock-free operationsNo (uses locks)Yes (optimistic concurrency)No (uses locks)
Integrity verificationrestic checkkopia snapshot verifyborg check
Docker imageYes (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.

BackendResticKopiaBorgBackup
Local filesystemYesYesYes
SFTP/SSHYesYesYes
Amazon S3YesYesNo
Backblaze B2YesYesNo
Google Cloud StorageYesYesNo
Azure BlobYesYesNo
MinIO / S3-compatibleYesYesNo
WasabiYesYesNo
WebDAVVia rcloneYesNo
Rclone (40+ providers)YesNoNo (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:

MetricResticKopiaBorgBackup
Initial backup speedFast (parallel)Fastest (parallel + modern chunking)Medium (single-threaded)
Incremental backup speedFastFastFast
Deduplication ratioGood (variable chunks)Good (variable chunks)Best (variable chunks + compression)
Storage efficiencyGoodGoodBest (superior compression options)
Memory usageModerate (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

FeatureResticKopiaBorgBackup
Built-in schedulerNoYes (via server mode)No
Recommended schedulercron / systemd timerBuilt-in or cronBorgmatic (wrapper)
Docker schedulingVia cron in containerVia server or cronVia Borgmatic
Pre/post backup hooksVia wrapper scriptsBuilt-in actionsVia Borgmatic
Email notificationsVia wrapper scriptsBuilt-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

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

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

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 CaseWinnerWhy
Cloud backup (S3/B2)ResticMost backends, rclone integration
NAS/SSH backupBorgBackupBest compression, proven reliability
GUI managementKopiaOnly one with built-in web UI
Multi-device backupKopiaBuilt-in repository server
Storage efficiencyBorgBackupBest-in-class deduplication + compression
Community/ecosystemResticLargest community, most documentation
Beginner-friendlyKopiaWeb 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.

Comments