When the system breaks
You ran sudo dnf upgrade to get the latest kernel, rebooted, and now the desktop environment fails to start. Or you tweaked /etc/fstab to mount a new drive and the system drops to an emergency shell. Panic sets in. You need to revert to the state before the change. Timeshift provides system snapshots for Fedora. It captures the configuration and package state of the operating system. It lets you roll back quickly when an update or manual edit breaks the boot process.
Timeshift is not a full disk backup. It does not save your documents, photos, or dotfiles. Your personal data lives in /home. If you delete a photo, Timeshift will not restore it. Use a separate backup strategy for personal files. Timeshift protects the OS, not your life's work.
How snapshots work on Fedora
Fedora Workstation defaults to the Btrfs filesystem. Btrfs supports snapshots natively through copy-on-write semantics. A snapshot is a reference to the filesystem state at a specific moment. When you create a snapshot, Btrfs records the current metadata and data block locations. Subsequent writes allocate new blocks. The snapshot remains unchanged. This mechanism is fast and space-efficient. Snapshots share data with the live system until blocks diverge.
If your root filesystem is ext4 or XFS, Btrfs snapshots are unavailable. Timeshift falls back to Rsync mode. Rsync copies files to a destination directory. It creates a file-level backup of system directories. Rsync is slower and consumes more storage. It requires a separate destination partition or drive. The choice depends on your storage layout.
Fedora uses Btrfs subvolumes to organize data. The root filesystem typically contains an @ subvolume for the OS and an @home subvolume for user data. Timeshift targets the @ subvolume by default. It excludes /home from snapshots to avoid duplicating personal data. This separation keeps snapshots focused on system integrity.
Check your subvolume layout to understand what Timeshift will capture.
sudo btrfs subvolume list /
# This lists all subvolumes on the root filesystem.
# Fedora Workstation creates @ for the root and @home for user data.
# Timeshift targets the @ subvolume by default.
# Verify the path matches your expectation before configuring snapshots.
Run btrfs subvolume list first. Knowing your layout prevents confusion when snapshots appear or disappear.
Install and configure Timeshift
Install the package from the Fedora repository. The tool is available in the default repos.
sudo dnf install timeshift -y
# -y skips the confirmation prompt.
# dnf resolves dependencies and pulls the package from the Fedora repository.
# The install includes both CLI and GUI components.
Configuration differs based on your filesystem. Btrfs mode requires no extra destination. Rsync mode requires a separate device.
Initialize Btrfs mode if your root is Btrfs.
sudo timeshift --init --btrfs
# --init starts the configuration process.
# --btrfs selects Btrfs snapshot mode.
# This mode works only if the root filesystem is Btrfs.
# The command sets up the snapshot directory under /timeshift.
Initialize Rsync mode if your root is ext4 or XFS. You must specify a destination device.
sudo timeshift --init --rsync --dev /dev/sdb1
# --init starts the configuration process.
# --rsync forces Rsync mode for file-level backups.
# --dev points to the backup device. Rsync mode requires a separate destination partition.
# Ensure the device is formatted and mounted before running this command.
Run the init command before creating snapshots. A misconfigured destination causes silent failures or data loss.
Create your first snapshot
Create a snapshot immediately after installation. This gives you a rollback point before you make any changes.
sudo timeshift --create --comments "Initial system snapshot"
# --create triggers the snapshot immediately.
# --comments adds a human-readable label.
# This helps you identify the snapshot later when rolling back.
# Btrfs mode completes in seconds. Rsync mode takes longer depending on system size.
Take a snapshot before major operations. Run sudo timeshift --create before sudo dnf upgrade --refresh. The refresh flag forces metadata updates. A bad metadata pull can cause dependency conflicts. A snapshot lets you roll back if the transaction fails.
Verify the snapshot
Verify the snapshot exists and matches your expectations.
sudo timeshift --list
# --list displays all available snapshots with their IDs, dates, and comments.
# Verify the latest snapshot matches the timestamp you expect.
# The ID is required for restore operations.
# Check the size column to monitor storage usage.
Check the list before you trust the backup. A missing snapshot means the tool is misconfigured or the filesystem is degraded.
Restore from a snapshot
Restore when the system is broken. You can restore from the live system if it boots, or from a rescue environment.
sudo timeshift --restore --snapshot 2024-05-20_14-30-00
# --restore initiates the rollback process.
# --snapshot specifies the ID of the target snapshot.
# Use the ID from the list command.
# The tool will warn you about data loss. Read the warning carefully.
The restore process reverts system files to the snapshot state. It does not touch /home. Your personal data remains intact. The tool may prompt you to reinstall the bootloader. Accept the prompt if the boot fails after restore.
Reboot immediately after a restore. The system state is inconsistent until the kernel and initramfs match the restored configuration.
Manage retention and schedules
Snapshots accumulate over time. You need a retention policy to delete old snapshots and reclaim space. Timeshift supports scheduling and retention rules.
Configure retention during initialization or update the schedule later.
sudo timeshift --init --btrfs --schedule-monthly 1 --schedule-weekly 2 --schedule-daily 7
# --schedule-monthly keeps one snapshot per month.
# --schedule-weekly keeps two snapshots per week.
# --schedule-daily keeps seven snapshots per day.
# Adjust these numbers based on your disk space and change frequency.
# Btrfs snapshots share data, so storage growth is slower than Rsync.
Timeshift runs the scheduler automatically via systemd timers on Fedora. You do not need to configure cron. The tool checks the schedule periodically and creates or deletes snapshots as needed.
Delete snapshots manually if you need to reclaim space immediately.
sudo timeshift --delete --all
# --delete --all removes every snapshot.
# Use this only when you need to reclaim space immediately.
# This is destructive. Verify you have a recent snapshot before running this.
# Rsync mode deletes files from the destination device.
# Btrfs mode removes subvolume references.
Set retention rules early. Unmanaged snapshots can fill the root partition and cause boot failures.
Common errors and recovery
Timeshift can fail if the filesystem is degraded or the destination is unavailable. Read the error messages carefully.
If you see Error: Btrfs snapshot failed: Read-only file system, your filesystem has encountered a consistency error. Btrfs mounts the filesystem read-only to prevent further damage. Timeshift cannot create snapshots on a degraded filesystem. Run sudo btrfs check / to diagnose the issue. Repair the filesystem before attempting snapshots again.
If you see Error: Destination device /dev/sdb1 is not mounted, Rsync mode requires the destination to be mounted. Timeshift does not mount drives automatically in CLI mode. Mount the drive first.
sudo mount /dev/sdb1 /mnt/backup
# Mount the destination device to a temporary path.
# Timeshift expects the device to be accessible.
# Add an entry to /etc/fstab if the drive should mount automatically at boot.
If a restore fails, check the logs. Run journalctl -xeu timeshift to see the service output. The x flag adds explanatory text and the e flag jumps to the end. Most failures show up here before the tool exits.
Timeshift protects /etc and /usr. If you manually edit files in /usr/lib, you are fighting the package manager. Revert those changes manually. Timeshift restores the package-managed state. Files in /etc are user-modified. Files in /usr/lib ship with the package. Edit /etc. Never edit /usr/lib.
Read the error before guessing. Fabricating a fix without checking logs wastes time and risks data loss.
Choose the right mode
Select the mode that matches your storage and workflow.
Use Btrfs mode when your root filesystem is Btrfs and you want instant snapshots with minimal storage overhead. Use Rsync mode when your root filesystem is ext4 or XFS and you need a portable backup destination on a separate drive. Use Rsync mode when you want to store snapshots on a network mount that Btrfs subvolumes cannot target. Stay on Btrfs mode if you are running Fedora Workstation with default storage settings.
Match the mode to your filesystem. Mixing modes causes configuration errors and wasted space.