How to recover from interrupted backup

@JonMikeIV speculated in a #1183 post that a recreate could pick up a problem inside a file on the backend.

Web UI Recreate describes itself as delete and repair. The help for repair doesn’t say exactly which options it takes, but source implies it takes --time (which had bugs) and --version (which worked, even including range):

--version (String): The version to list/restore files
  By default, Duplicati will list and restore files from the most recent backup, use this option to select another item. You may enter multiple values separated with comma, and ranges using -, e.g. "0,2-4,7"

To make sure you can actually spot the problem from CLI, you’d first try an ample range, e.g. 0-999 ought to bring in your 150 versions then error. Next, delete the database (e.g. del in Command Prompt) and narrow…

For a starter command line, you can try exporting your job configuration as a command line, then edit it into:

Usage: repair <storage-URL> [<options>]

  Tries to repair the backup. If no local db is found or the db is empty, the db is re-created with data from the storage. If the db is in place but the remote storage is corrupt, the remote storage gets repaired with local data (if
  available).

I haven’t tried a version range on verify/test or other things, partly because it seemed most direct to isolate a repair failure. On the other hand, if it it really works with verify/test you might be able to set it and let it labor…

Usage: test <storage-URL> <samples> [<options>]

  Verifies integrity of a backup. A random sample of dlist, dindex, dblock files is downloaded, decrypted and the content is checked against recorded size values and data hashes. <samples> specifies the number of samples to be tested.
  If "all" is specified, all files in the backup will be tested. This is a rolling check, i.e. when executed another time different samples are verified than in the first run. A sample consists of 1 dlist, 1 dindex, 1 dblock.

  --time=<time>
    Checks samples from a specific time.
  --version=<int>
    Checks samples from specific versions. Delimiters are , -
  --full-remote-verification
    Checks the internal structure of each file instead of just verifying the file hash

Or you can wait for more expert guidance. Possibly your log files and/or your database report will be enough.