Timeshift for Linux is an application that provides functionality similar to the System Restore feature in Windows and the Time Machine tool in Mac OS. Timeshift protects your system by taking incremental snapshots of the file system at regular intervals. These snapshots can be restored at a later date to undo all changes to the system.
In RSYNC mode, snapshots are taken using rsync and hard-links. Common files are shared between snapshots which saves disk space. Each snapshot is a full system backup that can be browsed with a file manager.
In BTRFS mode, snapshots are taken using the in-built features of the BTRFS filesystem. BTRFS snapshots are supported only on BTRFS systems having an Ubuntu-type subvolume layout (with @ and @home subvolumes).
Timeshift is similar to applications like rsnapshot, BackInTime and TimeVault but with different goals. It is designed to protect only system files and settings. User files such as documents, pictures and music are excluded. This ensures that your files remain unchanged when you restore your system to an earlier date. If you need a tool to back up your documents and files please take a look at the excellent BackInTime application which is more configurable and provides options for saving user files.
Timeshift was originally developed and maintained by Tony George.
His original repository is still available on Github.
Nowadays Timeshift is part of the Xapp project which is a collection of cross-DE and cross-distributions applications which are maintained by Linux Mint.
Timeshift requires very little setup. Just install it, run it for the first time and take the first snapshot. Cron job can be enabled for taking automatic snapshots of the system at regular intervals. The backup levels can be selected from the Settings window.
Snapshots are saved by default on the system (root) partition in path /timeshift. Other linux partitions can also be selected. For best results the snapshots should be saved to an external (non-system) partition.
Multiple levels of snapshots can be enabled - Hourly, Daily, Weekly, Monthly and Boot
Number of snapshots to retain can be specified for each level
Boot snapshots provide an additional level of backup and are created every time the system starts. Boot snapshots are created with a delay of 10 mins so that system startup is not affected.
Snapshots are tagged to indicate their time interval:
Supports rsync snapshots on all systems
Supports BTRFS snapshots on BTRFS systems
It is strongly recommended to use BTRFS snapshots on systems that are installed on BTRFS partition. BTRFS snapshots are perfect byte-for-byte copies of the system. Nothing is excluded. BTRFS snapshots can be created and restored in seconds, and have very low overhead in terms of disk space.
Timeshift is designed to protect system files and settings. It is NOT a backup tool and is not meant to protect user data. Entire contents of users' home directories are excluded by default. This has two advantages:
You can selectively include items for backup from the Settings window. Selecting the option "Include hidden items" from the Users tab will back up and restore the .hidden files and directories in your home folder. These folders contain user-specific config files and can be included in snapshots if required.
Note: It is not recommended to include user data in backups as it will be overwritten when you restore the snapshot.
Snapshots can be restored by selecting a snapshot from the main window and clicking Restore button on the toolbar.
Snapshots can be restored either from the running system (online restore) or from another system that has Timeshift installed on it (offline restore).
If the main system is not bootable, then it is possible to boot from an Ubuntu Live CD, install Timeshift on the live system, and restore a snapshot on the main system.
Restoring backups from the running system requires a reboot to complete the restore process.
/etc/timeshift/restore-hooks.d
. Note: the script(s) will be run from the restored filesystem.Normal - OS installed on non-encrypted partitions
LUKS Encrypted - OS installed on LUKS-encrypted partitions
LVM2 - OS installed on LVM2 volumes (with or without LUKS)
BTRFS - OS installed on BTRFS volumes (with or without LUKS)
grep -E '^[^#].+/\s+btrfs' /etc/fstab | \
grep -oE 'subvol=[^,]+' | \
cut -d= -f2 | \
grep -qE '^/?@$' && \
echo 'OK' || \
echo 'Not OK'
MP="$(mktemp -d)"
mount | awk '/on \/ type btrfs/{print $1}' | sudo xargs -I{} mount {} "$MP" && \
sudo btrfs subvolume set-default 5 "$MP"; \
sudo umount "$MP"
GRUB2 - Bootloader must be GRUB2. GRUB legacy and other bootloaders are not supported.
EFI - EFI systems are supported. Make sure that /boot/efi
partition is selected for mounting before restoring snapshots (application will do it automatically).
Encrypted Home - For users with encrypted home, files in /home/.ecryptfs/$USER
will be backed-up and restored. The decrypted contents in $HOME
will be excluded. This avoids the security risk of decrypted contents becoming available outside the user's home directory.
Encrypted Private Directory - For users with encrypted Private directory, the encrypted files in $HOME/.Private
, as well as the decrypted files in $HOME/Private
, will be excluded (as it contains user data). Filters added by user to include files from $HOME/.Private
or $HOME/Private
will be ignored.
Docker & Containers - Docker and containerized systems are not supported. Running Timeshift on such systems will have unpredictable results.
You can find the exact instructions in the development docs.
Debian, Ubuntu, Linux Mint, Elementary OS, etc.
Install Timeshift from the repositories:
sudo apt-get update
sudo apt-get install timeshift
Fedora is not fully supported. BTRFS snapshots only support Ubuntu-specific layouts.
sudo dnf update
sudo dnf install timeshift
sudo pacman -S timeshift
su -
apt-get update
apt-get install timeshift
Run the following command in a terminal window:
sudo apt-get remove timeshift
or
sudo dnf remove timeshift
or
sudo pacman -R timeshift
or
su - -c "apt-get remove timeshift"
depending on your package management system.
Remember to delete all snapshots before un-installing. Otherwise the snapshots continue to occupy space on your system. To delete all snapshots, run the application, select all snapshots from the list (CTRL+A) and click the Delete button on the toolbar. This will delete all snapshots and remove the /timeshift folder in the root directory.
BTRFS volumes must have an Ubuntu-type layout with @ and @home subvolumes. Other layouts are not supported. Systems having the @ subvolume and having /home on a non-BTRFS partition are also supported.
Text file busy / btrfs returned an error: 256 / Failed to create snapshot
can occur if you have a Linux swapfile mounted within the @ or @home subvolumes which prevents snapshot from succeeding. Relocate the swapfile out of @ or *@home, for example into it's own subvolume like @swap.
Timeshift requires a lot of disk space to keep snapshot data. The device selected as snapshot device must have sufficient free space to store the snapshots that will be created.
If the backup device is running out of space, try the following steps:
You can contribute to this project in various ways: