Snapper is as the title says, a tool that allows you to
manage your BTRFS snapshots and rollback undesired system changes. At the moment, the tool is only available in
openSUSE. Despite a rather underwhelming debut by openSUSE 12.1 and
the early errors I experienced with Snapper, I decided to give the distro
and the tool a second shot. This is why you are reading this tutorial.

After having mastered the basics of BTRFS, namely how to create subvolumes
and snapshots and how to switch the default view between them as a way of rolling back and forth between data
snapshots, we can now proceed and test the exact same functionality using a guided graphical wizard. Since we
have the understanding, we can now comfortably choose which mode of work suits us best, command line or the
noobend. Just joking. Or not. Follow me.

Get Snapper

Snapper is available in the official openSUSE repositories. Install, then head into YaST and invoke. That
should be the sum of your bother hopefully. Now, you can use the tool.

Using Snapper

The tool is fairly straightforward. The first time you launch it, it will tell you about existing snapshots,
their type as well as when they were taken. You can also read the description to learn more. As you can see, we
have periodic snapshots, labeled timeline, we have another snapshot created when we edited the proxy settings
in YaST, as well as two pre and post snapshots during updates. Similar to Windows system restore, it seems.

Now, click any one to show changes. In the left pane, you can see the tree of all snapshotted directories, or
rather subvolumes. Select any to view. In the right pane, you will be able to compare the snapshots to system
or among themselves, as well as choose to restore if you want or need. You won't be able to see the difference
for binary files, though.

Some questions

Basically, that's all. However, there's the question of how these snapshots can be used in a real production
setup. How much extra space do you need for snapshots? Can snapshots be incremental, similar to svn and git
version control? What do you do if your system is not bootable for some reason? How do you revert changes then?

Are snapshots deleted when you revert? Apart from the fairly technical view of things, how can one know what is
a usable working set and what is a botched system configuration? Can human-readable descriptions and notes be
added? Can these snapshots be password protected? Can frequency be changed or tweaked? Can specific volumes be
added or removed? There's a lot more worked left to be done.

It will definitely be interesting to see how this tool evolves. At the moment, it seems like an interesting
experimental feature for advanced users and system administrators.Finally, you may want to read the openSUSE
lizards article on Snapper.

Conclusion

This short tutorial does not have any grand conclusion. Snapper seems like a useful tool, although it needs
some functionality rework to make truly effective in the hands of users and administrators alike. I would like
to see separation between user and system configurations. Moreover, an ability to create snapshots on demand
would be great, too. Well, it sure bears watching. And now you know how to handle snapshots in BTRFS both from
the command line and in GUI. Winning.

P.S. The thumbnail picture on the index page taken and adapted from Wikimedia and licensed under CC-BY 2.0.