Duplicati BackupExplorer

Hi guys,

some weeks ago, I was interested in learning more about how the data deduplication actually works for my backups:

For educational purposes (and also for my personal entertainment), I made a little desktop tool I called “Duplicati BackupExplorer”:

It can browse the Duplicati sqlite database and display its contents and also analyze how much data is being reused between different backups. More information here:

In case someone wants to give it a try, binaries for Linux and Windows are available here:

As I am not very artsy, so I used the original Duplicati icon for the application icon. Are you guys ok with that? As far as I know, it is ok regarding the Duplicati license, but of course I am fine to change it if you want.

5 Likes

This looks really good, and it certainly must have required quite a deep understanding of the inner workings of duplicati.

I am not sure whether you see this as completed or not, but what I would also find interesting is an overview of the currently wasted space (from leftover blocks that would be removed by a compact). This is obviously just a suggestion in case you want to keep working on the tool.

Neat tool! Thanks for sharing it with the forum.

Does this already support Duplicati version 2.0.9? I tried and I’m getting a SQLite Error 1: 'no such table: FileLookup'.

That is surely a nice idea and it would be an interesting addition. Not sure how easy it is to “simulate” the compacting process and to evaluate how much space it would free. Let me see if I can get a good enough understanding of it.

EDIT:
I am not sure if this information is even included in the database. Possibly only by accessing the actual files this information can be retrieved?

Hm yes, I didn’t try with 2.0.9 yet as I am only using 2.0.8 so far, so it is well possible that it does not work with it. I would not like to switch my production setup to 2.0.9 currently, but if someone would be willing to provide an example database from 2.0.9 for me then I would be happy to look into it.

I think this is the relevant part that calculates the wasted space, which should only need the database:

That’s great, thank you. I will look into that.

Looks super neat! I think this is a very useful utility!

It is @agrajaghh who made the icons originally, so I will defer that to him.

The format for the local database did not change between those versions. I think you are perhaps trying to open Duplicati-server.sqlite. This tool looks like it is meant to open the randomly named local databases (one for each backup). You can see the path to each database in the UI under “Database…”

I tried both. But opening a backup database also failed with this error:

An error occured when trying to load the Duplicati database file 'Avalonia.Platform.Storage.FileIO.BclStorageFile': The given key '724' was not present in the dictionary.

I only tested with my own database, so it is well possible that other databases might have special contents that could be a problem. Would it be possible for you to let me have your database file so I could debug what the problem is?

Yes, you cannot open Duplicati-server.sqlite but only the “random” name database. Every one of those databases represents one backup job as far as I know.

I’ll send you an example database file as a message.

Thanks for looking at this.

Robert

Really cool tool!

Including the size into the file tree might be also a good feature for duplicati while restoring data:
grafik

sure, you can use the icon :+1:

Thanks, thats nice! :slight_smile:

I did a new version of the tool and added the information about the wasted space:

But, there is one drawback: as I understand it, there is only information in the database about the compressed size of the whole volume (ZIP file) but not about individual blocks (naturally). Knowing which blocks have been deleted only tells you the uncompressed space on the storage backend, which will be freed by COMPACT. But you cannot know how much actual disk space will be freed.

image

1 Like