SNAPM(5)
π SNAPM(5) π
okay bestie, welcome to the FILE FORMATS MANUAL section of the snapm cinematic universe β¨ this is the page about schedule.d, and it's genuinely so good, sit down, hydrate, let's go π
πΈ NAME πΈ
schedule.d β snapm schedule configuration files π
π SYNOPSIS π
/etc/snapm/schedule.d/*.json
that's it. that's the whole synopsis. iconic behaviour honestly π
π¦ DESCRIPTION π¦
so, the files chillin' in /etc/snapm/schedule.d get loaded when snapm does its initialisation thing π«Ά and they describe user-defined snapshot set creation schedules on the local machine. your own schedules. your own rules. main character energy fr fr.
they're structured in JSON format β and no cap, they are not generally intended to be manually edited π like, you can, but the intended path is that the snapm schedule create command makes these files for you, based on whatever command line arguments you handed it. so the command is doing the journaling, you're just living your life β¨
π STRUCTURE π
a valid schedule file is literally just one single JSON object describing the schedule. that's the whole vibe. here it is in all its glory:
{
"name": "hourly",
"sources": [
"/",
"/var"
],
"default_size_policy": "25%SIZE",
"autoindex": true,
"calendarspec": "hourly",
"boot": true,
"revert": true,
"gc_policy": {
"policy_name": "hourly",
"policy_type": "COUNT",
"keep_count": 2
}
}
look at her. flawless. no notes π
β¨ KEYS β¨
these are the keys defined at the top level, bestie. memorize them, they're the whole plot π
nameβ a JSON string: the name of this schedule. it gets used for display AND as the basename for snapshot sets. it's giving "identity crisis but make it functional" πsourcesβ a JSON array (a list, bestie): a list of mount point or block device paths to include in the snapshot sets that this schedule creates. optionally you can slap a size policy suffix on there too πdefault_size_policyβ a JSON string: a default size policy applied to all the sources insourcesthat didn't get their own explicit size policy. it's the "everyone gets a party favour unless you brought your own" of the config world πautoindexβ a JSON boolean, telling you whether snapshot sets created by this schedule should use the--autoindexargument. yes or no, true or false, slay or slay π¦calendarspecβ a JSON string holding a systemd calendar event expression, which says when this schedule should trigger snapshot set creation. go readsystemd.time(7)for the deets, iykyk βbootβ a JSON boolean indicating whether snapshot sets created by this schedule should use the--bootableargument, so they come out bootable πrevertβ a JSON boolean indicating whether snapshot sets created by this schedule should use the--revertargument, to create a failsafe revert boot entry. safety first, bestie πgc_policyβ a JSON object describing the garbage collection policy for this schedule. this object always contains the two keyspolicy_nameandpolicy_type, and both of them take a JSON string value:- the first one (
policy_name) is a human readable name for the policy β normally it's the same as the schedule name π - the second one (
policy_type) selects a policy type via one of the valuesALL,COUNT,AGE, orTIMELINEπ
- the first one (
after those two keys come the policy-type specific parameters. every parameter has a policy defined name and a JSON integer number value π’
πΈ Policy types πΈ
π ALL
the ALL policy type takes no parameters. all snapshot sets are retained until you manually delete them. hoarder mode: activated. no shame π
π COUNT
the COUNT policy type accepts a single parameter, keep_count, indicating the maximum number of snapshot sets to retain. keep it cute, keep it capped β¨
π AGE
the AGE policy type accepts four parameters: keep_years, keep_months, keep_weeks, keep_days. snapshots that are more recent than the sum of these values are retained. math but make it fashion π
π TIMELINE
the TIMELINE policy implements a more complex strategy π snapshot sets get classified according to when they were taken, so for example:
- the first snapshot set in any given hour is considered an "hourly snapshot set" β°
- the first snapshot set after midnight on any given day is considered a "daily snapshot set" π
- and so on, you get the pattern, it's giving very organized π¦
the TIMELINE policy type accepts up to six parameters: keep_hourly, keep_daily, keep_weekly, keep_monthly, keep_quarterly, keep_yearly, and each one accepts a count argument. up to count snapshot sets are retained for each classification. six whole knobs to turn. go off π₯
π AUTHORS π
Bryn M. Reeves <bmr@redhat.com> β thank you for your service, legend π«Ά
π SEE ALSO π
snapm(8)systemd.time(7)- Snapm project page: https://github.com/snapshotmanager/snapm
and that's the page, bestie π this was Linux, dated Jun 15 2025, straight from the FILE FORMATS MANUAL, SNAPM(5) β now go forth and schedule your snapshots responsibly, periodt β¨ππ¦
π¦ where this page comes from
- centos-stream 10: snapm 0.7.0-5.el10 Β· Apache-2.0
- centos-stream 9: snapm 0.7.0-5.el9 Β· Apache-2.0
- fedora 43: snapm 0.7.0-4.fc43 Β· Apache-2.0
- fedora 44: snapm 0.7.0-2.fc44 Β· Apache-2.0
- fedora 44: snapm 0.7.0-5.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms