Sunday, August 27, 2006

The 'amazing' new app

Ok, so I was exaggerating a little yesterday. It's basically some ideas for a backup utility, for which I've started coding the UI a little. At the moment it's in the very early stages of development, and to make it more interesting, I've not done much Qt coding before, although I'm finding that Qt 4 is making software development in C++ much easier and more fun than before.

However, I do have a good idea of what I want the software to do, which is often half the battle won. And here is what I want it to be:

  • A personal backup tool, rather than a system backup tool. That is, it will backup files, but isn't designed to be able to restore a system to working from scratch. It's supposed to be run by a user rather than scripted to run as root.
  • Backup to CD and DVD. Although it might be nice in future to add other backup media to my programme, it won't have any ability to use anything other than CD and DVD media at the moment, and there won't be any kind of plugin interface for other media. I want to get the software doing one job well before I start extending it.
  • GUI based. There are plenty of scripted backup tools around, but I want something which is so easy to use that it encourages people to backup their date regularly. ('People' meaning me.)
  • Robust. If a disc gets scratched, it mustn't make the entire backup set unusable. Only the part which is scratched should stop working.
  • Easy to restore. Now, this is one part of the design I'm not too sure of yet. I'd like to be able to restore backups using standard unix tools. However, I haven't thought of a way to store my backups in a sensible way and still be able to get the data back with standard tools. I might instead write a very simple restore tool which could be used to restore backups when my app isn't available, and include it and its source code on the backup disc.
  • Must backup files straight to CD/DVD without making a local ISO first. I want it to be fast, and work on machines that don't have much disk space. Like some of mine.
  • Needs to make compressed backups.

The programme will keep a record of what files have been backed up, and on which discs they are stored. So when you try to restore a file, it will show you all the copies of that file which are available. You can then choose which version you want (probably the most recent most of the time), and it will tell you which disc to insert. If the disc is damaged and that file is unreadable, it will offer to let you restore a different version of the file, if it is available. It will also mark its local records to say that file is damaged.

I expect I have other requirements too, filed away somewhere at the back of my brain. Hopefully, blogging about it like this will help me to codify what I want.

I am aware of many backup tools out there at the moment, but so far none of them do what I want. If you know of something which does fit the bill, I'll happily stop developing and use it instead. And if you've got any good ideas about how I could progress with this project, I'd also like to hear from you. Once I've got it just a little further I'll put it in KDE's playground.


Devon said...

Finally! I have been manually doing this for a while, I have looked into backup solutions but there is nothing that I like so far. Hopefully this will be my golden solution once it comes out.

fabo said...

Why not help to improve keep ?:

dim said...

What about developing a nice KDE gui for bacula ? is a network backup solution, with catalog of archived files and nice restore solutions, which « fills the bill » and some more.

Peter said...

Rather than only losing the bit that's damaged, why not use some thing like par2 and not lose anything at all? The par2 overhead's pretty low.