Getting started

This guide takes you from zero to a scheduled, encrypted backup in about ten minutes. It assumes you have an S3-compatible bucket and an access key; any provider works.

Installation

blueflow is distributed as a single static binary.

macOS and Linux (Homebrew)

brew install blueflow

Debian and Ubuntu

sudo apt install ./blueflow_1.8.2_amd64.deb

Windows

winget install blueflow

Check the installation with blueflow version.

Create a repository

A repository is where encrypted snapshots are stored. Export your credentials and initialise it:

export AWS_ACCESS_KEY_ID=...
export AWS_SECRET_ACCESS_KEY=...
blueflow init s3://my-bucket/laptop

You will be asked for a passphrase. The repository key is derived from it with Argon2id.

Important: there is no way to recover a repository if you lose the passphrase. Store it in a password manager.

Your first backup

blueflow backup ~/Documents ~/Projects --exclude node_modules

The first run uploads everything. Subsequent runs only upload chunks that changed, which usually takes seconds.

Restoring files

List snapshots and restore a single path to a new location:

blueflow snapshots
blueflow restore 7f3c19ab --include Documents/taxes --target /tmp/restore

Or mount the repository and browse it like a normal directory:

blueflow mount /mnt/backups

Retention policies

Remove old snapshots while keeping a sensible history:

blueflow prune --keep-daily 7 --keep-weekly 5 --keep-monthly 12

Scheduling

On Linux, the package ships a systemd timer that runs the backup defined in your configuration file every night:

sudo systemctl enable --now blueflow-backup.timer

Configuration file

Instead of passing flags every time, create ~/.config/blueflow/config.toml:

repository = "s3://my-bucket/laptop"
paths      = ["~/Documents", "~/Projects"]
exclude    = ["node_modules", "*.tmp", ".cache"]

[retention]
daily   = 7
weekly  = 5
monthly = 12

Commands

CommandDescription
initCreate a new encrypted repository
backupCreate a snapshot of one or more paths
snapshotsList snapshots, optionally filtered by host or tag
restoreRestore a snapshot or part of it
mountMount the repository as a read-only filesystem
pruneApply a retention policy and free storage
checkVerify repository integrity

Last updated · Found a mistake? Tell us.