I’ve been using Bash scripts with cronjobs to schedule daily backups, and then sync the backup to BackblazeB2 after the local backup has completed.
However, it’s a bit messy and has a failure point where a locally corrupted repo could be uploaded to the remote repo. It also doesn’t send emails on failure or success.
After jumping between duplicati, duplicacy, borg backup, kopia I finally settled on Restic a couple of weeks ago.
Using it with resticprofile (https://github.com/creativeprojects/resticprofile) on Linux and Windows which does all the heavy lifting converting the setup from a simple configuration file to restic commands and adding a few options like calling webhooks on specific conditions etc. It is running rock stable so far.
https://creativeprojects.github.io/resticprofile/configuration/getting_started/index.html