Snapm
Snapshot manager (snapm) manages named snapshot sets on Linux systems. Each snapshot set captures coordinated snapshots across multiple volumes, representing a consistent point-in-time system state that can be referenced and managed as a single unit.
Features
- Coordinated snapshot sets: Create coordinated snapshots across multiple volumes
- Bootable snapshots: Generate boot entries for snapshot boot and failsafe revert
- Multiple backends: Support for LVM2 (Copy-on-Write and Thin) and Stratis
- Flexible scheduling: Integration with systemd timers for automated snapshot creation with retention policies
- Size policies: Flexible snapshot sizing with multiple strategies
- Difference engine: Compare snapshot sets to identify added, removed, moved, and modified files with multiple output formats
- Plugin architecture: Extensible design for additional storage backends
Screenshots
Difference Engine Tree Output
Compare a snapshot set to the running system with a hierarchical tree view:
Difference Report
Generate tabular reports of changes between snapshot sets:
Quick Start
Installation
From RPM (Fedora/CentOS/RHEL)
Install from distribution repositories (when available):
dnf install snapm boom-boot
Manual Installation
- Create and activate a virtual environment:
python3 -m venv --system-site-packages .venv && source .venv/bin/activate
- If
boom-bootis not installed from your distribution's packages, clone and install it withpip:
git clone https://github.com/snapshotmanager/boom-boot.git
cd boom-boot
python3 -m pip install .
- Repeat the process with the
snapmrepository:
git clone https://github.com/snapshotmanager/snapm.git
cd snapm
python3 -m pip install .
Basic Usage
Create a bootable snapshot set
Create a snapshot set named "before-upgrade" of root and home, with snapshot boot and revert boot entries:
snapm snapset create --bootable --revert before-upgrade / /home
List snapshot sets
snapm snapset list
Show detailed information:
snapm snapset show before-upgrade
Boot into a snapshot
- Reboot and select the snapshot boot entry from the GRUB menu
- Entry will be named: "Snapshot before-upgrade YYYY-MM-DD HH:MM:SS (version)"
- Optionally run
grub2-reboot <title>to pre-select snapshot boot entry, e.g.:
grub2-reboot "Snapshot before-upgrade YYYY-MM-DD HH:MM:SS (version)"
- Use
grub-rebootinstead ofgrub2-rebooton Debian and Ubuntu systems.
Revert to snapshot state
snapm snapset revert before-upgrade
Then reboot into the Revert boot entry.
Note: Reverting destroys the snapshot set (snapshots are merged back into the origin volumes).
Clean up
Delete snapshot set when no longer needed:
snapm snapset delete before-upgrade
Common Workflows
System Updates
Before major system updates:
snapm snapset create --bootable --revert pre-update / /var
If update goes wrong, revert:
snapm snapset revert pre-update
When satisfied with update, clean up:
snapm snapset delete pre-update
Development Snapshots
Quick development checkpoint:
snapm snapset create dev-checkpoint /home /var
Continue working...
If needed, revert specific volumes by splitting them into a dedicated snapshot set first:
snapm snapset split dev-checkpoint dev-checkpoint-home /home
Example output:
SnapsetName: dev-checkpoint-home
Sources: /home
NrSnapshots: 1
Time: 2025-08-30 12:44:00
UUID: ee82269f-8c78-5814-b47a-b9be31bcebb5
Status: Inactive
Autoactivate: no
Bootable: no
snapm snapset revert dev-checkpoint-home
Alternatively revert the entire snapshot set:
snapm snapset revert dev-checkpoint
Understanding Changes
Compare a snapshot set to the current system to see what changed:
snapm snapset diff pre-update .
View changes as a hierarchical tree (default):
snapm snapset diff --output-format tree pre-update .
Generate a unified diff of modified file contents:
snapm snapset diff --output-format diff pre-update .
Get a summary of change counts:
snapm snapset diff --output-format summary pre-update .
Export changed paths for use with other tools:
snapm snapset diff --output-format paths pre-update . | xargs tar cvf changes.tar
Generate a tabular report of differences:
snapm snapset diffreport -o path,type,size_delta pre-update .
Documentation
- User Guide - Comprehensive usage documentation
- API Documentation - Auto-generated API docs
- Manual Pages - System manual pages
Requirements
- Linux system with LVM2 or Stratis volumes
- boom-boot
- Root privileges for performing storage operations
- Python 3.9+
Supported Storage Backends
| Backend | Type | Snapshots | Thin Provisioning | Status |
|---|---|---|---|---|
| LVM2 | Copy-on-Write | ✓ | ✗ | Stable |
| LVM2 Thin | Thin Pools | ✓ | ✓ | Stable |
| Stratis | Thin Pools | ✓ | ✓ | Stable |
Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Support
License
Licensed under the Apache License, Version 2.0. See LICENSE for details.
The Snapshot Manager logo incorporates an image of Tux, the Linux mascot originally conceived and designed by Larry Ewing.
Related Projects
- boom - Boot manager for Linux snapshot boot
- stratis-cli - Command-line tool for Stratis storage
- lvm2 - The LVM2 logical volume manager
Metadata
Release files for snapm 0.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| snapm-0.7.0.tar.gz | 210.9 kB | Without provenance | Details for snapm-0.7.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| snapm-0.7.0-py3-none-any.whl | Python 3 | none | any | Details for snapm-0.7.0-py3-none-any.whl |
Total release size: 397.3 kB
Release files / snapm-0.7.0.tar.gz
| Download URL | snapm-0.7.0.tar.gz |
|---|---|
| Size | 210.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8005994bd29366dde96482b037580b38a60db022140c60b5168b54a6c6ecbb00
|
|
BLAKE2b-256 checksum How to use checksums |
5e6b26cab222469923b3aba054032a5c7529473c5d891a1388b82d3192a04dfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.9
|
Release files / snapm-0.7.0-py3-none-any.whl
| Download URL | snapm-0.7.0-py3-none-any.whl |
|---|---|
| Size | 186.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0dead49f0a4ea132dbd002c52a61a82b9ae5e004fc58c95b300bdf8c1634f1e6
|
|
BLAKE2b-256 checksum How to use checksums |
b8ff5f02314b37da19285ddf4524ccc5a9dd3acf87a16e15071427dba2906794
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.9
|
Security for snapm 0.7.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.