Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
S

snapper

> 编程语言
Open source

Manage filesystem snapshots and allow undo of system modifications

1.2K stars0 likes1 views
WebsiteGitHub

About

Manage filesystem snapshots and allow undo of system modifications

Snapper

Snapper is a tool for Linux file system snapshot management. Apart from the obvious creation and deletion of snapshots it can compare snapshots and revert differences between them. In simple terms, this allows root and non-root users to view older versions of files and revert changes.

For more information visit snapper.io.

Development

For compiling and developing Snapper you need to setup the development environment first.

Development Environment

In the SUSE Linux Enterprise and openSUSE distributions you can install the needed packages by using these commands:

bash
# install the basic development environment (SUSE Linux Enterprise, the SDK extension is needed)
sudo zypper install -t pattern SDK-C-C++
# install the basic development environment (openSUSE)
sudo zypper install -t pattern devel_C_C++
# install the extra packages for snapper development (both SLE and openSUSE)
sudo zypper install git libmount-devel dbus-1-devel libacl-devel libboost_thread-devel libjson-c-devel \
  docbook-xsl-stylesheets libxml2-devel libbtrfs-devel libopenssl-devel

In the RHEL-based distributions, you can install the needed packages by using these commands:

bash
# Install development tools
sudo dnf groupinstall "Development Tools"
# Dependencies for snapper development
sudo dnf install git libmount-devel dbus-devel libacl-devel \
    docbook-xsl libxml2-devel btrfs-progs-devel \
    cmake make automake gcc-c++ systemd-devel boost-devel \
    ncurses-devel json-c-devel pam-devel openssl-devel

Building Snapper

You can download the sources and build Snapper by using these commands:

bash
git clone [email protected]:/snapper.git
cd snapper
make -f Makefile.repo
# parallelize the build using more processors, use plain `make` if it does not work
make -j`nproc`

Installing and Running Snapper

To run the freshly built Snapper use this:

bash
sudo make install
# kill the currently running DBus process if present
sudo killall snapperd
# try your changes (the DBus service is started automatically)
(sudo) snapper ...

Post install steps

bash
sudo mkdir -p /etc/sysconfig
sudo touch /etc/sysconfig/snapper
sudo chmod 644 /etc/sysconfig/snapper
sudo restorecon -v /etc/sysconfig/snapper # if SELinux

Running Tests

Snapper includes some internal unit tests to avoid some bugs and regressions. The tests are located in the testsuite subdirectory and you can start them using the make check command.

There are also some additional tests in the testsuite-real subdirectory, but be careful. These tests really execute snapper commands and they can destroy your data! Run these tests only in a testing environment!

Releasing

  • Before releasing the Snapper package ensure that the changes made to the package are mentioned in the package/snapper.changes file, update also the dists/debian/changelog file.

  • Make sure the units tests still passes (see above).

  • When the version is increased then the Git repo has to be tagged, use the vX.Y.Z format for the tag. Also the filesystems:snapper OBS project has to be updated.

  • To create the package use command make package. Then use the common work-flow to submit the package to the build service. For openSUSE:Factory send at first the package to the devel project filesystems:snapper in OBS.

    Please note that this OBS project builds for more distributions so more metadata files have to be updated. See the OBS documentation for more info (cross distribution howto, Debian builds).

  • The generated xz tarball has to be also placed at .

  • When the documentation changes e.g. the man page or an important functionality then also the snapper.io web pages have to be updated. They are hosted as GitHub pages in the gh-pages branch in the Snapper Git repository.

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C++

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言