Wednesday, 1 October 2014

Introducing Timeshift BTRFS

Timeshift BTRFS is a fork of Timeshift for BTRFS filesystem. You can use this application only if your Linux system is installed on a BTRFS partition.

BTRFS is an advanced, experimental file system with in-built support for filesystem snapshots. Since snapshots are natively supported by the filesystem, creation and restoration of snapshots is extremely fast and takes less than two seconds. The snapshots initially do not take any space on disk and slowly "grow" in size as the original system files get modified over time. Read more about it at the following links:

Bitrot and atomic COWs: Inside "next-gen" filesystems


Super-fast Snapshot Creation

Creating a BTFS snapshot is very fast. It usually takes one or two seconds.

BTRFS snapshots are created by creating a subvolume that shares files with the root subvolume. Files don't need to be copied (only file system metadata needs to be updated) which makes the process very fast.

Snapshots takes ZERO space initially

BTRFS is a copy-on-write filesystem. This means that when an existing file is modified, changes are written to new data blocks instead of overwriting older data blocks. So we can have multiple copies of a file which share data blocks with each other thus saving disk space.

Because of this, snapshots do not occupy any extra space on disk when it is first created. As the system files get modified over a period of time, the modified files will get duplicated by the file system and the snapshot will gradually "grow" to take up extra space.

Super-fast Restore

Snapshots are restored by renaming subvolumes. Since files don't need to be copied or deleted, restoring a snapshot is very fast and takes less than a second.

You can continue working on your current system after restoring. There is no need to reboot. The restored snapshot will become active the next time you reboot your system.

Your current system will be preserved as a "snapshot" which you can restore later to undo the restore.

Also since the snapshot is a perfect copy of your system (nothing is excluded) the system that you get after restore will be perfectly same as the system that you had snapshotted.

Differences between Timeshift RSYNC and Timeshift BTRFS

The differences are listed below.

Timeshift BTRFSTimeshift RSYNC
Snapshots are a perfect copy of the root and home subvolumes. Snapshots are not perfect copies as some files and directories are always excluded.
No option to exclude files and directories. All files in user's home directory (including documents) will be reverted to the previous version after doing a restore. Latest versions of files will be preserved in a new snapshot created before restore Files and directories can be excluded to save disk space. Dynamic directories are excluded by default (/dev, /proc, ..) and additional directories can be specified by user (internet cache, ..)
Snapshot do not take any extra space on disk initially First snapshot requires space equal to system size. Subsequent snapshots create copies of files that have changed.
System partition must be formatted with BTRFS file system. System partition can be formatted with any file system. Backup partition can have any Linux file system that supports hard-links (ext3, ext4, reiserfs, etc)
Snapshot must be saved on the same device Snapshot can be saved on other devices also
Snapshot creation takes less than 2 seconds First snapshot can take upto 10 minutes to create since all files are copied. Subsequent snapshots are faster since only changed files are copied.
Snapshots can be restored without having to reboot the running system immediately. System will be rebooted after snapshot is restored.
Restoring a snapshot does not delete or overwrite any files on the current system. There is no data loss as the current system will be preserved as another snapshot. Modified system files will be overwritten by files from snapshot. New files are copied and extra files are deleted.


Ubuntu 12.04, 14.04 and 14.10 users can install from PPA:

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install timeshift-btrfs

Installers for other Linux distributions are available at following links: (32-bit, 200 KB) (64-bit, 200 KB)


If you wish to support the development of this program, please consider purchasing a support subscription for $10 or leaving a donation using the PayPal link below. Your contributions will help in keeping this project alive and to develop it further.