Skip to content

Scheduler

Config section:

scheduler.*

The scheduler creates backups automatically using cron expressions.

Enable scheduler

  • scheduler.enabled

    • Default: false
  • scheduler.checkIntervalSeconds

    • Default: 1
    • Minimum enforced: 1
    • How often the scheduler checks for due jobs
  • scheduler.timezone

    • Default: empty (system timezone)
    • Examples: Europe/Warsaw, UTC
    • Invalid values fall back to system timezone

Jobs list

scheduler.jobs is a list of job objects.

Required fields

  • id
  • cron
  • target

Optional fields

  • full (default: false)
  • note (default: empty)
  • skipIfNoChanges (default: true)

Job fields

id

  • Must be unique
  • Reserved value not allowed: shutdown

cron

5-field cron format:

minute hour dayOfMonth month dayOfWeek

Examples: - /6 * * * every 6 hours - 3 * * * daily at 03:00 - /15 * * * * every 15 minutes - 4 * * 1 every Monday at 04:00

target

Same syntax as /cg backup: - plugins - plugin:Essentials,LuckPerms - path:plugins/SomePlugin/config.yml - older:Mina

full

  • rue = FULL mode
  • alse = configs-only

note

  • Stored in meta.json for the backup

skipIfNoChanges

  • Computes a fingerprint of planned files
  • If fingerprint matches previous run, the job is skipped

Execution model

  • Scheduler checks due jobs periodically
  • Due jobs are enqueued into a FIFO queue
  • A single async worker executes jobs sequentially
  • No parallel scheduled backups
  • No catch-up loops after downtime

Locking

Scheduler uses the same global lock as manual backup and restore.
If the lock is busy, the job is skipped for that tick.