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
- Correct configuration search paths on Windows (#478)
- Create FUNDING.yml
- Documentation versioning (#464)
- Run tests on read only source dir (#461)
- Schedule user logged in (#470)
- Scheduling improvements (#425)
- Set schedule permissions (#476)
- Upload to Github Container Registry (#479)
- Use schtasks.exe CLI to schedule jobs on Windows (#459)
- add microarchitecture to version command (#466)
- add other restic exit codes
- chore: add pre-built binary for windows arm64
- chore: add support for restic 0.18
- don’t include systemd dependencies on macos & windows
- fix for macOs ghost battery (#468)
- remove devcontainer config
- replace experimental maps package with standard library (#467)
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
andionice
values onsystemd
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
andv2
configuration - Another long standing bug on Windows: escape configuration file path on scheduled tasks
Changelog
- Escape config file name in schedule parameters (#420)
- Fix scheduling arguments (#423)
- Global json schema (auto versioning) (#412)
- Group schedule (#418)
- Setup systemd priority (#409)
- doc: upgrade hugo theme
- fix deprecated option in goreleaser config
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
- Fix for continue-on-error broken in 0.26.0 (#407)
- Linters (#397)
- add base url on json schema (#408)
- add misspell linter
- fix bullet points from restic man (#398)
- fix overflow integer conversion lint warning from gosec (#399)
- generate JSON schema for restic 0.17
- prepare next release
- use goreleaser v2
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
- Add contributed docs for protected configuration on Windows (#394)
- Restic 0.17 (#396)
- build with go 1.23
- convert priority value to lowercase
- fix panic when sending on closed handler
- refactoring of arguments generation (#387)
- upgrade packages
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
- fix creation of mock binaries during unit tests (#375)
- fix documentation for release
- fix regression with temporary log file (#386)
- prepare next release
- refactor unit tests on package lock (#374)
- remove flaky test
- remove goarm linked to the internal variable of runtime go1.23 will apparently forbid the use of linkname to the standard library
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
- Add “–stderr” to redirect console to stderr (for “cat” and “dump”) (#353)
- Add documentation on how to ingest resticprofile stats into telegraf (#366)
- Add option to set working directory for restic backup (#354)
- Fix group priority (#339)
- Relative source followup: Evaluate symlinks (#355)
- Squashed commit of the following: (#259)
- add “profile” flag as an alias for “name” (#357)
- also search configuration from ~/.config/resticprofile on macOS (#370)
- crond: add support for crontab file only (on any OS) (#289)
- don’t replace header value in stringifyHeaders (#327)
- drop-ins: move systemd drop-ins into unified schedule struct (#341)
- drop-ins: transparent timer drop-in support (#340)
- env-file: Implement dotenv and {{env}} support (#323)
- fix remaining unit tests failing in Windows (#360)
- fixed link to config reference / global section (#349)
- flags: added “RESTICPROFILE_{FLAGNAME}” env vars (#335)
- log: allow controlling command output redirection (#343)
- restic: use repository-file if the repo flag contains a password (#336)
- schedule: added unified schedule config struct (#333)
- syslog: local syslog and stdout redirection (#344)
- build with go 1.22 and macOs arm64 (#317)
- update test to pass on Windows 11 (#359)
- upgrade packages (CVE-2024-24786) (#347)
- upgrade packages (CVE-2024-6104)
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
- Add pre-built binary targets to release pipeline (#324)
- Add prometheus label to build info (#319)
- Change priority warning message (#310)
- Fix missing fields in show command (#315)
- Merge pull request #312 from creativeprojects/nightly
- Restrict copy command to a list of snapshots (#291)
- add separate goreleaser config for rebuilding the docker image only (#309)
- add snapshot build to docker hub
- publish docker images and manifest manually (#313)
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 valuestext
orprotobuf
(#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
- Add
prometheus-push-format
to allow selecting text format (#281) - Pass context to own commands and profile runner (#280)
- Remove rclone binary in make clean target (#283)
- Trying new configuration for CodeQL (#306)
- Upgrade packages (#307)
- chore: prep next release & allow deployment to fail on PR
- chore: various fixes (#285)
- doc: add information about windows path in variables
- doc: add various missing information (#278)
- logging: allow to setup default log output in global (#277)
- macOS: create LaunchAgents folder if it doesn’t exist
- profile: support source with “-” (dash) prefix (#276)
- systemd drop-ins support, option to wait for network-online.target (#267)
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
- Allow to interrupt the wait for a lock (#249)
- Detect if running on battery (#235)
- Docs for installation from scoop (#268)
- Fix doc shortcodes (#271)
- Template: Reduce log level for
Getwd()
failures (#251) - systemd: prevent paging in systemd schedules (#270)
- upgrade packages - CVE-2023-3978 - CVE-2023-39325 - CVE-2023-44487
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
andsource-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
- Added {{ “data” | base64 }} & {{ “data” | hex }} (#213)
- Allow to set a base-dir inside the profile (#183) (#192)
- Fix 194: Allow to set “keep-tag”, βtagβ & βgroup-byβ as empty string (#220)
- Fix 218: Args filter must not remove paths (#222)
- Fix 223, 230: Escape args and absolute restic path for pwsh (#224)
- Fix 242: iexclude-file not converted to abs path (#243)
- Fix links for versioned JSON schema files (#244)
- Fix schedule tests (#236)
- Fix: Do not add
--tag
fortag: true
(#221) - Restic: Add restic v16 release (#238)
- Restic: Fixed unit tests for restic v16 (#239)
- Retention: Align host filter with “backup” (#227)
- Schedule: Capture
os.Environ
on schedule creation (#212) - Support
lock-wait
with--lock-retry
in restic 0.16 (#240) - Support build when GOPATH is unset / fix mockery build warning (#234)
- Variables: Allow to escape “$” with “$$” (#216)
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
- New option to specify Prometheus Pushgateway job name (#193)
- Templates: Add
map
/splitR
/contains
/matches
(#197) - Upgrade task scheduler library (#206)
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
- Fix #187: homedir/env-vars in repo and other flags (#188)
- Fix #189: completion of own commands (#190)
- Updated clog to 0.13 (#191)
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
- Add variables
.OS
and.Arch
to all templates (#181) - Allow config encoding in UTF16 and ISO88591
- Enhanced: Catch any –help & –dry-run (http only) (#178)
- Feature: JSON schema (#103) & generated reference
- Fix #164: Failure on uppercase mixin names
- Implement tempDir and log without locking (#168) (#174)
- Make URL and header confidential in HTTP-hook (#175)
- Restic: Add restic v15 release (#180)
- add build tag to disable self-update (#184)
- add suppport for user_logged_on (#160)
- build with go 1.20
- upgrade packages CVE-2022-41721
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
andtag
. - Docker image now contains ssh (to allow
sftp
repository), curl, tzdata and ca-certificates
Changelog
- Merge pull request #154 from jkellerer/ft-151
- New docker image (#161)
- Run-hooks for all non-conflicting commands (#151)
- add QEMU for github agent to build an arm64 image
- dry-run should not send web hooks #157
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 hasrun-before
,run-after
,run-after-fail
andrun-finally
targets. Also more targets are now available forbackup
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
- Add –help to own commands (e.g. generate –help) (#139)
- Add last backup time to prometheus metrics (#132)
- Config: Add run before/after/fail to more restic commands than backup (#138)
- Continue profile in group on error (#149)
- Fixes zsh completion script (use of outdated CLI) (#150)
- Prevent system from idle sleeping (#140)
- add devcontainer config
- chore: upgrade packages
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
- Add http hooks (#114)
- Add support for syslog (#127)
- Allow to choose
shell
in global config (#112) - ConfigV2: Mixins (#115)
- ConfigV2: Replace list params - fix #108 (#113)
- Initialise copy repository using –copy-chunker-params (#117)
- Mixins: List merging & inheritance update (#121)
- add binary dir in path and .BinaryDir template var (#134)
- add goreleaser config to also build arm64 images
- add rclone to docker image #131
- upgrade packages (CVE-2022-28948)
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 byzsh
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
- Add run flag to to be able to have profile and job name as one argument (#89)
- Added “generate” command to create resources (#110)
- Added missing cmds that filter by host, tag & path
- Feature: Take command output as stdin for restic (#98)
- Fix and unit tests for #91
- Fix config includes when any pattern has no match (#95)
- Implemented stream-error callbacks (#99)
- Merge pull request #101 from jkellerer/fix-common-args
- Merge pull request #94 from jkellerer/ft-add-missing-commands
- Only pass common CLI args to command hooks [#100]
- Shell completion (#90)
- display a neat stack trace on panic
- fix for profiles command not showing inherited commands fixes second part of #97
- remove “includes” section from profiles in “profiles” command
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
- Fix args are multiplied when commands are retried (#84)
- Fix for #88 with unit tests
- don’t inherit profile description
- prepare for future versions of the configuration
- show schedules separately
- simple implementation of a config file v2
- update packages
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
- Add support for copy command (#73)
- Change codecov uploader to use GitHub Action v2 (#79)
- Optional: Allow disabling path in retention with ‘false’ (#67)
- Scheduler refactoring (#76)
- Support “run-finally” in backup-section & profile (#70)
- Supporting config
includes
(e.g.profiles.d
) (#65) - Systemd template (#75)
- add tests on crontab
- crontab RemoveJob returns error if the entry was not found
- upgrade dependencies
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
- Add support for prometheus export and push (#57)
- Added “{{.TmpDir}}” to TemplateData (#62)
- Feature: Hide confidential values in output (#58)
- Resolve glob expressions in backup sources (#63)
- Shell escape (#60)
- Update non-confidential values to support shell.Args (#68)
- add Hostname pre-defined variable to template resolver (#55)
- add description field in profile section
- build with go 1.17
- don’t send status summary in dry-run
- show description in output of profiles command
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
- Added resticprofile flags –no-lock & –lock-wait (#33)
- Summary from plain output when not run in terminal (#48)
- Updated contrib script systemd/send-error.sh (#49)
- add macOS arm64 target to install.sh script
- add token as an environment variable
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
- add Homebrew Tap (#45)
- add github token in config
- fix test too slow on build agent
- fix windows bogus prefix (#47)
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
- Increase test coverage (#40)
- fix #41: a message was sent to stderr when parameter initialize=true and repo exists
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 targetsrun-after-fail
.
Changelog
- add RESTIC_STDERR env variable to run-after-fail
- quick implementation of ignore warning
- quick mock to do some testing with a fake restic
- returns stderr output in the status file
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
instatus
,schedule
,unschedule
commands - add backup statistics to the status file (via a new
extended-status
flag)
Changelog
- Add backup statistics in status file (#36)
- Added fail env variable ERROR_COMMANDLINE (#32)
- Added support for –all to status & (un)schedule (#31)
- Enhanced “unschedule” to remove all possible jobs (#28)
- add profile name when running status –all
- fix an issue where status –all was stopping at the first profile with no schedule
- update goreleaser config to v0.154
- upgrade packages
- upgrade self-update library
- use go 1.16
Docker images
docker pull creativeprojects/resticprofile:latest
docker pull creativeprojects/resticprofile:0.12.0
v0.11.0 (2021-01-20)
Highlights:
- detect systemd using
systemctl
: https://github.com/creativeprojects/resticprofile/issues/25 - add experimental support for scheduling tasks with crond
- add support for background tasks on Mac OS via a new
schedule-priority
parameter - add support for scheduling
forget
andprune
commands
Deprecation
Scheduling in the retention
section is now deprecated, please use the forget
section instead (https://github.com/creativeprojects/resticprofile/issues/23)
Changelog
- Add background types and low priorityIO to launchd plist (#19)
- Add support for scheduling forget (#26)
- Added prune as supported, schedulable command (#24)
- Move CI build from Travis CI to GitHub Actions
- Refactoring schedule package (#30)
- Schedule priority (#29)
- add crond support to unix targets (except macOS)
- add deprecation notice for schedule on retention
- add docker build to goreleaser
- add pre-release parameter to self-update
- add schedule-priority parameter
- add working directory to crontab line
- allow verbose flag after the command
- display systemd timer status in a nicer way also display log >= “warning” instead of “err”
- move other-flags before the sub-sections
- refactor show command to remove empty lines
- search for systemctl instead of systemd
- upgrade clog package
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
- change systemd unit to “notify”
- update packages verify self-update binary using checksums.txt file
- update restic to 0.11.0 in docker image
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
- Escape
exclude
globs passed to/sh
- add proper character escaping: - count the number of \ in front - do not escape it again if it was already escaped
- change self-updater library to work with ARM cpus
- detect arm version from runtime internal register
- new version of the updater
- put armv7 target back
- squash merge of branch config-single-template: add templating and variable expansion
- upgrade clog package
- upgrade selfupdate package
v0.9.2 (2020-11-02)
A few minor features and bug fixes:
- add version command
- add force-inactive-lock flag in profiles
Changelog
- Add “option” in example configurations in README and azure.conf fixes https://github.com/creativeprojects/resticprofile/issues/13
- Add version command
- add tests on set and get PID from lock file
- remove openbsd from goreleaser library github.com/shirou/gopsutil cannot be compiled for openbsd
- squash merge of branch pid: should fix https://github.com/creativeprojects/resticprofile/issues/14
- use go 1.15 for ci builds
- write down child PIDs in lock file
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
(alsostatus
to check a scheduled task)
Changelog
- add SUDO_USER to systemd environment
- add dry-run flag
- add file logger
- add journalctl to status output
- add schedule documentation to README
- add schedule parameter in config
- add windows task scheduler
- create plist file for darwin
- create system job on darwin
- full implementation of systemd user unit
- generate random keys
- generate schedule for darwin
- implement schedule-log
- move logger into external package
- only ask for the user password once
- redirect terminal when elevated mode
- send message from elevated process to parent process via some simple http calls
- send terminal output remotely
- sudo trick in the example configuration
- system daemon with launchd
- systemd user/system
v0.8.3 (2020-07-13)
Bug fixing release:
- restic flags were not generated for commands
forget
andmount
https://github.com/creativeprojects/resticprofile/issues/9
Changelog
- add restic flags for forget and mount commands
- add test to verify forget flags are loaded for all configuration types
- version 0.8.3
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
- add table of contents
- build 0.8.2
- document new features in README
- remove armv7 packages from goreleaser
- remove default decode hooks (which can do funny things with tags)
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
- add –format flag to specify the config format
- add command ‘show’ to display profile properties
- add show command to help
- allow spaces in directories and files
- change expected structure in unit tests
- display correct XDG directories in error message
- update dependencies
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
- Initial support for HCL configuration file
- Refactoring y/n question
- add OS & ARCH to panic data
- add missing build info to docker image
- add note with self-updating on linux/arm
- add safeguard to prevent running restic when memory is running low: “min-memory” in “global”
- add section on where to locate configuration file
- bump version
- example of configuration in HCL
- refactor configuration as a dependency as opposed to a global
- search for configuration file without an extension resticprofile will load the first file with a valid extension (conf, yaml, toml, json, hcl)
- update xdg paths in documentation
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 inrun-before
for example)
Changelog
- add raspberry pi to supported platforms
- add run-after-fail parameter to run shell commands after a restic command failed. the auto initialization of a repository now happens after the “run-before” scripts (in version 0.7.0 it was happening before)
- detect panic and display a nice message asking the user to post details on github
- fix self-update not working on windows
- run self-update command with no configuration file
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
- Bump up version
- Fix update confirmation message
- Refactoring resticprofile commands
- add goreleaser target to build for raspberry pi
- initial support for systemd
- run shell commands before and after a profile. In previous versions, you could only run commands before and after a backup
- stop creating empty configuration file at XDG config location
v0.6.1 (2020-04-22)
Changelog
- Activate self-update flag
- Add .tar.gz binary for mac os
- Build tar.gz for windows so we can download it from git bash
- Clean up lock file after pressing CTRL-C
- Fix nil pointer panic when retention not defined
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 likenice
on unixes and now available on all platformslock
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)