Release Notes

v0.30.0 (2025-04-04)

🌱 Spring release 🌸

This release introduces features and fixes for profile scheduling.

⚠️ Breaking change

Until this release, the user scheduling permission was broken. With systemd or the default macOS scheduler, the permission functioned as user_logged_on, running the profile only when the user was logged in.

This issue is now fixed for new schedules.

To update existing schedules, run unschedule and then schedule again.

For systemd, resticprofile requires root privileges (via sudo) to schedule with user permission, as it now uses a system unit running as the user.

Scheduler

Scheduling has been significantly improved with the ability to read existing schedules. The status and unschedule commands now detect any resticprofile schedules from the selected configuration file, even if the profile is no longer present.

Due to recent error reports, Windows Task Scheduler integration has been completely rewritten to use the schtasks CLI tool.

Other

  • Fixed issue with non-existent battery reported on recent Mac desktop hardware.
  • Added support for Restic 0.18.
  • Included pre-built binary for Windows on ARM64.
  • Upload Resticprofile container to GitHub Container Registry.

Changelog

v0.29.1 (2025-02-06)

❄️ Small maintenance release β˜ƒοΈ

Not much going on in this maintenance release while I’m still working on a big refactoring of the scheduling for the next release.

  • logrotate package added to the Docker image
  • upgrade dependencies to fix security vulnerabilities

Changelog

v0.29.0 (2024-10-28)

πŸ§™πŸ»β€β™€οΈ Halloween edition πŸŽƒ

  • Finally a long standing bug was fixed in this version: use proper nice and ionice values on systemd scheduled tasks.
  • Also the last chunk of work for the configuration v2: we can now schedule groups!
  • Improvement on the JSON schema: a single URL can be used for v1 and v2 configuration
  • Another long standing bug on Windows: escape configuration file path on scheduled tasks

Changelog

v0.28.1 (2024-10-02)

πŸ‚ Autumn bug fixing 🍁

  • fix JSON schema for TOML files that stopped working some time ago (when using Even Better TOML extension on VSCode)
  • [configuration v2] fix regression bug where profile groups were stopping after an error when the continue-on-error flag was set

Changelog

v0.28.0 (2024-08-17)

🌞 Sunny Summer Edition 🌻

Two big things in this release:

  • support for all the new commands and flags of restic 0.17
  • experimental support for environment variables in configuration flags

Example of using environment variables in configuration:

check-repo-profile:
    inherit: default

    run-before:
        - "echo DOW=`date +\"%u\"` >> {{ env }}"

    check:
        read-data-subset: "$DOW/7"

Changelog

v0.27.1 (2024-07-08)

🌦️ Rainy Summer Edition β˜”

Fix of a regression bug preventing resticprofile from sending logs to a temporary session log file (prefixed with temp:/t/) Thanks @iluvatyr for the quick bug report πŸ‘πŸ»

Changelog

v0.27.0 (2024-06-27)

🌻 Summer release 🌞

Summer is here in the Northern Hemisphere! A new release is here too! πŸŽ‰

A lot of goodies in this release:

new run-schedule command

It’s more a behind the scene feature: you no longer need to re-schedule your targets after you changed the configuration. The generated schedule command line is now using this new run-schedule command that reads all the newest bits from the configuration.

You might want to unschedule and schedule all your profiles one last time to replace the existing command line using the new run-schedule command.

More information: https://creativeprojects.github.io/resticprofile/schedules/commands/index.html#run-schedule-command

direct support for crontab files

Previously resticprofile was using the crontab tool to read and write crond schedules. Now you can directly setup a crontab file no matter which tool is going to consume it.

More information: https://creativeprojects.github.io/resticprofile/schedules/index.html

keep content of configuration variables between commands

This was a big issue for some time. The wait is over! You can now set a configuration variable anywhere in a script and use its value later.

More information: https://creativeprojects.github.io/resticprofile/configuration/run_hooks/index.html#passing-environment-variables

“RESTICPROFILE_{FLAGNAME}” env vars

All cli flags can now be set using environment variables.

More information: #334

allow controlling command output redirection

Allow redirection of the console messages to a log file or to syslog.

More information: #343

Add “–stderr” to redirect console to stderr (for “cat” and “dump”)

More information: https://github.com/creativeprojects/resticprofile/pull/353

Add option to set working directory for restic backup

More information: https://github.com/creativeprojects/resticprofile/pull/354

many bug fixes!

Changelog

v0.26.0 (2024-02-20)

πŸ¦† Second time lucky February release πŸš€

πŸ†• A lot of pre-built binaries have been added on this release. This is to align with the list of pre-built binaries provided by restic

