Infrastructure

Meet Backup

A high-performance encrypted backup tool built in Koder Lang. Deduplicate, compress, and encrypt your data with client-side encryption and push it to any storage backend — local, S3, SFTP, or Koder Cloud. Restore any file from any point in time in seconds.

require "koder-backup"

def main
  repo = Repo.open("s3://my-backups/server1")

  # Back up a directory
  repo.backup(
    paths: ["/home", "/etc", "/var/lib/postgres"],
    exclude: ["*.tmp", ".cache"],
    tags: ["daily"],
  )

  # Restore a single file from yesterday
  repo.restore("/home/user/doc.txt", { snapshot: "latest-1" })
end

Features

Everything you need, built from the ground up.

Content-Addressable Deduplication

Only store unique data chunks. Back up 1 TB of data that's 95% unchanged and transfer just 50 MB. Saves storage and bandwidth dramatically.

Client-Side Encryption

Data is encrypted with AES-256-GCM before it leaves your machine. Your backup provider never sees your plaintext data — not even metadata.

Instant Point-in-Time Restore

Browse and restore any file from any snapshot instantly. No need to download the entire backup — mount it as a virtual filesystem and access individual files.

Multi-Backend Storage

Store backups on local disk, S3, B2, GCS, Azure Blob, SFTP, Restic-compatible repos, or any combination. Mirror to multiple backends for redundancy.

🔒
Incremental Forever

Every backup is incremental at the block level, but every snapshot is a full restore point. No more worrying about full vs. incremental backup chains.

Native Performance

Built in Koder Lang with zero GC pauses. Backs up 100 GB in under 2 minutes on modern hardware with parallel chunking and compression.

Retention Policies

Automatically prune old snapshots while keeping the ones that matter.

  • Keep last N snapshots, daily, weekly, monthly, yearly
  • Tag-based retention rules
  • Dry-run mode to preview what would be pruned
policy = RetentionPolicy {
  keep_last: 7,
  keep_daily: 30,
  keep_weekly: 12,
  keep_monthly: 24,
  keep_yearly: 5,
end

repo.prune(policy)

Database Backups

Consistent backups for databases with pre/post hooks and streaming.

  • PostgreSQL, MySQL, MongoDB, Redis snapshot support
  • Consistent snapshots using pg_dump streaming
  • Automatic WAL archiving for point-in-time recovery
db_backup = DatabaseBackup.new(
  type: "postgresql",
  connection: "postgres://localhost/mydb",
  method: "streaming", # No table locks
)

repo.backup_database(db_backup)

How It Compares

See how Koder Backup stacks up against the competition.

FeatureKoder BackupResticBorgBackupDuplicatiVeeam
Content-addressable deduplication
Client-side encryption by default
Mount snapshots as virtual filesystem
Parallel multi-core compressionPartial
Multi-backend mirroring
Database-aware backups
Single binary, zero dependencies
Sub-2-minute backup for 100 GBPartial

Frequently Asked Questions

Koder Backup uses the same content-addressable deduplication approach as Restic but adds parallel multi-core compression, database-aware backups, multi-backend mirroring, and significantly faster backup and restore speeds.

Yes. Koder Backup supports streaming backups for PostgreSQL, MySQL, MongoDB, and Redis — taking consistent snapshots without locking tables or stopping services.

Anywhere — local disk, S3-compatible storage (AWS, MinIO, Backblaze B2), Google Cloud Storage, Azure Blob, SFTP servers, or Koder Cloud. You can mirror to multiple backends simultaneously.

Yes. Mount any snapshot as a virtual filesystem (FUSE) and browse individual files. Or use the restore command with a path filter to download just what you need.

Koder Backup uses AES-256-GCM for data encryption and Argon2id for key derivation. All encryption happens client-side before data leaves your machine. Your storage provider never sees plaintext data.

Ready to get started?

Encrypted, deduplicated backups in seconds

Download View on Flow