Snapper turns every system update into a reversible experiment: snapshot before, roll back after — here's the full setup for Arch, Fedora, and openSUSE.

Every rolling-release user knows the feeling: you run the update, reboot, and the screen that comes back is not your desktop. On a fixed-release distro this happens less often; on Arch, CachyOS, or Tumbleweed, it's a rite of passage. The difference between a ruined evening and a shrug is whether you set up one thing before the update ever runs.

That thing is btrfs snapshots, automated by Snapper. A snapshot is a frozen copy of your filesystem that takes milliseconds and costs almost no disk space — btrfs only stores the blocks that change after the snapshot is taken. Snapper captures one automatically before and after every update, keeps a sensible rotation of them, and lets you roll the whole system back to the "before" state when the update goes sideways.

The Setup (Pick Your Distro)

This assumes your root filesystem is btrfs with separate subvolumes for / and /home — standard on openSUSE, and the default in Fedora's Anaconda and Arch's archinstall too.

openSUSE: you're already done. Snapper ships configured, GRUB offers "Start bootloader from a read-only snapshot," and every zypper transaction is bracketed by snapshots. Skip to the rollback section.

Fedora:

sudo dnf install snapper
sudo snapper -c root create-config /

Then enable the maintenance timers so old snapshots rotate out instead of piling up:

sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer

For automatic pre/post snapshots around every dnf transaction, add the snapper dnf plugin — or keep it simple with a five-line shell wrapper around dnf upgrade that runs snapper create --description pre-upgrade first.

Arch / CachyOS:

sudo pacman -S snapper snap-pac
sudo snapper -c root create-config /

snap-pac hooks pacman so every -Syu is wrapped in before/after snapshots automatically. Enable the same cleanup timers as Fedora. If you want snapshots in the GRUB menu, add grub-btrfs and the snapper-rollback helper — one-command rollback from the boot menu instead of reaching for a live USB.

The Two-Minute Rollback

Update broke something? Boot, pick the pre-update snapshot in GRUB (openSUSE and grub-btrfs setups), and boot it read-only to verify. When the snapshot looks good, commit the rollback:

sudo snapper -c root rollback

That makes the snapshot the new default subvolume. Reboot and you're back — binaries, configs, everything — as if the update never happened. Then you can investigate or skip the offending package at your leisure, with a working machine under your hands.

The Honest Caveats

Three things snapshots are not:

  1. Not a backup. The snapshot lives on the same disk. A dead SSD takes your snapshots with it. Keep restic or borg backups off the machine for that job.
  2. Not free forever. Snapshots share blocks, but a big update followed by lots of changed files grows them. Watch btrfs filesystem df / — a full btrfs volume is a special kind of pain, so keep the cleanup timers on.
  3. Not a substitute for reading the news. Distros still announce manual interventions on their front pages (Arch's September mkinitcpio TPM2 one, for example). Snapshot first, read anyway.

That's the whole pitch: fifteen minutes of setup buys you an undo button for every update you'll ever run. On a rolling distro, that isn't optional equipment.


Sources: Snapper documentation — http://snapper.io ; btrfs wiki — https://btrfs.readthedocs.io ; openSUSE Snapper documentation — https://documentation.suse.com