Missing File Repair - Does what exactly?

I received a notice that I had 2 remote files missing, and to run a repair.
Both of these missing files were “dindex” types.

Lots of questions!

When i ran a repair, it seemed to resolve the problem. Did Duplicati recreate those dindex files that were missing? No data loss in this situation?

What if the files that were missing are dblocks? I assume there is no way to actually repair/recreate those. Does duplicati know which files from which backup sets are not recoverable in that situation? Does it mark them in the database so they know longer appear as restorable when I browse past backups? And if the files are actually still present on my computer, would Duplicati know it needs to re-upload the blocks that represent those files?

Yes - dindex and dlist files on the destination can be rebuilt from the local (client) database data, no loss of data should occur. Note that if your local database is in a bad state for some reason then they may NOT be able to be rebuilt.

  1. Correct, there is currently no way to repair / recreate those blocks so in that scenario there IS a loss of versions from the backup.
  2. Yes - and if you run the list-broken-files command (can be found in the job “Commandline …” GUI) you’ll see what was affected.
  3. No - Duplicati does not AUTOMATICALLY flag them as unrestorable. However if you manually run the purge-broken-files command it will remove all references to the now-lost versions.
  4. Yes-ish - until the missing dblock files are dealt with Duplicati will still have their info in the local database, so when backups are run the local database will think they do NOT need to be backed up again. However once the purge-broken-files command has run, the local database will no longer know about those files and will back them up again if necessary.

Note that in #4 we talked about “files” when really we should be talking about “versions” as it’s possible to have multiple versions of a file backed up and the loss of a dblock file might not affect ALL the versions.

This means that if you have, let’s say, 2 versions of a file backed up (one from last week and one from yesterday) and the dblock file containing info specific to last week’s version disappeared, then running purge-broken-files would remove the reference to last week’s version but NOT yesterday’s version. If the local file had not changed since yesterday then no re-upload would happen since that version of the file is still intact in the backup.

It’s actually even a little more complicated than that, but hopefully you get the idea… :slight_smile: