Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A simple yet somewhat powerful backup tool I made in a weekend after my hard drive crashed. The main thing I use it for is backing up source code. It supports compression, encryption, and per-backup synchronisation accross several nodes.

There are two concepts, Folders and Nodes.

A folder is a self-contained backup, it can be either a source or an archive. A source folder contains just some metadata, whereas an archive folder contains metadata plus a compressed and encrypted copy of your files.

A node is a computer running tbak, when you add a remote node to your own local node, you basically grant that remote node full powers over your own node's backups, so only connect two nodes if you trust both of them.

Folders can be synchronised accross multiple nodes, and only the last compressed and encrypted version of every file will be backed-up on each node. Each node has a full copy of each folder, but only the node that owns the source folder has the keys to decrypt the files.

Example usage

Assuming that your local node is already linked to some remote nodes (the remote node added you, and you added it), then this is how you would create a new backup and broadcast it to other nodes :

tbak folder add-source /some/folder/somewhere
tbak folder push /some/folder/somewhere

Then you would just run tbak folder push /some/folder/somewhere any time you want to synchronise your folder with other nodes, this can for example be done as a cron job.


This code is not portable C++, it was written for Linux and uses several advanced non-portable features not available in standard C++ like directories and sockets...

The libraries used are libbrotli for compression, libsodium for encryption and Boost Lockfree. The project uses CMake as a build system, version 3.1 minimum.


Encrypted, compressed, distributed backups






No releases published


No packages published