Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vykar is a fast, encrypted, deduplicated backup tool written in Rust. It’s centered around a simple YAML config format and includes a desktop GUI and webDAV server to browse snapshots. More about design goals.

Do not use for production backups yet, but do test it along other backup tools.

Features

  • Storage backends – local filesystem, S3 (any compatible provider), SFTP, dedicated REST server
  • Encryption with AES-256-GCM or ChaCha20-Poly1305 (auto-selected) and Argon2id key derivation
  • YAML-based configuration with multiple repositories, hooks, and command dumps for monitoring and database backups
  • Deduplication via FastCDC content-defined chunking with a memory-optimized engine (tiered dedup index + mmap-backed pack assembly)
  • Compression with LZ4 or Zstandard
  • Built-in WebDAV and desktop GUI to browse and restore snapshots
  • REST server with append-only enforcement, quotas, and server-side compaction
  • Concurrent multi-client backups – multiple machines back up to the same repository simultaneously; only the brief commit phase is serialized
  • Built-in scheduling via vykar daemon – runs backup cycles on a configurable interval or cron schedule
  • Resource limits for worker threads, backend connections, and upload/download bandwidth
  • Cross-platform – Linux, macOS, and Windows

Benchmarks

Vykar is the fastest tool for both backup and restore, with the lowest CPU cost, while maintaining competitive memory usage.

Backup Tool Benchmark

All benchmarks were run 5x on the same idle Intel i7-6700 CPU @ 3.40GHz machine with 2x Samsung PM981 NVMe drives, with results averaged across all runs. Compression settings were chosen to keep resulting repository sizes comparable. The sample corpus is a mix of small and large files with varying compressibility. See detailed results or our benchmark script for full details.

Comparison

AspectBorgResticRusticKopiaVykar
ConfigurationCLI (YAML via Borgmatic)CLI (YAML via ResticProfile)TOML config fileJSON config + CLI policiesYAML config with env-var expansion
Browse snapshotsFUSE mountFUSE mountFUSE mountFUSE mount or WebDAVBuilt-in WebDAV + web UI
Command dumpsVia Borgmatic (database-specific)NoneNoneNative (before/after actions)Native (generic command capture)
HooksVia BorgmaticVia ResticProfileNativeNative (before/after folder/snapshot)Native (per-command before/after)
CompressionLZ4, Zstd, Zlib, LZMA, NoneZstd, NoneZstd, NoneGzip, Zstd, S2, LZ4, Deflate, PgzipLZ4, Zstd, None
Rate limitingNoneUpload/download bandwidthUpload/download bandwidth, request ratesThreads, backend connections, upload/download bandwidth
Concurrent backupsNo (exclusive lock)Lock-basedLock-based (Restic-compat)Via repository serverSession-based (only commit serialized)
Dedicated serverSSH (borg serve)rest-server (append-only)rustic_serverBuilt-in HTTP/gRPC server with web UIREST server with append-only, quotas, server-side compaction
Desktop GUIVorta (third-party)Third-party (Backrest)NoneBuilt-in (Electron)Built-in
SchedulingVia BorgmaticVia ResticProfileExternal (cron/systemd)Built-in (interval, time-of-day, cron)Built-in
LanguagePython + CythonGoRustGoRust
ChunkerBuzhash (custom)RabinRabin (Restic-compat)Buzhash (default), Rabin-Karp, FixedFastCDC
EncryptionAES-CTR+HMAC / AES-OCB / ChaCha20AES-256-CTR + Poly1305-AESAES-256-CTR + Poly1305-AESAES-256-GCM / ChaCha20-Poly1305AES-256-GCM / ChaCha20-Poly1305 (auto-select at init)
Key derivationPBKDF2 or Argon2idscryptscryptPBKDF2 or scryptArgon2id
SerializationmsgpackJSON + Protocol BuffersJSON + Protocol BuffersJSONmsgpack
Storageborgstore + SSH RPCLocal, S3, SFTP, REST, rcloneLocal, S3, SFTP, RESTLocal, S3, Azure, GCS, B2, SFTP, WebDAV, RcloneLocal, S3, SFTP, REST + vykar-server
Repo compatibilityBorg v1/v2/v3Restic formatRestic-compatibleOwn formatOwn format

Inspired by

  • BorgBackup: architecture, chunking strategy, repository concept, and overall backup pipeline.
  • Borgmatic: YAML configuration approach, pipe-based database dumps.
  • Rustic: pack file design and architectural references from a mature Rust backup tool.
  • Name: From Latin vicarius (“substitute, stand-in”) — because a backup is literally a substitute for lost data.

Get Started

Follow the Quick Start guide to install Vykar, create a config, and run your first backup in under 5 minutes.

Once you’re up and running: