Configuration profiles manager and scheduler for restic backup
  • Go 96.9%
  • Shell 1.3%
  • Makefile 1%
  • Roff 0.8%
Find a file
2026-05-05 21:16:04 +01:00
.github fix: select latest release tag for Docker rebuild workflow (#635) 2026-05-05 21:16:04 +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 fix: crontab dayofmonth with dayofweek (#630) 2026-04-17 17:08:25 +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 fix: BSD tests (#631) 2026-04-17 21:44:31 +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 fix: BSD tests (#631) 2026-04-17 21:44:31 +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 fix: BSD tests (#631) 2026-04-17 21:44:31 +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 feat: add dotenv action to load environment variables (#632) 2026-04-19 18:15:18 +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 fix: BSD tests (#631) 2026-04-17 21:44:31 +01:00
wrapper_unix_test.go Refactor tests and add platform-specific test cases (#623) 2026-04-08 12:41:43 +01:00

Test on Linux Test on macOS Test on Windows

Test on OpenBSD Test on FreeBSD Test on NetBSD

Test SSH client Build Documentation

codecov

resticprofile

Configuration profiles manager for restic backup

resticprofile is the missing link between a configuration file and restic backup command line.

Features

Here is a non-exhaustive list of what resticprofile offers:

  • Profiles
    • No need to remember command parameters and environment variables
    • Create multiple profiles in one configuration file
    • Profiles can inherit options from other profiles
    • Create groups of profiles to run sequentially
    • Easily schedule backups, retentions, and checks (supports systemd, crond, launchd, and Windows Task Scheduler)
    • Use template syntax in your configuration file
    • [new for v0.29.0] Schedule a group of profiles (configuration v2 only)
  • Automation
    • Run the forget command before or after a backup (in a section called retention)
    • Check a repository before or after a backup
    • Run shell commands before or after running a profile, useful for mounting and unmounting backup disks
    • Run a shell command if an error occurs
    • Send a backup stream via stdin
    • Start restic at different priorities (Priority Class in Windows, nice in Unix, and/or ionice in Linux)
    • Automatically clear stale locks
  • Monitoring
    • Generate a simple status file for monitoring software to ensure backups are running smoothly
    • Export a prometheus file after a backup or send the report to a push gateway
    • Run shell commands in the background when non-fatal errors are detected
    • Send messages to HTTP hooks before, after a successful or failed job (backup, forget, check, prune, copy)
    • Send resticprofile logs to a syslog server
  • Checks
    • Check for enough memory before starting a backup
    • Avoid scheduling a job when the system is on battery
  • Misc
    • Generate cryptographically secure random keys for a restic key file
    • Automatically initialize the secondary repository using the copy-chunker-params flag
    • Prevent the system from idle sleeping
    • View help for both restic and resticprofile via the help command or -h flag

Configuration files

The configuration file accepts various formats:

  • TOML : configuration file with extension .toml or .conf
  • JSON : configuration file with extension .json
  • YAML : configuration file with extension .yaml
  • HCL: configuration file with extension .hcl

Getting started

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