Scheduling
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
| Variable | Timer |
|---|---|
CLASS1_DAILY_SCHEDULE | fsbackup-runner-daily@class1.timer |
CLASS1_WEEKLY_SCHEDULE | fsbackup-runner-weekly@class1.timer |
CLASS1_MONTHLY_SCHEDULE | fsbackup-runner-monthly@class1.timer |
CLASS2_DAILY_SCHEDULE | fsbackup-runner-daily@class2.timer |
CLASS2_WEEKLY_SCHEDULE | fsbackup-runner-weekly@class2.timer |
CLASS2_MONTHLY_SCHEDULE | fsbackup-runner-monthly@class2.timer |
CLASS3_MONTHLY_SCHEDULE | fsbackup-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.