No description
Find a file
2025-12-25 13:29:49 +01:00
cmd/ark Init 2025-12-25 12:51:37 +01:00
internal Rework with additional commands 2025-12-25 13:29:49 +01:00
.gitignore Init 2025-12-25 12:51:37 +01:00
go.mod Init 2025-12-25 12:51:37 +01:00
go.sum Init 2025-12-25 12:51:37 +01:00
LICENSE Rework with additional commands 2025-12-25 13:29:49 +01:00
Makefile Init 2025-12-25 12:51:37 +01:00
README.md Rework with additional commands 2025-12-25 13:29:49 +01:00

ark — Append-only, encrypted, deduplicating snapshot archive

A Go-based backup/archive tool inspired by ZPAQ-like ideas: a single append-only file containing chunks + snapshots, with deduplication and AES-256-GCM encryption.

Features (this repo)

  • Single-file append-only container (.ark)
  • Snapshots stored inside the archive
  • Chunk-based deduplication across snapshots (MVP: fixed-size chunks)
  • Integrity checks via AES-GCM authentication + per-chunk SHA-256 verification
  • Encryption AES-256-GCM with Argon2id key derivation
  • Commands
    • init initialize repository
    • backup create snapshot
    • snapshots list snapshots
    • ls list files within a snapshot
    • find regex search for file paths across snapshots
    • restore restore snapshot to directory
    • verify verify repository (optionally deep)

Build

make build
./bin/ark --help

Quick start

./bin/ark --repo backup.ark init
./bin/ark --repo backup.ark backup /path/to/data --label "daily"
./bin/ark --repo backup.ark snapshots
./bin/ark --repo backup.ark ls --snapshot <id>
./bin/ark --repo backup.ark find '.*\.conf$'
./bin/ark --repo backup.ark restore --snapshot <id> --to /restore
./bin/ark --repo backup.ark verify --deep

Progress indicators

Long-running operations (backup, restore, verify --deep) show a single-line progress indicator on TTY output.