Why Time Machine Isn’t Good Enough

  1. It sometimes takes forever to perform a backup.
  2. You can’t inspect what it’s doing easily.
  3. You cannot create a custom schedule. If you want more frequent backups, you have to run it manually.
  4. It fails frequently with encrypted filesystems on external disks.
  5. Exclusions only available though the GUI, and there is no wildcard matching.
  6. It cannot sync over the network.

Why Rsnapshot Isn’t Good Enough

  • Because alpha.0/ has no inherent meaning.
  • And consequently, 2015-11-01-140501/ means something!

Why I Made Safekeep

  • Safekeep is just another rsync-hard-link-backup clone.
  • I wanted exclusions configurable per directory. If there is no exclusion file in the target directory, it walks up the directory hierarchy until one is found. Bowerrc and Editorconfig work this way.
  • Nevertheless, Safekeep lacked backup expiration. Even though it uses filesystem hard links, eventually the filesystem will run out of inodes. In the end, one must address numerous links and expire superfluous/extensive backups.

Use Rsync Time Backup

Use rsync time backup. Here’s why it’s awesome:

  1. No prerequisites, it’s just a bash script. Use it the same way on OS X and Linux.
  2. The default expiry is more than adequate for most use cases.
  3. Complete control over backup scheduling - just use a cronjob.
  4. What about when there is no more space on the device? It handles that! E.g. the message reads rsync_tmbackup: [WARNING] No space left on device - removing oldest backup and resuming.
  5. By far, the biggest advantage is remote backup over ssh.

Tips For Success

  1. Most importantly, backup your home directory. After you’re satisfied with this, then add system directories.
  2. Backup everything, and cherry pick exclusions. E.g. developers would likely exclude node_modules/.
  3. Schedule cronjobs for when it makes sense for you.
  4. Keep your eye on the backup output! Without read permissions you cannot back something up. Try mutt for reading cronjob mail.
  5. Regarding remote backups: you might want to define subset of your complete local backup. The subset would be your most critical files. They’re going over the network so file size is a performance factor.