Ideas for programs that don't exist: 3
This is an occasional series of posts where I will share ideas for programs that don't exist, but should. The goal is to inspire developers to create useful tools that can make our lives easier. Or, more likely, to remind me about these ideas so I can create them myself. Or even more likely, to just get them out of my head so I can stop thinking about them.
Idea 3: A program that does backups the way I want
I don't want to configure things on many computers. I want to configure things once in one computer and have backups for everything I care about, done properly.
There is a great backup program called restic that does backups RIGHT. It is fast, it is secure, it is easy to use, and it has a lot of features.
There is a frontend for it called backrest
that does a lot of things right. It separates the concept of repo
which is what you
backup to and plan
which is what and when you backup.
But I want more, I want to separate plan
(when and how) from source
(where the data is)
I want to work like this:
- Create a
repo
like "this folder here on this computer is a repo called 'foo' and it has a password and whatnot" - Create a
plan
like "every day at 3 AM, backup to 'foo', keep 30 days of backups there, and every week at 2am on sundays, backup to 'bar' which is a remote repo and keep 10 weeks of backups there" - Create a
source
like "the /home/ralsina folder in my notebook" - Create a
backup
which is a combination of asource
and aplan
like "backup the /home/ralsina folder in my notebook to 'foo' every day at 3 AM"
Further, I want this to just work on all my computers as long as I have ssh correctly configured to allow it.
My backup controller should log into whatever computer the repo is in and install restic there. Then log into the source computer anb install restic there. Then create the repo, and when the plan says it's time to backup, it should log into the source computer and run the backup command there, and then log into the repo computer and run something there if it needs running.
Then I want it to keep logs and notify me via gotify or something if something goes wrong.
Is that too much to ask?