Hacker News new | ask | show | jobs
by darthrupert 621 days ago
Syncthing?
1 comments

Syncthing is great, but it's peer to peer, and it requires block storage ("filesystem"). It also has no idea of point-in-time snapshots. Syncthing, is, as is unison, rsync, etc, basically a mirroring tool.

By contrast, Borg, Restic, Kopia (anything else?) use object storage, aka binary blobs, like S3 or R2 or One Drive. They store both entire copies and small diffs on top of them, much like video codecs, or like git. You can look at the filesystem you've backed up as it was in a particular moment, and you may have a history of many such moments, say, daily snapshots for a month, stored economically, not as 30 full copies. And it all is encrypted on top. If your source FS supports snapshots (ZFS, XFS on LVM, BTRFS), your backups can be entirely consistent views of your filesystem, of its relevant subtrees.

This is how I run backups privately and at work: hourly local snapshots with btrbk and hourly remote backups of filesystem snapshots with Borg. The local snapshots backups are great for quick restores or finding out recent file changes.

Prometheus alerts check that latest backup is at most two hours old and that the filesystem is not reporting errors. This setup running for more than a year now and gives great peace of mind.

That's an appreciable integrity assurance!

Mine is simpler: Syncthing with staggered versioning for important data, periodic Restic backups of the home directory (excluding caches), keeping several recent backups and a couple of older backups.

I've restored from these backups 4 times, both due to crashes and when moving to a new machine, without any adventures in the process.

Indeed; I know and use it. But it's per file, and not very configurable.

It's not very helpful is you e.g. have a 1 GB file that gets appended 100 kB every day; Syncthing would store a new full-size copy in each version (immediately usable), while Borg / Restic / Kopia would only store the deltas (and would require slow mounting to access a particular version).

Different tools for different jobs.