Skip to content

Releases: rustic-rs/rustic

v0.11.2

05 Apr 12:43
d594e03

Choose a tag to compare

Hello rusticeans,

we are happy to release rustic 0.11.2! This release adds hardlink restore and fixes a few minor bugs, but also features some performance/memory optimizations!

Many of the changes come from community contributions - thanks a lot to everybody who contributed!

Changelog

Added

  • preserve hardlinks on restore (#492, #495)
  • add exclude-if-xattr option (#1718, #491)

Fixed

  • Fix gitignore-handling (#494)
  • Add keep-{within-}hourly to config/full.toml (#1704)
  • fix some typos (#1710)

Other

  • Performance optimizations (#487, #489)
  • move to axum for webdav command (#1720)
  • update dependencies (#1698, #1723, #1721)
  • (deps) unpin and update self_update (#1699)
  • (deps) bump quinn-proto from 0.11.13 to 0.11.14 (#1703)

v0.11.1

05 Mar 08:06
5377513

Choose a tag to compare

Hello rusticeans,

we are happy to release rustic 0.11.1! This release fixes a bunch of minor bugs and features rustic init --hot-only allowing to convert a "standard" repository into a hot/cold repository.

Thanks a lot to everybody who contributed!

Changelog

Added

  • Add init --hot-only option (#1224,#255)
  • Also identify strings without : containing \ or . as local path (#1692)

Fixed

  • if profile ends with .toml, don't append it once more (#1687)
  • correct mount options (#1685)
  • Fix grouping for interactive snapshots view (#1682)
  • use rclone url as-is for rclone command (#485)
  • Add information about to_delete to check errors (#484)
  • race condition in warmup tests (#481)
  • only call warm-up/wait if #ids > 0 (#483)
  • show type/id for crypto errors (#482)
  • ignore non-id files when listing (#479)
  • sort blobs before repacking (#478)
  • tag options in rewrite don't conflict with each other (#476)

Other

v0.11.0

12 Feb 15:25
9820d6a

Choose a tag to compare

Hello rusticeans,

we are happy to release rustic 0.11.0! This release introduces some breaking changes. If you use it with an existing config or repository, please take a look at https://rustic.cli.rs/docs/breaking_changes.html.

New features in 0.11.0 are:

  • The options to determine which information is stored for nodes have been refactored. Using set-atime, set-ctime, set-devid, set-xattr allows to fine-tune this to your needs.
  • The option set-blockdev = "file" allows to backup block devices as normal files allowing to e.g. backup disc-image directly.
  • Support for multiple parents has been added.
  • Logging has been overworked, see below.
  • rustic rewrite is now able to rewrite trees allowing to remove things from existing snapshots.
  • Additional to using passwords, rustic is now able to directly use the masterkey. The masterkey can be also exported as QR image allowing for a paper disaster revovery :-) Access mode can be switched any time, see https://rustic.cli.rs/docs/commands/misc/key.html
  • warm-up for cold storage has been improved supporting more ways to warm-up and parallel warm-up.
  • The latest~N syntax now works for all commands.

For more new features, optimizations and bugfixes, see below.

Thanks a lot to everybody who contributed!

Changelog

Added

  • [breaking] extend LocalSourceSaveOptions (#461)
  • [breaking] Add support for multiple parents (#427)
  • [breaking] Add log-level-logfile, -dryrun and -dependencies options; remove quiet options (#1565)
  • [breaking] Allow to rewrite trees (#1644,#462,#1651,#465)
  • Allow to use masterkey instead of password/keyfile (#1654,#468)
  • Add support for batch warmup (#438)
  • (commands) allow to identify snapshots with "latest" or "latest~N" (N >= 0) (#1563)
  • Allow ls to list local files (using excludes) (#1645)
  • Add default behavior for diff without arguments (#1673)
  • Add option --forget-time to forget (#1670)
  • Update copy and add --force (#1653,#464)
  • improve restore algorithm (#453)
  • Optimize prune rewrite (#448)

Fixed

  • update clap help (#1663)
  • handle all arg combinations for diff command (#1639)
  • use filtered snapshots for repair command (#1636)
  • fix rewrite file count (#466)
  • Return error if too few snapshots for latest~N (#459)
  • Use early-delete-index only if instant-delete is selected (#457)
  • improve error handling for missing UID/GID name (#454)
  • FreeBSD build (#440)

Other

  • [breaking] Use jiff instead of chrono (#1625,#452)
  • Update MSRV to 1.88.0 (#1664)
  • Document OPENDAL* env variables (#1646)
  • Add root directory to sftp_hetzner_sbox.toml (#1628)
  • update dependencies (#1635,#1637,#1667,#1674)

rustic v0.10.3

28 Dec 07:04
bc5c09c

Choose a tag to compare

Hello rusticeans,

we are happy to present the end-year release rustic 0.10.3! This release introduces new summary statistics in the interactive view and better progress information for non-interactive runs. Also warm-up for hot/cold repositories no longer runs on dry-run commands by default. If you need this as a feature, use the new dry-run-warmup option!
Thanks to all contributors and happy new year!

Changelog

Added

  • (interactive) show summary in snapshots, ls and diff views (#1615)
  • Progress Update on non-interactive runs (#1395) (#1620)

Fixed

  • (commands) Skip warmup script on --dry-run (#1523)
  • fix clippy lints (#1621)

rustic v0.10.2

12 Nov 07:38
64fa00f

Choose a tag to compare

Hello rusticeans,

rustic 0.10.2 is a small bugfix release correcting a regression about config profiles which has unfortunately been introduced by 0.10.1. Sorry for any inconveniences!

Changelog

Fixed

  • Substitute environment variables in profiles only if explicitly opted-in (#1600)

v0.10.1

08 Nov 15:01
05914d6

Choose a tag to compare

Note: This release introduced a regression about config files. If you encounter any problems, please update to release 0.10.2!

Hello rusticeans,

we are happy to release rustic 0.10.1. This is a rather small bugfix release; however few improvements have been added including

  • Snapshots can now be also identified using latest~N to get the Nth-latest snapshot. Note that this does not yet work with all commands, we are working on it to roll it out everywhere.
  • filter-last has been added to filter the N latest snapshots, e.g. when grouping snapshots.
  • The command rewrite has been added. Note that this is not yet able to rewrite snapshot trees, but currently only snapshot metadata information like time, label, tags etc. Also the tag command now also changes tags and can be fully replaced by rewrite.
  • Environment variables are now respected in the config profiles, see the PR below for more details.

Thanks a lot to everyone who contributed with code, issues or discussions!

Changelog

Added

  • Add rewrite command (#1583)
  • (interactive) Add --interactive option to ls (#1564)
  • Add filter-last option (#1574)
  • Add environment variable substitution in config files (#1577)
  • (core) repository APIs to identify snapshots using latest~N (#426)
  • (commands) return error if check fails (#224)

Fixed

  • Handle windows path prefixes and relative paths correctly (#432)
  • Fix typos using the typos tool (#1590)
  • (metrics) use short-lived local registry (#1575)
  • fix clippy lints (#1570)
  • wrong env var for grouping option (#1566)

Other

  • update dependencies (#1594)
  • (security) Update fuser (#1569)

rustic v0.10.0

12 Sep 13:57
e54c1cb

Choose a tag to compare

Hello rusticeans,

we are happy to release rustic 0.10.0. This release features various new functionalities including:

  • Chunking can be customized using rustic init or rustic config. Moreover, fixed-size chunking has been added as option preventing potential chunking attacks and also improves backup performance for large files.
  • rustic key commands have been added allowing management of repository keys/passwords
  • Telemetry output has been added to the backup command supporting Prometheus and OpenTelemetry
  • A diff view comparing snapshots/paths has been added to the interactive mode. This and the interactive ls mode also compute summaries for (sub)-dirs if requested.
  • The new option delete-unchanged makes forget delete snapshots which identical to the previous one.

Note that some of the changes may slightly change existing behavior, those changes are marked as breaking below.
Notable is the removal of filter-fn. Please replace it with filter-jq.

Thanks a lot to everyone who contributed with code, issues or discussions!

Changelog

Features

  • Add fixed size chunking and allow fine-tune of rabin chunking (#422)
  • (backup) Add --name option to select snapshot(s) from config to backup (#1531)
  • (backup) [breaking] rename backup skip_identical_parent to skip_if_unchanged (#387)
  • (commands) Add missing key subcommands (#1385)
  • (commands) [breaking] Fine-tune output for snapshots command when no grouping is given (#1375)
  • (commands) [breaking] Extend logging (#1463)
  • (commands) make group_by a global option (#1545)
  • (forget) Add delete_unchanged option to forget (#386)
  • (diff) Use local PATH1 as PATH2 if no new snapshot/path is given (#1474)
  • (warmup) Add warmup wait command (#379)
  • (interactive) [breaking] Add interactive diff / overwork diff output (#1480)
  • (interactive) Reduce memory consumption of summary (#1489)
  • (interactive) remember summary when switching snapshot/ls/diff views (#1485)
  • (interactive) ls: Add options to compute cumulative statistics (#1479)
  • (interactive) Add possibility to change snapshot hostname (#1498)
  • Add environment variables to the hooks (#1518)
  • push prometheus metrics to pushgateway on-demand (#1404)
  • OpenTelemetry Protocol support for metrics (#1473)
  • Allow to use OPENDALHOT_* and OPENDALCOLD_* env variables (#1392, #1393)

Bugfixes

  • Allow to unset append-only mode (#414)
  • Fix repair index (#406)
  • Allow to request identical snapshot multiple times (#408)
  • Don't panic when reading empty files (#381)
  • sanitize paths after run-before hook (#1549)
  • Handle dry-run for all commands (#1546)
  • Don't allow wrong commands in front of valid ones (#1464)
  • (commands) remove SIGPIPE default handler (#1431)
  • (config) set a non-zero default progress interval for progress options (#1378)

Miscellaneous

  • [breaking] Remove --filter-fn from default (#1482)
  • (config) Correct the exclude-if-present option descritption (#1506)
  • use 2024 edition (#1453)
  • Add Homebrew instructions (#1416)
  • code formatting
  • dependency updates

v0.9.5

03 Dec 07:31
f565eea

Choose a tag to compare

Hello rusticeans,

we are happy to release rustic 0.9.5. This release brings some improvements for accessing data in the repository:

  • webdav has been fixed and now also works with remote storages
  • mount has been added for the linux version
  • dump now supports to write .tgz and .zip and direct writes to a file (self-detecting the output format).

Other major improvements are improved error messages and the ability to directly filter snapshots using jq syntax.

Thanks a lot to everyone who contributed with code, issues or discussions!

Changelog

Features

  • (commands) More dump options (#1339)
  • shut down gracefully with ctrl+c (#1364)
  • Add --filter-jq option (#1372)
  • (commands) Add mount command (#973)
  • Error messages are now much improved (rustic_core)
  • (commands) Add minutely timeline (rustic_core) to forget command

Bugfixes

  • (commands) run backup hooks before checking source dir (#1374)
  • (commands) Use spawn_blocking in webdav when calling rustic_core (#1365)
  • (commands) Prevent overwriting hot repository (rustic_core) in init command

Miscellaneous

  • update snapshots to include minutely configuration options
  • (deps) update rustic_core, bytes, and libc dependencies to latest versions
  • simplify lifetime annotations in OpenFileReader and TreeIterItem implementations
  • clean up whitespace and update clippy linting allowances
  • (deps) update dependencies to latest versions
  • (deps) update lockfile to get rid of vulnerable url version
  • (commands) rename fields for clarity in mount, add user options for mount (#1353)
  • (deps) update dependencies
  • (deps) don't use rustic_core webdav feature (#1367)
  • move webdavfs from rustic_core to rustic-rs (#1363)
  • (clippy) comment out unused lints in lib.rs
  • (clippy) apply fixes automatically
  • use BTreeMap for env in global options (#1360)
  • add tiny framework for testing rustic's compat with latest restic (#1303)
  • use snapshot tests for default config, show-config and completions (#1359)
  • (deps) update dependencies rustic_core, rustic_backend, rustic_testing, and migrate to conflate 0.3 (#1357)
  • fix typos
  • (build) add platform-dependent settings and remove ci flag for extra features
  • clarify --use-profile command in config by using long form (#1344)
  • (deps) update core and testing crates (#1340)

rustic v0.9.4

24 Oct 18:22
fb7ddda

Choose a tag to compare

Hello rusticeans,
this patch release introduces tar output to the dump command, if being called on a directory. It also introduces some convenient names to check --read-data-subset: E.g. it allows to daily run check --read-data --read-data-subset=daily/month which covers the repository once run at every day of any month. For more information, check the corresponding (PR).

We also fixed the following issues:

  • self-updating now finds the right target again
  • the opendal backend should now work with less Path-related hickups on Windows

Cheers!

Changelog

Features

  • (commands) Add tar output to dump command (#1328)
  • (core/commands) Add convenient names for read-data-subset n/m (#328)

Bugfixes

  • clippy lints for new Rust version (#1329)
  • (deps) downgrade self-update to fix problems finding right target (#1323)
  • (backends) fix opendal paths on windows (#340)

Miscellaneous

  • (deps) remove once_cell and replace with std::sync::LazyLock, increase MSRV to 1.80.0 (#1337)
  • (deps) update tokio, ratatui, and tui-textarea (#1336)
  • (deps) update rustic_core and rustic_backend (#1334)
  • (deps) update abscissa framework (#1330)
  • introduce a new feature 'release' that includes the 'self-update' feature (#1307)

rustic v0.9.3

10 Oct 02:57
9c1239e

Choose a tag to compare

This is a patch release, it fixes a high-priority issue with rustic v0.9.2 due to a newly introduced bug in rustic_core v0.5.2 that involved how the TreeStreamerOnce handled errors when a channel was full. This ended in frequent panics and thus was breaking everyone's workflow.

We're sorry for the trouble! ✊🏽

Changelog

Fixed

  • (deps) update rustic_core to version 0.5.3 (#1314)

Miscellaneous

  • add status badge for docker image build and shorten workflow name (#1311)