System Snapshots and Rollback on Linux: Timeshift and Snapper
# 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 | |
|---|---|---|---|
| Filesystem | Any (ext4, XFS, Btrfs) | Btrfs with @/@home subvolumes | Btrfs (also LVM thin) |
| Snapshot speed | Minutes (first one), then incremental | Instant | Instant |
| Can store on another disk | Yes | No (same filesystem) | No |
| Hooks into package manager | No (apt hook via timeshift-autosnap-apt, third party) | Same | Yes: zypper built in, snap-pac on Arch |
| Default on | Linux Mint (prompted) | Mint/Ubuntu on Btrfs installs | openSUSE |
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
- Boot a live USB of your distro (Mint's live session includes Timeshift; on Ubuntu run
sudo apt install timeshiftin the live session after enabling the universe repository). - Start Timeshift, select the disk that holds your snapshots in the setup screen.
- Choose the snapshot, click Restore, and pick your installed system's root partition as the target.
- 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
- If it doesn't boot: in GRUB choose Start bootloader from a read-only snapshot and pick a snapshot from before the problem.
- Once booted (from the snapshot or normally), run
sudo snapper rollback(orsudo snapper rollback NUMBERfrom a normal boot). - 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
- Scheduled snapshots: daily and weekly with a small retention count, so they never fill the disk.
- 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.
- Package-manager hooks where available (zypper on openSUSE,
snap-pacon Arch), so every update has a before/after pair. - A separate backup of
/hometo 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
| Symptom | Cause and fix |
|---|---|
| Timeshift: "Selected snapshot device is not a system disk" / Btrfs option greyed out | Subvolumes aren't named @ and @home (e.g. Fedora). Use rsync mode. |
| Disk full because of snapshots | Reduce the number kept, delete old ones (timeshift --delete, snapper delete). On Btrfs, check btrfs filesystem usage /, not just df. |
| No scheduled snapshots appear | Timeshift'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 boot | Bootloader 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 snapshots | Move 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.