I’m not sure if this is better here or on the githib issues page… if there is better, please let me know.
When a user selects the “Database…” choice under “Advanced” for a backup configuration, the UI shows text reading:
If the backup and the remote storage is out of sync, Duplicati will require that you perform a repair operation to synchronize the database. If the repair is unsuccesful, you can delete the local database and re-generate.
(“unsuccessful” is misspelled) and buttons labeled:
Repair Delete Recreate (delete and repair)
Everything about this implies that these are options for maintaining the local database. Yet, unless I misunderstand, when a local database is present, “Repair” updates the remote storage to match the local database. If no local database is present, “Repair” creates a local database from the remote information.
So the same “Repair” button does two very different things — modify remote storage to match the local database, or create a local database using the information in remote storage — neither of which is repairing the local database. (If there is any way to do that — to bring the local database into sync with what’s available in remote storage without deleting and rebuilding it — I don’t see where it’s done.)
My suggestion is that “Delete” is fine as it is; “Recreate” should mean “delete the local database if there is one, then rebuild it using the information in remote storage” and be enabled regardless of whether a local database is present; and “Repair” should be enabled only when a database already exists; it should be moved to a separate line and labeled something like “Update remote file lists to match local database” so it is clear that this option modifies the remote backup, not the local database.
I’m unsure of the best wording for that last one, because I don’t know exactly what it can and can’t accomplish. Obviously, if files are missing from the remote store which contain blocks from older generations of files that have since been changed or deleted, it can’t fix those. I understand that it does something that might stop Duplicati from throwing error messages during a backup; but what it really accomplishes and what is left undone (and possibly unflagged until some other operation encounters the error) is unclear to me.