System Snapshots and Rollback on Linux: Timeshift and Snapper

Short answer
# Ubuntu, Debian, Mint: Timeshift
sudo apt install timeshift
sudo timeshift --create --comments "before upgrade"
sudo timeshift --list
sudo timeshift --restore            # interactive: pick a snapshot

# openSUSE (Snapper is preconfigured on Btrfs)
sudo snapper list
sudo snapper rollback NUMBER && sudo reboot

Take a manual snapshot before every major upgrade. Snapshots cover the system, not your documents: keep a separate backup of /home.

Timeshift or Snapper?

Timeshift (rsync)Timeshift (Btrfs)Snapper
FilesystemAny (ext4, XFS, Btrfs)Btrfs with @/@home subvolumesBtrfs (also LVM thin)
Snapshot speedMinutes (first one), then incrementalInstantInstant
Can store on another diskYesNo (same filesystem)No
Hooks into package managerNo (apt hook via timeshift-autosnap-apt, third party)SameYes: zypper built in, snap-pac on Arch
Default onLinux Mint (prompted)Mint/Ubuntu on Btrfs installsopenSUSE

Check your filesystem and subvolume names before choosing:

findmnt -no FSTYPE /
sudo btrfs subvolume list / 2>/dev/null | head

Timeshift's Btrfs mode expects the Ubuntu-style @ and @home subvolume names, which Mint and Ubuntu-based installs on Btrfs typically use; check the list output above. Fedora names them root and home, and openSUSE uses its own @/.snapshots layout, so Timeshift's Btrfs mode doesn't work there without changes. Use Snapper or Timeshift rsync mode instead.

Timeshift on Ubuntu, Debian and Linux Mint

Mint includes Timeshift and asks you to configure it on first boot. Elsewhere:

sudo apt install timeshift           # Ubuntu, Debian, Mint
sudo dnf install timeshift           # Fedora (rsync mode)
sudo pacman -S timeshift             # Arch

Open Timeshift from the menu once to run the setup wizard: choose rsync or Btrfs, choose the snapshot location (a partition with at least as much free space as your system uses, ideally a separate drive for rsync mode), and set a schedule. A good default is 5 daily, 3 weekly and 2 boot snapshots.

Command line

sudo timeshift --create --comments "before kernel update" --tags D
sudo timeshift --list
sudo timeshift --delete --snapshot '2026-10-16_09-30-01'
sudo timeshift --check               # run the scheduler now

Example output of --list:

Device : /dev/nvme0n1p2
Mode   : RSYNC
3 snapshots, 186.4 GB free

Num     Name                 Tags  Description
------------------------------------------------------------------------------
0    >  2026-10-01_10-00-01  W
1    >  2026-10-15_10-00-01  D
2    >  2026-10-16_09-30-01  O     before kernel update

By default Timeshift excludes everything under /home and /root. Leave it that way: restoring a system snapshot shouldn't overwrite your documents with older versions. In rsync mode, also exclude large caches (~/.cache, VM images, /var/lib/docker) under Filters to keep snapshots small.

Restore a Timeshift snapshot

When the system still boots

sudo timeshift --restore --snapshot '2026-10-15_10-00-01'

Or use the GUI: select the snapshot, click Restore. Timeshift asks whether to reinstall GRUB; accept the default unless you know you don't need it. The system reboots into the restored state.

When it doesn't boot

  1. Boot a live USB of your distro (Mint's live session includes Timeshift; on Ubuntu run sudo apt install timeshift in the live session after enabling the universe repository).
  2. Start Timeshift, select the disk that holds your snapshots in the setup screen.
  3. Choose the snapshot, click Restore, and pick your installed system's root partition as the target.
  4. Let it reinstall GRUB to your boot disk, then reboot without the USB.

If your problem is a broken update on Ubuntu and you have no snapshot, see fix Ubuntu after a broken update for the older-kernel and recovery-mode routes.

Snapper on openSUSE

openSUSE configures Snapper on the Btrfs root during install. zypper takes a pre and post snapshot around every transaction, and YaST does the same.

sudo snapper list
sudo snapper status 41..42           # what changed between two snapshots
sudo snapper diff 41..42 /etc/fstab
sudo snapper undochange 41..42 /etc/fstab   # revert one file

Roll back the whole system

  1. If it doesn't boot: in GRUB choose Start bootloader from a read-only snapshot and pick a snapshot from before the problem.
  2. Once booted (from the snapshot or normally), run sudo snapper rollback (or sudo snapper rollback NUMBER from a normal boot).
  3. Reboot. The rolled-back snapshot becomes the new default subvolume.

/home, /var logs and other excluded subvolumes aren't rolled back, by design. Old snapshots are cleaned up automatically by the snapper-cleanup.timer; adjust limits in /etc/snapper/configs/root (NUMBER_LIMIT, TIMELINE_LIMIT_*). On Tumbleweed and Leap 16, see the openSUSE documentation on system recovery and snapshot management.

Snapper on Fedora

Fedora installs on Btrfs but doesn't take snapshots out of the box. A basic setup for the root subvolume:

sudo dnf install snapper
sudo snapper -c root create-config /
sudo snapper -c root set-config ALLOW_USERS="$USER" TIMELINE_CREATE=yes
sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer
sudo snapper -c root create --description "before upgrade to 45"
snapper -c root list

Rolling back a full Fedora system with Snapper takes more manual work than on openSUSE, because Fedora's default layout doesn't boot from snapshot subvolumes. For "undo this upgrade", either restore individual files with snapper undochange or use Timeshift in rsync mode, which restores the whole system from a live USB in a straightforward way. Before the Fedora 44 to 45 upgrade, take a snapshot and follow the Fedora upgrade guide.

Snapper on Arch

sudo pacman -S snapper snap-pac grub-btrfs
sudo snapper -c root create-config /
sudo systemctl enable --now snapper-timeline.timer snapper-cleanup.timer grub-btrfsd

snap-pac takes a pre/post snapshot around every pacman transaction. grub-btrfs adds a "snapshots" submenu to GRUB so you can boot an older snapshot read-only when an update breaks booting. Arch's recommended subvolume layout for easy rollbacks (a separate @snapshots subvolume mounted at /.snapshots) is described on the Arch Wiki Snapper page. Timeshift Btrfs mode also works on Arch if you used @ and @home during installation.

A routine that works

  1. Scheduled snapshots: daily and weekly with a small retention count, so they never fill the disk.
  2. A manual snapshot with a clear comment before risky changes: release upgrades (Ubuntu, Fedora, Debian), GPU driver installs, desktop environment swaps, or editing boot configuration.
  3. Package-manager hooks where available (zypper on openSUSE, snap-pac on Arch), so every update has a before/after pair.
  4. A separate backup of /home to another disk or machine, on its own schedule.

Keep at least one snapshot from a known-good boot until you've used the system for a few days after an upgrade. Problems with suspend, drivers or a specific app often show up only later.

Verify your snapshots work

sudo timeshift --list                # Timeshift: recent dates present
sudo snapper list                    # Snapper: pre/post pairs after updates
systemctl list-timers | grep -Ei 'snapper|timeshift'
sudo btrfs filesystem usage /        # Btrfs: space used by snapshots

Test a restore once, before you need it: create a snapshot, change a harmless file in /etc, restore, and check the file came back. A snapshot strategy you've never tested is a guess.

Common problems

SymptomCause and fix
Timeshift: "Selected snapshot device is not a system disk" / Btrfs option greyed outSubvolumes aren't named @ and @home (e.g. Fedora). Use rsync mode.
Disk full because of snapshotsReduce the number kept, delete old ones (timeshift --delete, snapper delete). On Btrfs, check btrfs filesystem usage /, not just df.
No scheduled snapshots appearTimeshift's scheduler runs from cron; check /etc/cron.d/timeshift-hourly exists and cron is running. For Snapper, enable snapper-timeline.timer.
Restore worked but system still won't bootBootloader not reinstalled, or the problem is in /boot/efi (not covered by snapshots). See fix GRUB from a live USB.
Active swap file blocks Btrfs snapshotsMove swap to its own subvolume; see swap file on Btrfs.

Snapshots on the same disk die with the disk. Pair them with an off-disk copy of your data; the disk management guide covers adding a second drive for it.

Frequently asked questions

Is Timeshift a backup?

No. It protects system files so you can undo a bad update, and by default it excludes your personal files. Snapshots on the same disk are lost if that disk fails, so back up /home separately.

Should I use rsync or Btrfs mode in Timeshift?

Use Btrfs mode if your root is Btrfs with an Ubuntu-style @ and @home layout: snapshots are instant and take almost no space. Use rsync mode on ext4 or other layouts; it can also save snapshots to another drive.

Can I restore Timeshift if the system won't boot?

Yes. Boot a live USB of your distro, install or run Timeshift there, select the snapshot location and restore. With Btrfs and grub-btrfs you can also boot directly into a snapshot from the GRUB menu.

Does Fedora have automatic snapshots?

Fedora uses Btrfs but doesn't take snapshots by default. Set up Snapper (or Timeshift rsync mode) yourself.

Spotted a mistake or a command that no longer works? Send a correction — pages are re-checked when reports come in.