gromox-snapshot(8)
okay so bestie, welcome to gromox-snapshot(8) from the Gromox admin reference π this is the helper that makes snapshots of mailboxes, and it's giving quietly essential system admin main character energy β¨
πΈ Name πΈ
gromox-snapshot β Helper to create snapshots of mailboxes. That's the name, that's the job, slay.
β¨ Synopsis β¨
/usr/libexec/gromox/gromox-snapshot
No args, no flags, just vibes and that exact path π«Ά
π¦ Description π¦
gromox-snapshot calls btrfs(8) or cp(1)/--reflink to create snapshots of the current state of mailboxes as needed. It is meant to be periodically invoked by a systemd timer (or, failing that, a classic cron job), and the default interval of gromox-snapshot.timer is hourly. Periodt.
The program generates snapshots "for this day" / "for this week" / etc., rather than snapshots which are at least one day / one week / etc. apart. When the snapshotter is run periodically, this evens out and is not a concern at all. So don't stress, bestie π
π Options π
The program has no command-line options. Literally zero. Not a single flag to collect. Iconic minimalism, ngl.
π Configuration file π
/etc/gromox/snapshot.cfg will be read on startup. It is a trivial key=value file, with one variable per line. Keep it cute and simple π
retention_days=nβ make daily snapshots and keep them for n days. Use0to deactivate daily snapshotting. Default:7.retention_hours=nβ make hourly snapshots and keep them for n hours. Use0to deactivate hourly snapshotting. Default:0.retention_months=nβ make monthly snapshots and keep them for n months (more precisely,n*31days). Use0to deactivate monthly snapshotting. Default:0.retention_weeks=nβ make weekly snapshots and keep them for n weeks. Use0to deactivate weekly snapshotting. Default:4.subvolume_rootβ when btrfs is used, this directive specifies the root directory of the nearest btrfs subvolume. (As of Linux6.2.1, it is not possible to snapshot arbitrary directories; it has to be the root of a subvolume. Confer withbtrfs sub listto see subvolumes.) Otherwise, this must point to the Gromox data directory. Default:/var/lib/gromox.snapshot_archiveβ the directory where snapshots (these are subdirectories) will be placed. This directory needs to be on the same device as the snapshot source (subvolume_root, see above). Default:/var/lib/gromox-snapshots.
Each time a "category" (days, weeks, etc.) is independently evaluated and snapshots are always made from subvolume_root, never from another snapshot. A weekly snapshot generated on the first day of the week is not strictly equal to the daily snapshot generated for the same day, as there is technically a very small time window between individual btrfs commands. Tiny window, real facts, no cap π¦
π Errors π
- Invalid cross-device link β
snapshot_archivewas not on the same device assubvolume_root. The devices gotta match, bestie π - Operation not supported β the filesystem employed on
snapshot_archivedoes not support reflinks. If it doesn't support reflinks, it's not gonna reflink, periodt.
π Known issues π
When a reflink-based snapshot is deleted (which happens via /bin/rm), rm may modify the directory's timestamp. If that rm call is interrupted without completing, the next run of gromox-snapshot will erroneously consider the directory as "too new" and not resume the deletion until it has sufficiently aged again. So yeah, interrupted rm is giving chaos gremlin energy π
π₯ See also π₯
gromox(7) β go read it, bestie π«Ά
π cute sign-off: source/version is Gromox, the manual is gromox-snapshot(8), and the footer doesn't list a date, so no date to report β periodt π
π¦ where this page comes from
- alpine 3.24: grommunio-gromox-doc 3.6-r0 Β· AGPL-3.0-or-later
- opensuse-leap 16.0: gromox 2.45-bp160.1.5 Β· AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later
- opensuse-leap 16.0: gromox 2.45-bp160.1.5 Β· AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later
- opensuse-leap 16.0: gromox 2.45-bp160.1.5 Β· AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later
- opensuse-leap 16.0: gromox 2.45-bp160.1.5 Β· AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later
- π the page's license: CC-BY-SA-4.0 or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms