Restic vs Borgmatic: Which Backup Tool Fits?

A Problem You’ve Probably Hit

You’ve got 15 Docker services running. Data lives in volumes, bind mounts, PostgreSQL databases, and config files scattered across /opt. You need automated, encrypted backups that don’t require babysitting. Restic and Borgmatic both solve this — differently.

Restic is a standalone backup tool. Single binary, native cloud storage support, fast incremental backups. You write a cron job or systemd timer and call restic backup.

Borgmatic wraps BorgBackup in YAML configuration. One config file defines sources, retention, database dumps, monitoring hooks, and scheduling. It calls borg commands for you.

Feature Comparison

FeatureRestic 0.18.1Borgmatic 1.9.14 (BorgBackup 1.4.3)
LanguageGo (single binary)Python (wraps BorgBackup C/Cython)
DeduplicationContent-defined chunkingVariable-length chunking
EncryptionAES-256-CTR-Poly1305AES-256-CTR + HMAC-SHA256
CompressionZSTD, gzip, LZ4 (v0.16+)LZ4, ZSTD, ZLIB, LZMA
Cloud storageNative S3, B2, Azure, GCS, SFTPSSH-based; cloud via rclone
Local storageFilesystemFilesystem, SSH
Database dumpsExternal scriptingBuilt-in (PostgreSQL, MySQL, MongoDB, SQLite)
Monitoring hooksExternal scriptingHealthchecks.io, Cronitor, PagerDuty
Docker imageCommunity imagesOfficial: ghcr.io/borgmatic-collective/borgmatic:1.9.14
SchedulingExternal (cron, systemd)Built-in cron in Docker image
Web UINone (use Backrest for UI)None
Restorerestic restore, FUSE mountborg extract, FUSE mount
Concurrent backupsYes (lock-free reads)No (repository-level lock)
LicenseBSD-2-ClauseGPL-3.0 (Borgmatic) / BSD-3-Clause (BorgBackup)

Storage Backends: The Biggest Practical Difference

Restic talks to cloud storage natively. Borgmatic relies on SSH for remote repos.

Restic connects directly to:

  • Amazon S3 / MinIO / any S3-compatible store
  • Backblaze B2
  • Google Cloud Storage
  • Azure Blob Storage
  • SFTP servers
  • REST server (restic’s own lightweight server)

Borgmatic (BorgBackup) connects to:

  • Local filesystem
  • Remote server via SSH (borg serve)
  • Cloud storage only through rclone mounts

If your backup destination is Backblaze B2 or S3, Restic is simpler — no rclone layer, no FUSE mount, no additional failure points.

If your backup destination is another server you control (a NAS, a remote VPS), Borgmatic’s SSH approach is equally simple and has lower overhead than Restic’s REST server.

Automation and “Batteries Included”

Borgmatic wins on out-of-the-box automation. A single YAML file handles:

# borgmatic config — everything in one place
repositories:
  - path: ssh://[email protected]/./borg-repo
    label: nas

source_directories:
  - /opt/docker-data
  - /etc

postgresql_databases:
  - name: nextcloud
    hostname: postgres
    username: backup
    password: ${PGPASSWORD}

retention:
  keep_daily: 7
  keep_weekly: 4
  keep_monthly: 12

hooks:
  healthchecks:
    ping_url: https://hc-ping.io/uuid-here
  before_backup:
    - echo "Starting backup at $(date)"

With Restic, you’d build equivalent automation yourself:

#!/bin/bash
# restic-backup.sh — you write this
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/my-backups"
export RESTIC_PASSWORD_FILE="/etc/restic/password"
export AWS_ACCESS_KEY_ID="AKIA..."
export AWS_SECRET_ACCESS_KEY="..."

# Database dump first
docker exec postgres pg_dumpall -U postgres > /tmp/db-dump.sql

# Run backup
restic backup /opt/docker-data /etc /tmp/db-dump.sql

# Cleanup
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune

# Health check ping
curl -fsS -m 10 --retry 5 https://hc-ping.io/uuid-here
rm /tmp/db-dump.sql

Both achieve the same result. Borgmatic gives you the structure; Restic gives you the freedom. Neither is wrong — it depends on whether you prefer declarative config or imperative scripts.

Performance

Both are fast. In practice, the bottleneck is almost always storage I/O rather than the backup tool itself.

BenchmarkRestic 0.18.1Borgmatic (BorgBackup 1.4.3)
Initial backup 50 GB mixed~12-20 min~10-18 min
Incremental (<1% changed)~20-60 sec~20-60 sec
Typical dedup ratio3-8x4-10x
Memory usage200-500 MB200-500 MB

BorgBackup’s variable-length chunking tends to achieve slightly higher deduplication ratios on datasets with shifted content (VM images, database dumps). Restic’s fixed-polynomial chunking is more predictable. The difference is usually <10%.

Restore Experience

Restic:

# List snapshots
restic snapshots

# Restore specific snapshot to a directory
restic restore abc123de --target /tmp/restore

# Mount all snapshots as FUSE filesystem
restic mount /mnt/restic-mount

Borgmatic:

# List archives
borgmatic list

# Restore specific archive
borgmatic extract --archive host-2026-02-24T03:00:00 --destination /tmp/restore

# Mount as FUSE
borg mount /path/to/repo::archive-name /mnt/borg-mount

Both support file-level restores and FUSE mounting. Restic’s snapshot naming (short hashes) is less readable than BorgBackup’s timestamp-based names, but restic snapshots shows the dates.

FAQ

Can I migrate from Borgmatic to Restic?

Not directly — different repository formats. You’d need to create a new Restic repo and re-backup your data. Mount the borg repo via FUSE, then point Restic at the mounted directory.

Which is faster to set up?

Restic with a local repo: 2 commands (restic init, restic backup). Borgmatic with Docker: create a config.yaml and run the container. Both are quick for basic setups. Borgmatic takes longer to configure fully but automates more.

Does Restic have database dump support?

Not built in. Use pre-backup scripts to dump databases, then include the dump files in the backup. Wrapper tools like Resticker or Backrest add automation features.

Which handles large file trees better?

BorgBackup (and thus Borgmatic) has historically been faster with repositories containing millions of small files due to its metadata index. Restic has improved significantly in recent versions and the gap has narrowed.

Final Verdict

Choose Borgmatic if you back up to your own servers via SSH, you want database dumps and monitoring hooks without scripting, and you prefer declarative YAML config over shell scripts.

Choose Restic if you back up to cloud storage (S3, B2, GCS), you want a single static binary with no Python dependencies, or you already have backup automation that just needs a reliable backup engine.

Both tools are excellent. The storage backend is the deciding factor for most people — SSH favors Borgmatic, cloud storage favors Restic.