Configuration

Scheduling

How to configure the backup schedule using systemd timers and OnCalendar= values in fsbackup.conf.

Scheduling is handled by systemd timers. Each class/type combination has a .timer and .service unit installed under /etc/systemd/system/.

How it works

Timer schedules are stored as OnCalendar= drop-in files under /etc/systemd/system/. The CLASS<N>_<TYPE>_SCHEDULE variables in fsbackup.conf control these schedules.

After editing schedule variables, apply the changes:

sudo /opt/fsbackup/bin/fs-schedule-apply.sh

This reads fsbackup.conf and writes OnCalendar= drop-ins for each enabled timer, then reloads systemd.

Schedule variables

VariableTimer
CLASS1_DAILY_SCHEDULEfsbackup-runner-daily@class1.timer
CLASS1_WEEKLY_SCHEDULEfsbackup-runner-weekly@class1.timer
CLASS1_MONTHLY_SCHEDULEfsbackup-runner-monthly@class1.timer
CLASS2_DAILY_SCHEDULEfsbackup-runner-daily@class2.timer
CLASS2_WEEKLY_SCHEDULEfsbackup-runner-weekly@class2.timer
CLASS2_MONTHLY_SCHEDULEfsbackup-runner-monthly@class2.timer
CLASS3_MONTHLY_SCHEDULEfsbackup-runner-monthly@class3.timer

Omit a variable (or leave it empty) to disable that timer. class3 supports monthly snapshots only — there are no daily or weekly timer units for class3.

OnCalendar= format

Values use the systemd time format:

CLASS1_DAILY_SCHEDULE="*-*-* 01:45"        # every day at 01:45
CLASS1_WEEKLY_SCHEDULE="Sat *-*-* 02:00"   # every Saturday at 02:00
CLASS1_MONTHLY_SCHEDULE="*-*-01 03:00"     # 1st of every month at 03:00

Default schedule

CLASS1_DAILY_SCHEDULE="*-*-* 01:45"
CLASS1_WEEKLY_SCHEDULE="Sat *-*-* 02:00"
CLASS1_MONTHLY_SCHEDULE="*-*-01 03:00"

CLASS2_DAILY_SCHEDULE="*-*-* 02:15"
CLASS2_WEEKLY_SCHEDULE="Sat *-*-* 02:30"

CLASS3_MONTHLY_SCHEDULE="*-*-01 04:00"

The retention timer (fsbackup-retention.timer) runs at 06:00 daily — after the runner timers — and is not configurable via fsbackup.conf.

Checking timer status

systemctl list-timers | grep fsbackup

Enabling and disabling timers

Timers are enabled/disabled by fs-schedule-apply.sh based on which variables are set. To manually disable a timer:

sudo systemctl disable --now fsbackup-runner-monthly@class2.timer

To re-enable, set the schedule variable in fsbackup.conf and run fs-schedule-apply.sh.