Configuration profiles manager and scheduler for restic backup
Find a file
2026-04-15 16:02:08 +01:00
.github Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
.vscode Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
batt Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
build add logrotate to docker image #440 2025-02-03 19:01:23 +00:00
calendar chore: update GitHub Actions workflows and improve test coverage (#612) 2026-03-27 21:24:36 +00:00
config feat: add embedded examples for configuration files (#626) 2026-04-11 20:52:01 +01:00
constants refactor: replace magic numbers with named exit codes (#615) 2026-03-31 22:11:20 +01:00
contrib feat(bash-completion): prevent space after profile completion . (#405) 2026-04-05 13:26:04 +01:00
crond Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
darwin code modernisation (#611) 2026-03-27 18:17:19 +00:00
dial fix regression with temporary log file (#386) 2024-07-08 22:01:12 +01:00
docs fix changelog after release 2026-04-04 13:25:34 +01:00
examples feat: add embedded examples for configuration files (#626) 2026-04-11 20:52:01 +01:00
filesearch Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
fuse Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
lock update dependencies to use gopsutil v4 (#629) 2026-04-15 16:02:08 +01:00
mask chore: upgrade Go version to 1.25 across workflows and update related configurations (#564) 2025-09-27 17:18:00 +01:00
monitor code modernisation (#611) 2026-03-27 18:17:19 +00:00
platform crond: add support for crontab file only (on any OS) (#289) 2024-03-22 22:32:07 +01:00
preventsleep test: run tests on other BSD virtual machines (#624) 2026-04-08 23:15:47 +01:00
priority Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
remote Client/Server mode: sending configuration profile to a remote server (#377) 2026-03-31 21:45:08 +01:00
restic chore: update GitHub Actions workflows and improve test coverage (#612) 2026-03-27 21:24:36 +00:00
schedule test: run tests on other BSD virtual machines (#624) 2026-04-08 23:15:47 +01:00
schtasks chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
scripts Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
shell Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
ssh feat: enhance SSH command execution with cancellation and wait delay (#617) 2026-04-02 13:45:14 +01:00
systemd test: run tests on other BSD virtual machines (#624) 2026-04-08 23:15:47 +01:00
term Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
testhelpers Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
user fix root home regression bug in 0.30.0 (#497) 2025-05-05 20:49:38 +01:00
util Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
win Escape config file name in schedule parameters (#420) 2024-10-18 20:10:21 +01:00
.envrc Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
.gitignore Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
.gitmodules Add documentation on github.io (#104) 2022-05-20 21:25:07 +01:00
.godownloader.yml Add pre-built binary targets to release pipeline (#324) 2024-02-20 18:16:09 +00:00
.golangci.yml chore: update GitHub Actions workflows and improve test coverage (#612) 2026-03-27 21:24:36 +00:00
.goreleaser-docker-only.yml docs: mention container image also available on GCR 2025-03-30 22:40:42 +01:00
.goreleaser-snapshot.yml docs: mention container image also available on GCR 2025-03-30 22:40:42 +01:00
.goreleaser.yml Upload to Github Container Registry (#479) 2025-03-30 19:48:49 +01:00
.mockery.yml upgrade mockery to v3 (#561) 2025-09-26 14:54:36 +01:00
.nojekyll Add documentation on github.io (#104) 2022-05-20 21:25:07 +01:00
codecov.yml Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
command_error.go Allow to interrupt the wait for a lock (#249) 2023-10-17 20:57:58 +01:00
commands.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_display.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_display_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_generate.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_schedule.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_schedule_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
commands_test.go Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
complete.go Add Fish Shell Completions (#601) 2026-04-02 16:23:52 +01:00
complete_test.go Add Fish Shell Completions (#601) 2026-04-02 16:23:52 +01:00
context.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
context_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
deprecation.go Group schedule (#418) 2024-10-21 18:27:28 +01:00
errors.go Pass context to own commands and profile runner (#280) 2023-11-11 19:31:01 +00:00
flags.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
flags_test.go Linters (#397) 2024-08-18 15:31:58 +01:00
go.mod update dependencies to use gopsutil v4 (#629) 2026-04-15 16:02:08 +01:00
go.sum update dependencies to use gopsutil v4 (#629) 2026-04-15 16:02:08 +01:00
install.sh Add pre-built binary targets to release pipeline (#324) 2024-02-20 18:16:09 +00:00
integration_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
LICENSE GPLv3 license 2019-06-21 10:27:44 +01:00
lock.go chore: update GitHub Actions workflows and improve test coverage (#612) 2026-03-27 21:24:36 +00:00
lock_test.go Linters (#397) 2024-08-18 15:31:58 +01:00
logger.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
logger_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
main.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
main_test.go Build BSD tests outside QEMU VM (#625) 2026-04-10 23:13:32 +01:00
Makefile fix: make TESTS and BUILD variables optional in Makefile 2026-04-13 21:13:44 +01:00
network_volume.png fix environment for darwin 2020-07-28 23:14:31 +01:00
own_command_error.go Pass context to own commands and profile runner (#280) 2023-11-11 19:31:01 +00:00
own_command_error_test.go Upgrade golangci lint to v2 (#562) 2025-09-27 14:47:56 +01:00
own_commands.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
own_commands_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
README.md build without fuse code on unsupported platforms 2026-04-04 12:54:20 +01:00
remote.go Client/Server mode: sending configuration profile to a remote server (#377) 2026-03-31 21:45:08 +01:00
remote_fuse_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
remote_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
run_profile.go stop running other profiles in group after receiving interrupt signal (#539) 2025-07-28 19:15:37 +01:00
run_profile_test.go add base url on json schema (#408) 2024-10-02 21:33:28 +01:00
schedule_jobs.go fix(schedule): omit launchd log paths when schedule-log is configured (#600) 2026-03-26 21:43:12 +00:00
schedule_jobs_test.go Schedule user logged in (#470) 2025-03-28 10:53:23 +00:00
serve.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
serve_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
shell_command.go fix overflow integer conversion lint warning from gosec (#399) 2024-08-25 16:41:33 +01:00
sleep.go Allow to interrupt the wait for a lock (#249) 2023-10-17 20:57:58 +01:00
sleep_test.go fix creation of mock binaries during unit tests (#375) 2024-06-28 22:08:33 +01:00
stack.go chore: update GitHub Actions workflows and improve test coverage (#612) 2026-03-27 21:24:36 +00:00
stack_test.go fix empty stack trace in some cases 2022-04-17 23:43:30 +01:00
syslog.go log: allow controlling command output redirection (#343) 2024-03-21 19:05:51 +01:00
syslog_windows.go syslog: local syslog and stdout redirection (#344) 2024-03-19 09:42:54 +01:00
systemd.go don't include systemd dependencies on macos & windows 2025-02-15 18:07:35 +00:00
systemd_others.go don't include systemd dependencies on macos & windows 2025-02-15 18:07:35 +00:00
update.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
update_test.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
wrapper.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
wrapper_streamsource.go chore: refactoring access to the terminal (#620) 2026-04-07 16:38:51 +01:00
wrapper_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00
wrapper_unix_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00

Build codecov

resticprofile

Configuration profiles manager for restic backup

resticprofile is the missing link between a configuration file and restic backup. Creating a configuration file for restic has been discussed before, but seems to be a very low priority right now.

With resticprofile:

  • You no longer need to remember command parameters and environment variables
  • You can create multiple profiles inside one configuration file
  • A profile can inherit all the options from another profile
  • You can run the forget command before or after a backup (in a section called retention)
  • You can check a repository before or after a backup
  • You can create groups of profiles that will run sequentially
  • You can run shell commands before or after running a profile: useful if you need to mount and unmount your backup disk for example
  • You can run a shell command if an error occurred (at any time)
  • You can send a backup stream via stdin
  • You can start restic at a lower or higher priority (Priority Class in Windows, nice in all unixes) and/or ionice (only available on Linux)
  • It can check that you have enough memory before starting a backup. (I've had some backups that literally killed a server with swap disabled)
  • You can generate cryptographically secure random keys to use as a restic key file
  • You can easily schedule backups, retentions and checks (works for systemd, crond, launchd and windows task scheduler)
  • You can generate a simple status file to send to some monitoring software and make sure your backups are running fine
  • You can use a template syntax in your configuration file
  • You can generate scheduled tasks using crond
  • Get backup statistics in your status file
  • Automatically clear up stale locks
  • Export a prometheus file after a backup, or send the report to a push gateway automatically
  • Run shell commands in the background when non fatal errors are detected from restic
  • Send messages to HTTP hooks before, after a successful or failed job (backup, forget, check, prune, copy)
  • Automatically initialize the secondary repository using copy-chunker-params flag
  • Send resticprofile logs to a syslog server
  • Preventing your system from idle sleeping
  • See the help from both restic and resticprofile via the help command or -h flag
  • Don't schedule a job when the system is running on battery
  • [new for v0.29.0] Scheduling a group of profiles (configuration v2 only)

The configuration file accepts various formats:

  • TOML : configuration file with extension .toml and .conf to keep compatibility with versions before 0.6.0
  • JSON : configuration file with extension .json
  • YAML : configuration file with extension .yaml
  • HCL: configuration file with extension .hcl

We recommend you start by reading the getting started section

Using resticprofile

The full documentation has been moved to creativeprojects.github.io

Survey

What are your most important features? Please fill in the survey