How does Duplicati Resume After Interruption?

How does Duplicati handle interruptions, for example if a system gets powered down or rebooted during a backup? Does it re-start from where it left off or does it resume the full backup again?

Also, are there residual “breadcrumbs” that need to be cleaned up after an interruption or will Duplicati handle this itself? Does --auto-cleanup handle all this or is there something else I need to do?

In general Duplicati is very robust at handling interruptions. I PERSONALLY am not aware of any actual data loss, though I have seen some posts about “expected synthetic files” and things like that, but most of them sounded fairly simple to resolve. Again, no data loss, just Duplicati saying “hey, I found a half a file left over my last run - please tell me what to do about it”.

I haven’t used --auto-cleanup myself but according to what the ‘help’ says, it sounds like what you’d want:

If a backup is interrupted there will likely be partial files present on the backend. Using this flag, Duplicati will automatically remove such files when encountered.

You might also want to try using the search option to search for ‘interrupt’ which will give you a few other posts such as these:

Duplicati uses SQLite to provide transactional storage, meaning it will either be written completely or not at all. It keeps track of all remote files and will generally be able handle everything nicely.

It marks all files “uploading” when they are in-progress, “uploaded” when they are reported as completed, and “verified” when they have been seen in a file listing.

If you interrupt it, the next run will look at all “uploading” files and check if they have the full length as it expects, and if so it will promote them to “uploaded”. If not, it will delete them for you.

It does two things.

  1. It uploads a synthetic filelist, which is “the last filelist + whatever managed to get uploaded in the interrupted backup”
  2. Performs the backup as usual

Since all backups re-use the uploaded data, (2) is the same as “resume”.

It should fix things by itself. As @JonMikelV mentions, it can happen that this is not the case, but we should try to fix that.

Generally, don’t set --auto-cleanup. It will run the “repair” command automatically if something is wrong with the remote destination. The reason why this is not done automatically is that it can destroy data.

Duplicati keeps a list of expected remote files, and if the remote files are missing or there are extra files, somethings strange has happened and Duplicati does not know what to do, and asks you to “repair”. You should check the error message and see if the error has an explanation before you repair.

The “repair” scenario is intended as a way to recover from something that fails, but it is not meant as an everyday fix. If the automatic handling does not work, you should fix the problem (change storage provider, investigate etc) instead of trying --auto-cleanup.

If you change the destination or similar, Duplicati might see files that it thinks are “extra” and just delete them. You can catch that with the error message, but --auto-cleanup will just remove the files.

3 Likes

Thanks, kenkendk. Great information! Removing --auto-cleanup right now!