Otherwise this is mostly a maintenance release with a few fixes:

  • fixes multiple backup profiles exporting prometheus files to node_exporter
  • fix missing fields in the show command
  • weekly docker image build (rebuilt under the same version tag, and as latest)
  • restrict the copy command to a list of snapshots in the configuration

Changelog

v0.25.0 (2024-02-08)

πŸ’– February release πŸ’

⚠️ Potential breaking change

The prometheus library used to send metrics to the proxy using protobuf. By default it’s now using the more widely used text format.

If you have any issue sending metrics to your proxy, you can revert to the previous behaviour by adding this option to your profile (it’s not a global option)

my_profile:
  prometheus-push-format: protobuf

More information about the different formats: https://prometheus.io/docs/instrumenting/exposition_formats/#exposition-formats

New in this version

  • fix for CVE-2023-48795
  • new option prometheus-push-format with values text or protobuf (#281)
  • new option to set log output in global section (#277)
  • more control over the default systemd service files (#267)
  • and bug fixes!

Thanks to all our contributors for the good work!

Changelog

v0.24.0 (2023-10-24)

πŸŽƒ October release πŸ‘»

  • upgrade dependencies to fix CVE-2023-3978, CVE-2023-39325 and CVE-2023-44487
  • fix the broken documentation (some tabs were not accessible)
  • can now stop the wait for a lock (restic or resticprofile lock). Before the fix the CTRL-C or other signal was ignored until the lock was acquired or timed out.
  • resticprofile is now available on scoop! thanks @hgraeber
  • detect if the host is running on battery and cancel an action depending on how much battery is left - see schedule section
  • bug fixes (see changelog)

Changelog

v0.23.0 (2023-08-11)

🌞 New summer edition 🌻

This release mostly fixes a few regression from version 0.21.0 and adds a handful of new features:

  • Allow to set base-dir and source-dir in a profile so you can start resticprofile from any current folder
  • Allow to set keep-tag, tag & group-by as empty string
  • Support for restic v0.16 new flags

Thanks to all the contributors for the great work πŸ‘πŸ»

Changelog

v0.22.0 (2023-05-06)

⚠️ Breaking change

The default value of the job tag on prometheus gateway push has changed from command to profile.command. But don’t worry: you can easily revert back to the original value by adding this option in your configuration:

prometheus-push-job: "${COMMAND}"

Fixes:

  • Complicated scheduling on Windows was sometimes setting up a random delay before starting a job

Changelog

v0.21.1 (2023-04-05)

Bug fixes!

This small release fixes two regression bugs introduced in version 0.21.0

  • the ~ was no longer replaced by the user’s home directory for some flag (repository and others…)
  • environment variables were no longer replaced by their value for some flag (repository and others…)

Thanks @jkellerer for the quick fixes πŸ˜‰ πŸ‘πŸ»

New features from v0.21.0

This release adds a verification of all the flags permitted by restic. Only the flags compatible with your version of restic will be generated (prior to this version, any flag like unknown-flag would end up on the restic command line as --unknown-flag.

Also this version generates a JSON schema: this is the configuration schema which can auto-complete options, and verify that your configuration is correct. It works with any compatible editor for the JSON, TOML and YAML configuration file format. Thanks @jkellerer for the awesome work on this πŸŽ‰ . More information here.

Other nice feature is the introduction of the help command which works for both all the resticprofile and restic commands and flags. Try it out!

Changelog

v0.21.0 (2023-04-03)

This is a great milestone for resticprofile πŸ₯³

This release adds a verification of all the flags permitted by restic. Only the flags compatible with your version of restic will be generated (prior to this version, any flag like unknown-flag would end up on the restic command line as --unknown-flag.

Also this version generates a JSON schema: this is the configuration schema which can auto-complete options, and verify that your configuration is correct. It works with any compatible editor for the JSON, TOML and YAML configuration file format. Thanks @jkellerer for the awesome work on this πŸŽ‰ . More information here.

Other nice feature is the introduction of the help command which works for both all the resticprofile and restic commands and flags. Try it out!

And as usual, a lot of bug fixes πŸ˜‰

Changelog

v0.20.0 (2023-01-23)

Not too many new features in this release, but I wanted to build a new docker image with the new restic 0.15.0

Improvements

  • Adds shell command hooks to the following additional commands: dump, find, ls, mount, restore, snapshots, stats and tag.
  • Docker image now contains ssh (to allow sftp repository), curl, tzdata and ca-certificates

Changelog

v0.19.0 (2022-11-11)

New version 0.19.0 of resticprofile!

With:

  • New help system showing all flags from resticprofile and restic. Just type resticprofile help backup and see (thanks @jkellerer)
  • copy command now has run-before, run-after, run-after-fail and run-finally targets. Also more targets are now available for backup and for a profile. See the documentation.
  • groups of profiles can keep running after a profile failed (this is a global settings)
  • Prevent your system from idle sleeping (Windows, macOS, and unix type OS using systemd)
  • May contain nuts

Changelog

v0.18.0 (2022-08-29)

Following the release of the long awaited restic 0.14.0, here’s a new resticprofile!

A few big features were introduced in this version:

  • HTTP hooks using a similar syntax to command hooks but sending HTTP messages to monitoring platforms
  • Better support of the new-ish copy command
  • Addition of mixins on configuration file v2 (in preview)
  • Ability to choose your preferred shell on Windows (cmd, powershell or bash)
  • Send resticprofile logs to a syslog server
  • Add armv8 (arm64) CPU target to docker images
  • Upgrade to restic 0.14.0 in docker image
  • Add rclone to docker image
  • Also search for a configuration file in the resticprofile program folder on Windows (to be used in portable mode)

Changelog

v0.17.0 (2022-05-16)

Here it is!

It’s been a while since we released a new version 😞 The resticprofile team has been busy preparing some really cool new features:

  • simplify the command line by allowing the use of [profile].[command] - Thanks @Syphdias for the PR #89
  • shell completion (for bash, can also be used by zsh with bash compatibility) - Thanks @jkellerer for the PR #90
  • run a shell command to use as a stdin input (like mysqldump) - Thanks @jkellerer for the PR #98
  • run a shell command in the background when non fatal errors are detected from restic - Thanks @jkellerer for the PR #99

and a lot of bug fixes πŸ‘πŸ»

Changelog

v0.16.1 (2022-01-30)

New maintenance version, with bug fixes:

  • fix multiplication of arguments when commands are retried
  • fix status file telling the backup was successful when a warning happened (file/dir not found)

Changelog

v0.16.0 (2021-10-18)

This release adds a few new features:

  • support for splitting configuration into multiple files
  • support for run-finally that runs shell commands every time after restic
  • ability to define your own systemd unit and timer files (from go templates)
  • support for the restic copy command
  • fix for some cosmetic issues with crond scheduler

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:0.16.0

v0.15.0 (2021-08-29)

⚠️ Important

Version 0.15 fixed some issues with escaping parameters to the restic command line. If you’ve used any of these characters in file or directory names in your configuration, please make sure your backup is still working as expected: space, *, ?, \, [, ', ".

If for some reason the fix broke your configuration, there’s a new flag legacy-arguments that you can activate in the global section to revert back to the broken implementation:

global:
    legacy-arguments: true

New features in 0.15:

  • add .Hostname in configuration template (#55)
  • add description field in profile section
  • add support for prometheus file export and push gateway
  • hide confidential values in output (#58)
  • add .TmpDir variable to configuration template (#62)

This version also includes fixes for:

  • resolving special paths starting with a ~ (unixes only)
  • warn when the restic binary was not found at the specified location (but still found at a different location)
  • resolve glob expressions in backup sources (#63)

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:0.15.0

v0.14.1 (2021-06-23)

Bug fix release

This release changes the way the restic binary is searched:

  • restic binary path in global configuration can now contain the ~ character like ~restic/bin/restic
  • if you specified a path in the global configuration and it cannot find the file, a warning will be displayed and resticprofile will keep trying to find a suitable binary

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:0.14.1

v0.14.0 (2021-05-11)

Release 0.14.0

  • New locking/unlocking features. Thanks jkellerer for the PR

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.14.0

v0.13.2 (2021-04-20)

This version fixes a defect where extended status wasn’t returning the extended information on Windows.

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.13.2

v0.13.1 (2021-03-26)

Bug fix:

  • regression from v0.13.0: a message was sent to stderr when initialize parameter was set and the repository already exists

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.13.1

v0.13.0 (2021-03-24)

This version adds two new features:

  • parameter no-error-on-warning to consider a backup successful when restic produced a new snapshot but some files were missing (https://github.com/creativeprojects/resticprofile/discussions/38)
  • resticprofile now catches the error output (stderr) to be written in the status file, also makes the environment variable RESTIC_STDERR available to the targets run-after-fail.

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.13.0

v0.12.0 (2021-03-18)

This release mainly brings 2 new features and a few enhancements:

  • add support for --all in status, schedule, unschedule commands
  • add backup statistics to the status file (via a new extended-status flag)

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.12.0

v0.11.0 (2021-01-20)

Highlights:

Deprecation

Scheduling in the retention section is now deprecated, please use the forget section instead (https://github.com/creativeprojects/resticprofile/issues/23)

Changelog

Docker images

  • docker pull creativeprojects/resticprofile:latest
  • docker pull creativeprojects/resticprofile:0.11.0

v0.10.1 (2020-11-17)

This update changes the way systemd units are generated: These used to be of type oneshot but it means they can be started more than once. They have been changed to notify which is like simple but resticprofile is notifying systemd that the schedule has started and stopped.

To change the type on your existing schedules, you’ll need to run the commands unschedule and schedule again.

Changelog

v0.10.0 (2020-11-12)

New resticprofile version with bug fixes and a big new feature:

  • fix –exclude and –iexclude parameters in unix environment not properly escaping ? and * characters
  • don’t escape (space) if already escaped
  • self-update now works on ARM CPUs (like raspberry pi)
  • configuration files can embed Go templates for modularity

I think it is now feature complete for a version 1.0 πŸ˜„

Changelog

v0.9.2 (2020-11-02)

A few minor features and bug fixes:

  • add version command
  • add force-inactive-lock flag in profiles

Changelog

v0.9.1 (2020-08-03)

Two new features in this release:

  • add a few environment variables when running scripts (run-before, run-after, run-after-fail)
  • add a status file generated after running a profile (to send to some monitoring software)

Changelog

v0.9.0 (2020-07-29)

A few new big features in this release:

  • add --dry-run flag
  • redirect console to a file with --log (for running in the background)
  • generate random keys with generate-random command
  • schedule/unschedule profiles automatically with command schedule/unschedule (also status to check a scheduled task)

Changelog

v0.8.3 (2020-07-13)

Bug fixing release:

Changelog

v0.8.2 (2020-07-09)

This is a bug fixing release:

  • in the configuration file, some strings containing a comma were split into an array of strings. This is now fixed.

Changelog

v0.8.1 (2020-07-02)

This is mostly a bug fixing release:

  • allow for spaces in directories and files (these were ignored before and were messing up the command line)
  • add a show command to see the profile details (mostly for debugging really)
  • add a --format flag to specify the type of configuration file format (if you want to use a different extension)

Changelog

v0.8.0 (2020-06-29)

This version is introducing a few new features:

  • experimental support for HCL configuration files
  • a configuration file with no extension is searched using all supported file extensions: -c profiles would either load profiles.conf, profiles.yaml, profiles.toml, profiles.json or profiles.hcl
  • a new global parameter to check available memory before starting a profile (default is 100MB)

Changelog

v0.7.1 (2020-06-25)

This a maintenance release:

  • add a new parameter run-after-fail which is running the shell commands after any kind of failure (during other commands or during restic execution)
  • a minor breaking change if you use the repository auto-initialization, it will now run after the run-before scripts. It makes more sense this way (in case you mount your backup disks in run-before for example)

Changelog

v0.7.0 (2020-06-24)

This is a maintenance release:

  • fixing a defect when starting a backup with no command definition for backup
  • adding two new options to run scripts before and after a profile (not just backup like before)
  • implementation of a new module to create systemd units. More to come on future releases

Changelog

v0.6.1 (2020-04-22)

Changelog

v0.6.0 (2020-04-07)

Complete rewrite of resticprofile in go:

  • I tried python and I wasn’t particularly impressed
  • I tried go and I loved it (also that’s what all the cool kids do nowadays)

The default configuration profiles.conf is still expected to be in TOML format. But now, resticprofile also supports YAML and JSON file format. Simply feed a .toml, .json or a .yaml file to select the desired format.

The configuration file from the previous versions remains unchanged. There are two additions to it:

  • priority flags: acts like nice on unixes and now available on all platforms
  • lock flag to avoid running two profiles at the same time (this is a local lock)

v0.5.2 (2019-09-26)

Accept a repository from the environment instead of the configuration file

v0.5.1 (2019-08-12)

  • Add a timestamp before each message
  • Use colours more readable on light console
  • Add a flag to disable all ansi characters (to redirect the output to a file)

v0.5.0 (2019-06-26)

Adds support for stdin file stream

v0.4.1 Beta (2019-06-26)

  • Adding ‘mount’ command support
  • Allow chained inheritance of environment variables
  • Allow inheritance on ‘retention’ section

v0.4.0 Beta (2019-06-25)

  • Removing ugly KeyboardInterrupt message when you hit CTRL-C
  • Allow the host flag to be a boolean (if set to yes the current hostname will be used)
  • Also search for restic binary under Windows (like the chocolatey bin folder)
  • Adding two options to check repository before and/or after a backup: ‘check-before’ and ‘check-after’
  • Run shell commands before and after a backup: ‘run-before’ and ‘run-after’

v0.3.0 Beta (2019-06-24)

  • Added “groups”: ability to define groups of profiles to run at once

v0.2.0 Beta (2019-06-24)

  • Fixed compatibility with Windows
  • Fixed defect in profile inheritance

v0.1.0 Beta (2019-06-24)

First ‘usable’ version of resticprofile!

Please note the groups are not working yet (groups can run multiple configuration in one command)