I'm a restic user, but have resisted the urge to attempt a bikeshed for a long time, mostly due to perf. It's index format seems to be slow and terrible and the chunking algorithm it uses (rabin fingerprints) is very slow compared to more recent alternatives (like FastCDC). Drives me nuts to watch it chugging along backing up or listing snapshots at nowhere close to the IO rate of the system while still making the fans run. Despite that it still seems to be the best free software option around
> It's index format seems to be slow and terrible and the chunking algorithm it uses (rabin fingerprints) is very slow compared to more recent alternatives (like FastCDC).
Hi, can you elaborate more on those two points? (Specially, what makes the index format so bad?) Or link to somewhere I can learn more
You could try running rustic on your repository. It should be a drop-in for restic and maybe it's faster? I would actually be very interested in this. Would be great if you could do that and report back.
Currently using Kopia because Restic has no GUI and Borg requires adding a community maintained Synology package, and it didn't "Just work" when I tried.
It's amazing! The GUI isn't perfect but the fact that there is an official GUI at all is great.
Try BackRest if you want a nice frontend to Restic. You can configure Restic from the command line but it's pretty awkward. BackRest has a nice simple web GUI and makes basic automation very easy. https://github.com/garethgeorge/backrest
I'm surprised no one is selling Restic hosting as a straight up service. BackBlaze works well with Restic but the configuration is a little manual and clumsy. A packaged solution would be a nice thing.
Restic is very very good. My only nervousness is the backup format is so opaque, you need a working copy of Restic to restore from it. The format is documented though and of course the code is open source, so I think it's probably fine in practice.
Other popular choices include borg, duplicity, and duplicati.
After evaluating these and others mentioned in the comments, I ended up using borg with borgmatic to define homelab backups with yaml files that are version controlled in gitea and deployed using ansible.
I also use duplicity to back up my sister in laws storefront website to backblaze. I've been quite happy with both.
Last time I tried Kopia was more like "select ONE folder to backup and add ONE destination to SNAPSHOT it to". While it is very simplistic and would be lovely in many use cases - for a home/personal backup which often requires granularity of inclusion and exclusion it just didn't make any sense. I am not sure whether that has changed.
I chose restic because borg was slow, buggy and an unwieldy pile of Python, not the best language for deployment on heterogeneous Linux systems.
Restic on the other hand is slow, but never crashed on me and is distributed as a single binary.
The only thing I dislike about restic is that it does not have a simple config file where you define your backup settings. Instead I had to write my own backup.sh that I deploy everywhere on my personal and production machines. Paired with rsync.net for storage and healthchecks.io for notifications.
I've never had any crashing or big issues with borg, and it's generally considered to be faster than restic. I'm sure there are more recent benchmarks, but as of Dec 2022, borg wins by a fair bit [1].
For installation, I set up a dedicated virtualenv for borg and borgmatic installation then symlink into /usr/local/bin. This is also automated with ansible and has worked on every distro and version I've used. The latest version does require python 3.9.0, but that's already 4 years old.
I write Python day to day, but even I use Restic for the single binary. I take a lot of comfort in being able to keep the backup executable adjacent to the backup blobs. While I believe Borg now has a distributable binary, Go has it in its blood to make easy deployment without tricks.
Duplicity is solid, I’ve been using it since over a decade, and it’s a standard package on Debian-based distributions. Never had any hiccups (and I run regular backup validations).
These threads about backup tools come up regularly, and I always wonder if I’m missing something important about the other tools.
I used Duplicity (via the Gnome Déjà Dup GUI) for years, but Borg turned out to be a lot faster at making the backups, at least for my laptop home dir backups. Like an order of magnitude faster. I don't think I ever tried to hand-configure Duplicity, though.
I have tested all of these also, and settled on borg + borgmatic. It has been absolutely rock solid. Borgmatic just rounds everything together in such a nice way. The documentation is great.
I'm pushing it all to a Hetzner storage box, as well as a local NAS. Super affordable!
Seriously try restic with Backrest. I had stopped using restic for almost two years after I got tired of tinkering with my local custom scripts to keep restic setup on my mac running. Then I found Backrest. Oh and it lets you use the snapshop browser right in the UI. That's kinda nice.
I know many comments have said it but I also wanted to add it just because backrest is what made restic usable for me again. Vorta is a favourite backup GUI but somehow I am finding backrest even simpler (although would have loved it if it was a tiny menu bar kinda app).
Is there something like Deja Dup on Mac?
I am planning to find and add another remote repo now (in addition to b2; and hopefully much cheaper which might be a tough one as b2 is kinda dirt cheap especially for small GBs) so that I can include some more of my less critical files in the additional backup set.
That command works well and accomplishes some of what rincr what built to solve. For example, when I mention browse-ability, I mean on the backup host without any dependencies so I can use standard file tools and browsers.
I also needed both "pull" (backup remote files) and "push" (backup local files) backup features and if I'm not mistaken restic still only supports the "push" model.
One thing that I like about Restic is that you can automatically do a test restore of a subset (e.g. 1%, 5%, 8%) of your data, so that you can check for problems on the remote automatically.
Restic is great! It has worked flawlessly for me for several years.
Anyone knows if there is plan to add Reed Solomon erasure coding, just in case there will be errors in repository? Something like Par2.
Asymmetric encryption could also be useful in some situations. Perhaps they could just use Age for the asymmetric encryption backend (unfortunately Age offers only 128 bits of security in its symmetric encryption, so it’s not recommended for long term storage, because of the save-now decrypt-later attack). But I expect a stable quantum resistant plug-in appearing next year or so.
Hi, can you elaborate more on those two points? (Specially, what makes the index format so bad?) Or link to somewhere I can learn more
Even if restic isn't interested, maybe the rustic dev will be.
It's amazing! The GUI isn't perfect but the fact that there is an official GUI at all is great.
I'm surprised no one is selling Restic hosting as a straight up service. BackBlaze works well with Restic but the configuration is a little manual and clumsy. A packaged solution would be a nice thing.
Restic is very very good. My only nervousness is the backup format is so opaque, you need a working copy of Restic to restore from it. The format is documented though and of course the code is open source, so I think it's probably fine in practice.
[0] https://www.borgbase.com/ [1] https://www.hetzner.com/storage/storage-box/
After evaluating these and others mentioned in the comments, I ended up using borg with borgmatic to define homelab backups with yaml files that are version controlled in gitea and deployed using ansible.
I also use duplicity to back up my sister in laws storefront website to backblaze. I've been quite happy with both.
https://borgbackup.readthedocs.io/en/stable/
http://duplicity.gitlab.io/
https://docs.duplicati.com/en/latest/
[0] https://kopia.io/
Restic on the other hand is slow, but never crashed on me and is distributed as a single binary.
The only thing I dislike about restic is that it does not have a simple config file where you define your backup settings. Instead I had to write my own backup.sh that I deploy everywhere on my personal and production machines. Paired with rsync.net for storage and healthchecks.io for notifications.
For installation, I set up a dedicated virtualenv for borg and borgmatic installation then symlink into /usr/local/bin. This is also automated with ansible and has worked on every distro and version I've used. The latest version does require python 3.9.0, but that's already 4 years old.
1. https://github.com/borgbase/benchmarks
Will this https://github.com/garethgeorge/backrest/discussions/188 work for you?
Also, I can add directory file to include exclude directly to this config or to separate files as I please and just refer in this config.
https://restic.readthedocs.io/en/stable/040_backup.html#envi...
These threads about backup tools come up regularly, and I always wonder if I’m missing something important about the other tools.
I'm pushing it all to a Hetzner storage box, as well as a local NAS. Super affordable!
Also backing up to a Hetzner storagebox, so it’s quite cheap too.
https://torsion.org/borgmatic/
https://www.arqbackup.com/
It's really simple and in active development https://github.com/garethgeorge/backrest. The dev (lead dev) https://github.com/garethgeorge/backrest/discussions is very responsive.
I know many comments have said it but I also wanted to add it just because backrest is what made restic usable for me again. Vorta is a favourite backup GUI but somehow I am finding backrest even simpler (although would have loved it if it was a tiny menu bar kinda app).
Is there something like Deja Dup on Mac?
I am planning to find and add another remote repo now (in addition to b2; and hopefully much cheaper which might be a tough one as b2 is kinda dirt cheap especially for small GBs) so that I can include some more of my less critical files in the additional backup set.
I wrote and now use the rsync-based, browsable, incremental backup CLI: https://rincr.com/
I also needed both "pull" (backup remote files) and "push" (backup local files) backup features and if I'm not mistaken restic still only supports the "push" model.
EDIT: Added more details
(Yes, bitrot might better be mitigated at the filesystem layer, but I'm not switching to ZFS, btrfs or bcache-fs anytime soon.)
https://www.stavros.io/posts/holy-grail-backups/
Anyone knows if there is plan to add Reed Solomon erasure coding, just in case there will be errors in repository? Something like Par2.
Asymmetric encryption could also be useful in some situations. Perhaps they could just use Age for the asymmetric encryption backend (unfortunately Age offers only 128 bits of security in its symmetric encryption, so it’s not recommended for long term storage, because of the save-now decrypt-later attack). But I expect a stable quantum resistant plug-in appearing next year or so.