HNNewShowAskJobs
Built with Tanstack Start
Time Machine-style Backups with rsync (2018)(samuelhewitt.com)
82 points by accrual 11 hours ago | 37 comments
  • deng10 minutes ago

    This is just half of what Time Machine does. What people are constantly missing is that Apple Time Machine is fast, as it does not need to walk through the whole filesystem to find changed files. Thanks to FSEvents, introduced in Mac OS X Leopard, it knows which directories actually contain changed files and hence usually only needs to check a small fraction of the filesystem. (Not sure if it still works that way after the switch to APFS).

    This would of course also be possible on Linux (using *notify), and there are some projects who try to do this, but it's really hard to do it reliably. You might argue that this feature is less important nowadays because NVME SSDs are so fast, but still, I remember very well how astonished I was that creating a new time machine snapshot on OS X Leopard took mere seconds.

    • afandian2 minutes ago |parent

      I lost all my files to Time Machine in 2008. I don't remember exactly what happened. But since then I'll take a slightly slower, observable command-line copy over sparkly magic.

  • c0nsumer8 hours ago

    Ha. That's a throwback.

    I did the same thing, but with a more detailed writeup, in 2009: https://nuxx.net/blog/2009/12/06/time-machine-for-freebsd/

    It was really handy, but I now use borg as it just works better.

    • human_llm7 hours ago |parent

      HA! It read your post I read back then and I have been using it ever since. So thank you. I guess I need to check out borg ;)

  • zimpenfishan hour ago

    Used this technique (albeit counter-based, not time-based) successfully for backing up the 2006 World Cup site newsfeed[0] configurations/data. Had 6 rotating backups on two hosts. Never had to use them (as best I remember) but it was definitely comforting to know they were there in case of urgent rollback.

    [0] Not strictly the right name but I've forgotten. Y!uk people of that era know what I mean.

  • LeoPanthera5 hours ago

    "borg" has basically solved backups permanently. It's deduplicated, even across snapshots, compressed, and end-to-end encrypted. I'm surprised it's not more well known.

    • IshKebab3 hours ago |parent

      I used to use Borg, but Restic (and it's Rust clone Rustic) are better.

    • locknitpicker5 hours ago |parent

      > "borg" has basically solved backups permanently. It's deduplicated, even across snapshots, compressed, and end-to-end encrypted.

      Deduplication helps minimize space, but isn't it a major liability in backups? I mean, what happens when you try to restore your backups but a lone sector holding a file from way back in the past happens to not be recoverable? Doesn't it mean that no matter how frequent your backups are, your data is lost?

      • LeoPanthera3 hours ago |parent

        This is bordering on paranoia. If the bad sector contains a critical part of the filesystem, you're going to lose everything anyway.

        Do modern disks even have physical "sectors" anymore? Isn't it all virtual?

        Without dedup you're just going to backup less stuff, which is far worse.

        • locknitpicker3 hours ago |parent

          > This is bordering on paranoia.

          What? You actually think that the mere idea of a backup getting corrupted is something that is "bordering on paranoia"? Have you ever heard of redundancy or even RAID?

          > If the bad sector contains a critical part of the filesystem, you're going to lose everything anyway.

          Do you honestly failed to understand that the problem is actually the "lose everything" part?

      • stuxnet794 hours ago |parent

        If you are storing your data in a filesystem like ZFS then the risk is lower since you'll know you have a bad sector long before you attempt to deduplicate. But I otherwise share your same concerns and I'm eager to hear from others how to mitigate this. I've lost a volume due to poor practice while encrypting so I'm understandably reluctant to overcomplicate my backup strategies in the name of space compression or privacy.

      • haradion4 hours ago |parent

        It doesn't really hurt in practice because it's only one part of the full backup procedure. Deduplicate to save space; re-duplicate the (smaller) backups to separate media for redundancy; scrub regularly for bit rot and rotate your media. A proper backup system requires all but the first of those anyway.

      • NSUserDefaults5 hours ago |parent

        In that case you are supposed to use your /other/ backup. Which you have.

        • DaSHacka3 hours ago |parent

          Defeating the point of deduplication...

  • orev10 hours ago

    The original post that introduced this idea into general public: http://www.mikerubel.org/computers/rsync_snapshots/

    I’m sure others will chime in that they used hard links like this before then, however as noted in that page, it’s the one that made it popular enough that rsync was updated to support the idea natively.

  • nightshift110 hours ago

    Seems similar to https://rsnapshot.org/

    • kunjanshah9 hours ago |parent

      This is the more robust way to go. Uses rsync under the hood.

    • pmontra8 hours ago |parent

      I've been using snapshot for backups since so many years that I forgot when I started. I keep the last 14 snapshots.

  • kunleyan hour ago

    Isn't it also how timeshift [1] backups are working?

    [1] https://github.com/linuxmint/timeshift

  • hcartiaux5 hours ago

    I use bontmia since forever, based on the same rsync feature (link-dest for creating hard links to the unmodified files since the last backup). It also supports backup rotation and I think it's quite solid/reliable after all these years: https://github.com/hcartiaux/bontmia

  • 00deadbeef3 hours ago

    Reminds me of a tool I used to use that did a similar thing: https://github.com/jeremywohl/glastree

  • nine_k10 hours ago

    If we spoke about a Linux box, one that prudently ran ZFS, or XFS on top of LVM, it would be possible to make a snapshot before the diffing and sending, so that the snapshot would be indeed point-in-time. IDK if whatever macOS uses for the filesystem supports snapshots.

    Otherwise, I think, restic or kopia are better for proper backups, and Syncthing for keeping a mirror copy. But the simplicity of this script in charming.

    • sam_lowry_an hour ago |parent

      > But the simplicity of this script in charming.

      An important feature of backups is the ability to restore them. As much as I love restic, I have at least one backup target with hard links.

    • wrs9 hours ago |parent

      Yes, APFS supports snapshots. [0]

      [0] https://support.bombich.com/hc/en-us/articles/20686443871383...

  • theteapot6 hours ago

    Need to combine this with LVM or BTRFS or similar to be a true snapshot. Rsnapshot supports LVM snapshot pretty good.

    • fenazego3 hours ago |parent

      Once you have btrfs you don't really need rsync anymore, its snapshot + send/receive functionality are all you need for convenient and efficient backups, using a tool like btrbk.

  • nocman4 hours ago

    sounds similar to rdiff-backup ( https://rdiff-backup.net ).

    I know some folks that have been using that for a very long time as well.

  • hughc9 hours ago

    I've been using a bash encapsulation of this for a long time, works great.

    https://github.com/laurent22/rsync-time-backup

  • mrtesthah10 hours ago

    Isn’t restic better for backups overall?

    Anyone have a good script for macOS triggered by launchd, ideally something that uses FSEvents to check for directory changes?

    • crossroadsguy9 hours ago |parent

      Yes, it is; among a few other great cross-platform FOSS tools that are built just for backups, and they do it really well. But most of them do periodic scans (as opposed to file change trigger-based backup runs, which I guess is what you might be looking for, I assume by your second sentence).

    • movetheworld3 hours ago |parent

      I use restic, too, and I am very pleased with it, although I run it on windows, which works, but isn't perfect. So, you use it regularly?

  • mattbillenstein4 hours ago

    restic to s3 has been very reliable - haven't tried borg.

  • cyberax2 hours ago

    One big drawback of these solutions is that they cannot archive the system apps properly. Nor can they be used during the OS setup.

    TM integration is just so convenient...

  • EGreg9 hours ago

    Why make hard links when you can use rsync or syncthing to just make an actual copy on an external hard drive eg via wifi or just remotely?

    • c0nsumer8 hours ago |parent

      Hard links are file level dedupe.

      And then once all references to the inode are removed (by rotating out backups) it's freed. So there's no maintenance of the deduping needed, it's all just part of how the filesystem and --link-dest work together.

    • 00deadbeef3 hours ago |parent

      It does make an actual copy but then it builds a directory structure that you can browse by date (like Time Machine). That directory contains hard links so only one copy of a file is ever backed up but you see contents that match the date of the backup.

    • kej9 hours ago |parent

      The hard links are to the most recent backup before the one happening now in the script, so that you aren't storing full copies of files that haven't changed between backups.