fast, encrypted, and deduplicated backups
About
rustic is a backup tool that provides fast, encrypted, deduplicated backups.
It reads and writes the restic repo format described in the design document and can be used as a restic replacement in most cases.
It is implemented in Rust, a performant, memory-efficient, and reliable cross-platform systems programming language.
Hence rustic supports all major operating systems (Linux, MacOs, *BSD), with Windows support still being experimental.
Features
- Backup data is deduplicated and encrypted.
- Backup storage can be local or cloud storages, including cold storages.
- Allows multiple clients to concurrently access a backup repository using lock-free operations.
- Backups by default are append-only on the repository.
- The operations are robustly designed and can be safely aborted and efficiently resumed.
- Snapshot organization is possible by hostname, backup paths, label and tags. Also a rich set of metadata is saved with each snapshot.
- Retention policies and cleaning of old backups can be highly customized.
- Follow-up backups only process changed files, but still create a complete backup snapshot.
- In-place restore only modifies files which are changed.
- Uses config files for easy configuration of all every-day commands, see example config files.
Differences to restic
We have collected some improvements of rustic over restic here.
Installation
From binaries
cargo-binstall
cargo binstall rustic-rs
Windows
Scoop
scoop install rustic
Or you can check out the releases.
Nightly binaries are available here.
From source
Beware: This installs the latest development version, which might be unstable.
cargo install --git https://github.com/rustic-rs/rustic.git rustic-rs
crates.io
cargo install rustic-rs
Getting started
Please check our documentation for more information on how to get started.
Minimum Rust version policy
This crate's minimum supported rustc
version is 1.70.0
.
The current policy is that the minimum Rust version required to use this crate
can be increased in minor version updates. For example, if crate 1.0
requires
Rust 1.20.0, then crate 1.0.z
for all values of z
will also require Rust
1.20.0 or newer. However, crate 1.y
for y > 0
may require a newer minimum
version of Rust.
In general, this crate will be conservative with respect to the minimum supported version of Rust.
License
Licensed under either of:
at your option.