Lots of people have mentioned rsynx, restic, borgbackup, and others, but which would be best for backing up nextcloud, immich, and radicale? Do all of them have a method of automatically backing up every X days/weeks? Why use one over the other, what are the differences?
There’s a balance to pick between ease of use, ease of recovery, and security. You have to define exactly what you want, and then look at what solutions are available to do that.
I wrote my own bash script for rsync that simply pulls copies of the vital folders and files over SSH from the machines I want backups from. Then it pushes a copy of all of that to an offsite (in-city friends house) location. There is no encryption at rest, because I choose easy of recovery over security. I also trust my friend, and there really isn’t anything that would compromise me totally, if that harddrive became available on the internet. There also aren’t multiple versions of old files, and if a file is deleted, then it is gone, because I don’t need that feature from my backup system.
Define your needs, then shop around. No one solution does everything easily.
Simple file copying is easy and smart.
What do you do about databases? I’m guessing you are running some containers that have a database, like paperless and many others.
I’m not backing up any databases that are so intensively used that I can’t live-copy them. Most of my databases (SQLite) sit idle until I explicitly do something to them. SQLite doesn’t really care about it unless it’s actively writing to the database.
This is why I switched everything to single disk ZFS. The ability to snapshot everything with zero downtime, including data in case I ever misconfig something, as well as replicate all of it to other ZFS drives offsite in the most efficient way possible — including encrypted data without transferring the keys — was a no brainier.
It isn’t a full backup strategy, but it has features that no other backup software can do anywhere near as easily or efficiently.
Container databases seem as simple as shutting down a container, running a backup and then starting the container again. Although my my experience is only from hosting a Lemmy/PieFed instance. I did make many backups and restores with no issues to the database. It all worked as I intended it to work.
I would imagine a similar process for non container databases. Stop, backup, restart. Although someone with more experience would be better to answer that.