## 🤖 New release * `rustic-rs`: 0.9.5 -> 0.10.0 (✓ API compatible changes) <details><summary><i><b>Changelog</b></i></summary><p> <blockquote> ## [0.10.0](https://github.com/rustic-rs/rustic/compare/v0.9.5...v0.10.0) - 2025-09-12 ### Added - Add --name option to select snapshot(s) from config to backup ([#1531](https://github.com/rustic-rs/rustic/pull/1531)) - *(commands)* make group_by a global option ([#1545](https://github.com/rustic-rs/rustic/pull/1545)) - Add environment variables to the hooks ([#1518](https://github.com/rustic-rs/rustic/pull/1518)) - *(commands)* copy checks all chunker constellations ([#1530](https://github.com/rustic-rs/rustic/pull/1530)) - *(interactive)* Add possibility to change snapshot hostname ([#1498](https://github.com/rustic-rs/rustic/pull/1498)) - OpenTelemetry Protocol support for metrics ([#1473](https://github.com/rustic-rs/rustic/pull/1473)) - *(interactive)* Reduce memory consumption of summary ([#1489](https://github.com/rustic-rs/rustic/pull/1489)) - *(interactive)* remember summary when switching snapshot/ls/diff views ([#1485](https://github.com/rustic-rs/rustic/pull/1485)) - *(interactive)* [**breaking**] Add interactive diff / overwork diff output ([#1480](https://github.com/rustic-rs/rustic/pull/1480)) - *(interactive)* ls: Add options to compute cumulative statistics ([#1479](https://github.com/rustic-rs/rustic/pull/1479)) - *(commands)* Add missing key subcommands ([#1385](https://github.com/rustic-rs/rustic/pull/1385)) - *(commands)* [**breaking**] Fine-tune output for snapshots command when no grouping is given ([#1375](https://github.com/rustic-rs/rustic/pull/1375)) - *(diff)* Use local PATH1 as PATH2 if no new snapshot/path is given ([#1474](https://github.com/rustic-rs/rustic/pull/1474)) - *(commands)* [**breaking**] Extend logging ([#1463](https://github.com/rustic-rs/rustic/pull/1463)) - push prometheus metrics to pushgateway on-demand ([#1404](https://github.com/rustic-rs/rustic/pull/1404)) - Allow to use OPENDAL_HOT_* and OPENDAL_COLD_* env variables ([#1392](https://github.com/rustic-rs/rustic/pull/1392)) ### Fixed - sanitize paths after run-before hook ([#1549](https://github.com/rustic-rs/rustic/pull/1549)) - Handle dry-run for all commands ([#1546](https://github.com/rustic-rs/rustic/pull/1546)) - fix clippy lints ([#1533](https://github.com/rustic-rs/rustic/pull/1533)) - cargo update openssh-sftp-client ([#1510](https://github.com/rustic-rs/rustic/pull/1510)) - Don't allow wrong commands in front of valid ones ([#1464](https://github.com/rustic-rs/rustic/pull/1464)) - fix clippy lints - rename OPENDAL_HOT_*/COLD_* to OPENDALHOT_*/COLD_* ([#1393](https://github.com/rustic-rs/rustic/pull/1393)) - fix clippy lint - *(commands)* remove SIGPIPE default handler ([#1431](https://github.com/rustic-rs/rustic/pull/1431)) - fix clippy lints - *(config)* set a non-zero default progress interval for progress options ([#1378](https://github.com/rustic-rs/rustic/pull/1378)) ### Other - update dependencies ([#1556](https://github.com/rustic-rs/rustic/pull/1556)) - *(deps)* bump tracing-subscriber from 0.3.19 to 0.3.20 ([#1544](https://github.com/rustic-rs/rustic/pull/1544)) - [**breaking**] Remove --filter-fn from default ([#1482](https://github.com/rustic-rs/rustic/pull/1482)) - update rustic_core ([#1541](https://github.com/rustic-rs/rustic/pull/1541)) - update rustic_core ([#1519](https://github.com/rustic-rs/rustic/pull/1519)) - *(config)* Correct the `exclude-if-present` option descritption ([#1506](https://github.com/rustic-rs/rustic/pull/1506)) - update to latest rustic_core ([#1491](https://github.com/rustic-rs/rustic/pull/1491)) - clippy lints - Use rustic_core development version ([#1476](https://github.com/rustic-rs/rustic/pull/1476)) - code formatting - adapt to latest rustic_core ([#1456](https://github.com/rustic-rs/rustic/pull/1456)) - use 2024 edition ([#1453](https://github.com/rustic-rs/rustic/pull/1453)) - update prometheus version - dependency updates - *(deps)* bump zip from 2.2.1 to 2.3.0 ([#1432](https://github.com/rustic-rs/rustic/pull/1432)) - *(deps)* bump ring from 0.17.8 to 0.17.13 ([#1424](https://github.com/rustic-rs/rustic/pull/1424)) - Add Homebrew instructions ([#1416](https://github.com/rustic-rs/rustic/pull/1416)) </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). --------- Co-authored-by: rustic-release-plz[bot] <182542030+rustic-release-plz[bot]@users.noreply.github.com> Co-authored-by: Alexander Weiss <alex@weissfam.de> |
||
|---|---|---|
| .cargo | ||
| .github | ||
| config | ||
| coverage | ||
| docs | ||
| scripts | ||
| src | ||
| tests | ||
| util/systemd | ||
| .gitignore | ||
| build-dependencies.just | ||
| build.sh | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| cliff.toml | ||
| CONTRIBUTING.md | ||
| deny.toml | ||
| Dockerfile | ||
| dprint.json | ||
| ECOSYSTEM.md | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| maskfile.md | ||
| platform-settings.toml | ||
| README.md | ||
| release-plz.toml | ||
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.
Stability
rustic currently is in beta state and misses regression tests. It is not
recommended to use it for production backups, yet.
rustic Libraries
The rustic project is split into multiple crates:
- rustic - the main binary
- rustic-core - the core library
- rustic-backend - the library for supporting various backends
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.
Contact
You can ask questions in the Discussions or have a look at the FAQ.
| Contact | Where? |
|---|---|
| Issue Tracker | GitHub Issues |
| Discord | |
| Discussions | GitHub Discussions |
Getting started
Please check our documentation for more information on how to get started.
Installation
From binaries
cargo-binstall
cargo binstall rustic-rs
Windows
Scoop
scoop install rustic
macOS
Homebrew
brew install rustic
Or you can check out the releases.
Nightly binaries are available here.
Docker
docker pull ghcr.io/rustic-rs/rustic
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 --locked rustic-rs
Differences to restic?
We have collected some improvements of rustic over restic
here.
Contributing
Tried rustic and not satisfied? Don't just walk away! You can help:
- You can report issues or suggest new features on our Discord server or using Github Issues!
Do you know how to code or got an idea for an improvement? Don't keep it to yourself!
- Contribute fixes or new features via a pull requests!
Please make sure, that you read the contribution guide.
Minimum Rust version policy
This crate's minimum supported rustc version is 1.80.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.