table of contents
gromox-snapshot(8) | Gromox admin reference | gromox-snapshot(8) |
Name¶
gromox-snapshot — Helper to create snapshots of mailboxes
Synopsis¶
/usr/libexec/gromox/gromox-snapshot
Description¶
gromox-snapshot calls btrfs(8) or cp(1)/--reflink to create snapshots of the current state of mailboxes as needed. gromox-snapshot is meant to be periodically invoked by a systemd timer (or, failing that, a classic cron job). The default interval of gromox-snapshot.timer is hourly.
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.
Options¶
The program has no command-line options.
Configuration file¶
/etc/gromox/snapshot.cfg will be read on startup. It is a trivial key=value file, with one variable per line.
- retention_days=n
- Make daily snapshots and keep them for n days. Use 0 to
deactivate daily snapshotting.
Default: 7 - retention_hours=n
- Make hourly snapshots and keep them for n hours. Use 0 to
deactivate hourly snapshotting.
Default: 0 - retention_months=n
- Make monthly snapshots and keep them for n months (more precisely,
n*31 days). Use 0 to deactivate monthly snapshotting.
Default: 0 - retention_weeks=n
- Make weekly snapshots and keep them for n weeks. Use 0 to
deactivate weekly snapshotting.
Default: 4 - subvolume_root
- When btrfs is used, this directive specifies the root directory of the
nearest btrfs subvolume. (As of Linux 6.2.1, it is not possible to
snapshot arbitrary directories; it has to be the root of a subvolume.
Confer with `btrfs sub list` to 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 "category" (days, weeks, etc.) is independently evaluated and snapshots are always made from the 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.
Errors¶
- Invalid cross-device link: snapshot_archive was not on the same device as subvolume_root.
- Operation not supported: the filesystem employed on snapshot_archive does not support reflinks
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.
See also¶
Gromox |