For my home server, I use Restic and a cronjob to weekly take snapshots of all my services. It then gets synced to a Backblaze B2 bucket (at $6/TB/mo). It’s pretty neat, only saving the difference between the previous and current snapshot, removes older snapshots, and encrypts everything.
I’ve started adopting the habit of putting “-rf” as the last argument to avoid accidentally deleting something before I’ve double-checked my input. Good luck, and may this never happen again.