Releases: rustic-rs/rustic
rustic v0.8.1
We are very happy to release rustic 0.8.1 based on rustic_core 0.3.1.
This release is basically a bugfix release, but also adds small enhancements in shell completions and interactive mode.
We also warmly welcome the new maintainer @nardoor who joined the team shortly before we started working on rustic_core 0.3.1 / rustic 0.8.1!
Changelog
Bug Fixes
- Allow to compile without tui feature
(#1208) - Use cargo --locked in CI pipeline
(#1207) - Return exitcode (#1220)
- "Incorrect Password" error is now only shown if password is really incorrect.
(rustic_core) - Group by now works as expected
(rustic_core) - A bug in
keep-tags
andfilter-tags
has been fixed.
(rustic_core) - Building OpenBSD platform target is now possible again
(rustic_core)
Documentation
- Update config profile readme
(#1221)
Features
Generated
- Updated Completions fixtures
Miscellaneous Tasks
rustic v0.8.0
We are happy to release rustic 0.8.0.
In release 0.8.0 lots of smaller bugs have been fixed. Also many new features have been added:
- an interactive mode for viewing and restoring, run
rustic snapshots -i
to test it - the
find
command has been implemented - options for extra checks before saving pack files, for checking the index before each command and for setting repositories in append-only mode have been added
- see more in the detailed changelog below!
We are also proud that test coverage has been increased a lot with this release with focus on rustic_core.
Note: There are a few breaking changes which might need changes in the configuration profile!
Detailed changelog:
Bug Fixes
- Add comments for owncloud and nextcloud dependent settings
- Rename service examples
- Ask for password in backup and copy command if it is missing
(#1061) - Ask for missing password in copy when initializing
(#1063) - Fix possible overflow in progress bar ETA
(#1079) - Correct b2.toml (#1072)
- Show log filename if open/creation failed
(#1111) - [breaking] Multiple paths in config profile as array
(#1124) - Respect delete-protection when running forget with ids
(#1149) - Reset terminal no matter what
(#1175) - Allow missing fields in snapshot summary (to support restic 0.17.0)
(rustic_core) - Allow non-value/null xattr fields
(rustic_core) - Backup file if listing xattrs fails
(rustic_core) - limit memory usage for restore when having large pack files
(rustic_core) - prune: correct number of packs to repack
(rustic_core)
Features
- [breaking] Show-config now outputs toml
(#1095) - [breaking] Allow specifying many options in config profile without array
(#1130) - Add interactive snapshots mode
(#1114) - The find command has been added
(#1136) - Allow setting extra repository options via env variables
(#1081) - Add --check-index option
(#1078) - Add extra check before writing data and add --set-extra-check config option
(rustic_core) - Add append-only repository mode
(rustic_core) - forget: Enforce to have a --keep-* option and add --keep-none.
(rustic_core) - Add s3_idrive config and move configs to a services subdirectory
(#1048) - Add example config for owncloud and nextcloud
(#1052) - Use human-panic to print better error messages in case rustic panics
(#1065) - Prune: Add more debug output
(#1064) - Add interactive ls mode
(#1117) - Add interactive restore
(#1123) - Interactive Ls: remember parent position
(#1126) - Use RFC3339 time format in logfile
(#1133) - Add possibility to change snapshot description
(#1137) - Interactive: Allow to delete snapshots
(#1143) - Interactive: Prompt before exiting
(#1146) - Document opendal options connections and throttle
- Add better progress bars
(#1152) - Show diff statistics
(#1178)
Documentaton
Miscellaneous Tasks
- Fix cargo-binstall metadata
- Move rustic_testing into rustic_core
- Break old ci jobs when new commits are pushed so we don't fill up the queue
- Bump mio from 0.8.10 to 0.8.11
(#1089) - Update deps and adapt to rustic_core changes
- Bump h2 from 0.3.25 to 0.3.26
(#1113) - Bump rustls from 0.21.10 to 0.21.11
(#1127) - Update rustic_core and rustic_backend
(#1201)
Testing
- Replace missing crates folder with src
- Refactor integration tests to assert_cmd and predicates, test all configs in
config subdirectory (#1060)
rustic v0.7.0
Dear rustic
users,
This rustic version, brings two major innovations. On the one hand, we have integrated OpenDAL.
On the other hand, you can now spawn a WebDAV server with rustic webdav
, which gives you access to the snapshots in your repository in the file browser.
Besides these big milestones, many additions have found their way to rustic and also many minor bugs have been fixed. Thanks a lot to all contributors, bug reporters or people just asking in the rustic discussions!
Enhancements
Backend and Configuration
- Added many new backends using OpenDAL, including SFTP (on Unix) and S3. See the config examples.
- Added the new
webdav
command. - Rclone backend: Added options
rclone-command
,use-password
,rest-url
. - Backend options can now be defined for hot and cold repository parts separately using
[repository.options-hot]
and[repository.options-cold]
.
Backup and Restore
- Backup scanning for size and start of the actual backup is now parallelized.
- Added
--no-scan
option to prevent scanning for the backup size. - Added
--custom-ignorefile
option to use .gitignore-behavior with custom filenames. - Added
--skip-identical-parent
option to skip saving the snapshot if it is identical to the parent. - New option
--quiet
for backup and forget command.
Repository Management
ls
: New option--numeric-id
(can also be used as--numeric-uid-gid
).prune
: New option--early-delete-index
allows running prune with full discs.- The default for
--max-repack
has been changed to "10%".
UI and Usability Improvements
- Help texts are now colored again. We may change that in a future release when reworking the CLI.
- Improved progress bars, e.g., for the
copy
command.
Optimizations
- Reduced memory requirements, especially for large repositories.
Build and Deployment
- Built with cargo-auditable, you can audit the binaries for their dependencies (on available platforms), see here how
- Added a Dockerfile for building a rustic Docker image.
- Added the possibility to build an RPM package.
- Many improvements to the internal build process and CI pipeline.
- Building rustic with
self-update
andwebdav
commands is now an optional feature.
Bug Fixes
- Fixed repository errors after entering a password, which now show up instead of re-prompting for the password.
- Fixed an issue where the
backup
command could abort in the unlikely case of a time shift during backup (e.g., caused by NTP syncing). - Fixed missing cache files printing a warning.
- Fixed
repair index
wrongly settingto-delete
for newly read pack files. - Allowed
diff
to uselocal:
in path syntax, enabling comparison with Windows paths. - Fixed
init
not working as expected for hot/cold repositories due to a regression. - Made output from config file handling identical to other log messages.
rustic 0.6.1
rustic 0.6.1 fixes some small bugs from 0.6.2 including (hopefully) the broken CI for building binaries.
Also rustic_core was updated to 0.1.2.
rustic 0.6.0
Finally, rustic 0.6.0 is released.
This is the first release using the rustic_core crate for basically all rustic functionality. This was a very big refactor, many thanks go to @simonsan!
Even though we took great care to keep all functionality, please keep a good eye on this release due to the big changes!
Breaking Changes
- We refactored to
rustic_core
. This means that most of the underlying logic can now be used as a library. The CLI is now a thin wrapper around the library. This also means that the CLI is now much more customizable. Please check out the documentation for more information.
Bug Fixes
- Retrying backend access didn't work for long operations. This has been fixed
(and retries are now customizable) - Prune did abort when no time was set for a pack-do-delete. This case is now
handled correctly. - The zstd compression library led to data corruption in very unlikely cases.
This has been fixed by a dependency update. - The glob option did only work with absolute files. This has been fixed.
- Non-unicode link targets are now correctly handled on Unix (after this has
been added to the restic repo format). - The
--dry-run
option now works as expected in theinit
command.
Features
- New global configuration paths are available, located at
/etc/rustic/*.toml
or%PROGRAMDATA%/rustic/config/*.toml
, depending on your platform. - REST backend: Now allows to use custom TLS root certificates.
- Environment variables for programms called by rustic can now be set in the
config files. - Creation of new keys now enforces confirmation of entered key. This helps to
prevent mistype of passwords during the initial entry - Wait for password-command to successfully exit, allowing to input something
into the command, and read password from stdout. - backup: New option --init to initialize repository if it doesn't exist yet.
- backup: New option
no-require-git
- if enabled, a git repository is not
required to applygit-ignore
rule. - restore: The restore algorithm has been improved and should now be faster for
remote repositories. - restore: Files are now allocated just before being first processed. This
allows easier resumed restores. - repoinfo: Added new options --json, --only-files, --only-index.
- check: Add check if time is set for packs-to-delete.
- ls: Options --long (-l) and --summary (-s) have been added.
- forget: Option --json has been added.
rustic 0.5.4
Happy to release rustic 0.5.4.
This is again a small bug-fix release.
Changes in version 0.5.4:
Bugs fixed:
- backup crashed when there was a non-unicode link target. The crash has been fixed. However, non-unicode link targets are still unsupported.
- Extended attributes which were saved with value null couldn't be handled. This has been fixed.
- prune: --max-repack didn't work with a given percentage of repo size. This has been fixed.
New features:
- copy: Added --init option to initialize uninitialized target repos
- dependencies have been updated
rustic 0.5.3
This release is a small fix-up release that fixes an annoying bug about reading config files in 0.5.2.
The config file possibilities have been improved and command to debug the used config has been also added.
Changes in version 0.5.3:
Breaking changes:
- config file: use-config now expects an array of config profiles to read.
Bugs fixed:
- The [[backup.sources]] section in the config file was ignored 0.5.2. This has been fixed.
New features:
- The show-config command has been added.
rustic 0.5.2
I'm happy to announce rustic 0.5.2. This release mainly features performance improvements in the backup
command, especially when backing up many new (small) files. Also the config file treatment has been overworked featuring the new use-profile
option which allows to (recursively) inherit options from other config files.
Also some smaller bugs and additional features were added.
Changes in version 0.5.2:
Breaking changes:
- The CLI option
--config-profile
was renamed into--use-profile
(same shortcut-P
).
Bugs fixed:
- restore: Warm-up options given by the command line didn't work. This has been fixed.
- backup: showed 1 dir as changed when backing up without parent. This has been fixed.
- diff: The options --no-atime and --ignore-devid had no effect and are now removed.
- Rustic's check of additional fields in the config file didn't work in edge cases. This has been fixed.
New features:
- backup: Backing up (small) files has been speed-optimized and is now much more parallelized.
- Config file: New field use-profile under [global] allows to merge options from other config profiles
- Option --dry-run is now a global option and can also be defined in the config file or via env variable
- forget: Using "-1" as value for --keep-* options will keep all snapshots of that interval
- prune: Added option --repack-all
- Updated to clap v4
rustic 0.5.1
Happy to release rustic 0.5.1. This version fixes various minor bugs and adds few features.
Changes in version 0.5.1:
Breaking changes:
- ls: Added option
--recursive
, note: default is now non-recursive if a path is given.
Bugs fixed:
- Fixed compilation on OpenBSD.
- Fixed shell completions.
- REST backend displayed the connection password in the log. This has been changed.
- restore: Existing symlinks displayed an error. This is now corrected if the
--delete
option is used. - restore: Setting ownership/permissons/times for symlinks failed. This has been fixed.
- Spaces in paths did not work when given in the config file. This has been fixed.
- backup --stdin-filename did not use the given filename. This has been fixed.
- backup always displayed at least 1 dir as changed. This has been corrected.
- Windows: Backup of the path prefix (e.g. C: -> C/) did not work. This has been fixed.
New features:
- REST backend: Set User-Agent header.
- ls: Added option
--recursive
. - ls: Added glob options to exclude/include.
- restore: Added glob options to exclude/include.
- restore: xattrs treatment has been improved.
- Dependencies have been updated.
rustic 0.5.0
I am very happy to announce rustic 0.5.0!
This release not only includes a lot of new features but also builds the groundwork for future extensions. Windows support has been experimental added and will get seasoned in the next releases. Moreover, a rework of the archiver implementation will allow to use other backup sources than local dirs in future.
Changes in version 0.5.0:
Breaking changes:
- Repository options in the config file can no longer be given under the
[global]
section. Use[repository]
instead. - Backing up multiple sources on the command line now results in one instead of several snapshots.
Bugs fixed:
restore
command did not restore empty files. This is fixed.config
command did save the config file compressed which violates the repo design. This is fixed.- rustic did panic when files with missing
content
field are stored in a tree. This is fixed.
New features:
- Experimental windows support has been added.
- New option --filter-fn allows to implement your own snapshot filter using the Rhai language.
- New command dump has been added.
- New command merge has been added.
- Support for extended file attributes has been added.
- REST/Rclone backend: Allow to set the request timeout.
- Extra or wrong fields in the config file now lead to rustic complaining and aborting.
- New option --no-progress has been added.
- Option --progress-interval can now also be given as command argument and in the config file.
- backup: Paths are now sanitized from command arguments and config file before matching and applying the configuration.
- restore: Add --no-ownership option
- check --read-data: progress bar now also shows total bytes to check and ETA.
- The archiver implementation has been reworked. This will allow more backup sources in future.
- Updated to Rust 1.68 and many dependency updates