Rsync Time Machine
ef83fb18 — Charles Daniels 1 year, 3 months ago
fixed backup enumeration timing out
ae0bb9c2 — Charles Daniels 1 year, 5 months ago
fixed typo
69de1b36 — Charles Daniels 1 year, 5 months ago
fix units for T in addition to TB


browse  log 



You can also use your local clone with git send-email.

rtm - Rsync Time Machine

ATTENTION: rtm is still a very new tool, there are likely edge cases, crashes, and unexpected behaviors that have yet been discovered. Proceed with caution.

rtm is a tool which provide a Time Machine like functionality for any POSIX system which can run Python 3 and rsync. It works by using the --link-dest flag of rsync, such that any files which are unchanged since the most recent backup are hard-linked into the next one, rather than being copied. This significantly reduce transfer time and storage space requirements, especially on low-churn datasets.

For documentation on using rtm, please refer to ./man/man1/rtm.1.

Key Features

  • Backups stored as standard files/directories - no special recovery software required

  • Automatic hard-links to un-modified files to save space and transfer time

  • Backup retention configured by disk quota on backup target

  • Supports multiple backup sources and destinations on the same machine

  • Capability to run a command before creating a backup and aborting if it fails, this is useful for laptop systems where you may only wish to back up when on a certain network, when connected to AC power, or based on some other criteria


python3 setup.py install

You may also wish to copy the manual page from ./man/man1/rtm.1 to the appropriate directory on your system.


Python 3 and rsync are both required. Additionally, rtm runs over ssh, so you must have an ssh client installed on your local machine (that you are backing up), and an ssh server and rsync installed on the remote machine (that you are backing up to).

Finally, you must have the toml module installed for your Python 3 installation.

rtm is developed on and against OpenBSD based systems, however it should work on any UNIX-like system which supports it's dependencies - if not you have found a bug!

Planned Features

  • Support for rsync:// targets in addition to ssh

  • Support for adding arbitrary arguments to rsync


If you would like to contribute a patch, have a suggestion, or have found a bug, please contact me via this email:

rtm [at] cdaniels [dot] net