Restore completed without errors but no files were restored.. "An error occurred: Title has already been used"

I have a backup made from computer A to a server B, and I’m restoring on computer C.

reproduce:
Direct restore from backup files ...
enter correct data / select files
restore

Effect:
[Warning-Duplicati.Library.Main.Operation.RestoreHandler-NoFilesRestored]: Restore completed without errors but no files were restored

2.0.8.1_beta_2024-05-07
Windows 10

Welcome to the forum @user_name

Are all systems Windows? Did you restore into an empty folder on computer C?
Usually this warning (not error) means everything is already there, so no restore.

Everything is on Windows, folder is empty.

A is running Windows 11,
B is running Windows 10,
C is running Windows 10.

A, C have 2.0.8.1_beta_2024-05-07.

B sounds like Destination for A. How was A connected? Is A gone, and C connected the same way?

In case selection matters, does this happen if, say, you select a single file, so you can watch restore?

About → Show log → Live → Verbose should make some commentary about what’s going on with it.

Example single file direct restore reverse-chronological live log at Verbose. How does yours compare?

Jun 11, 2024 7:31 AM: The operation Restore has completed
Jun 11, 2024 7:31 AM: Testing restored file integrity: C:\backup restore\short.txt
Jun 11, 2024 7:31 AM: Patching metadata with remote data: C:\backup restore\short.txt
Jun 11, 2024 7:31 AM: Recording metadata from remote data: C:\backup restore\short.txt
Jun 11, 2024 7:31 AM: Backend event: Get - Completed: duplicati-b7698bf16f65a4b098b156db6e2cd30f4.dblock.zip (677 bytes)
Jun 11, 2024 7:31 AM: Backend event: Get - Started: duplicati-b7698bf16f65a4b098b156db6e2cd30f4.dblock.zip (677 bytes)
Jun 11, 2024 7:31 AM: 1 remote files are required to restore
Jun 11, 2024 7:31 AM: Target file is patched with some local data: C:\backup restore\short.txt
Jun 11, 2024 7:31 AM: Target file does not exist: C:\backup restore\short.txt
Jun 11, 2024 7:31 AM: Restore list contains 2 blocks with a total size of 138 bytes
Jun 11, 2024 7:31 AM: Mapping restore path prefix to "C:\tmp\" to "C:\backup restore\"
Jun 11, 2024 7:31 AM: Needs to restore 1 files (1 bytes)
Jun 11, 2024 7:31 AM: Searching backup 0 (6/10/2024 12:47:11 PM) ...
Jun 11, 2024 7:31 AM: Backend event: List - Completed: (6 bytes)
Jun 11, 2024 7:31 AM: Backend event: List - Started: ()
Jun 11, 2024 7:31 AM: The operation Restore has started
Jun 11, 2024 7:31 AM: The operation Repair has completed
Jun 11, 2024 7:31 AM: Recreate completed, and consistency checks completed, marking database as complete
Jun 11, 2024 7:31 AM: Recreate completed, verifying the database consistency
Jun 11, 2024 7:31 AM: Processing indexlist volume 2 of 2
Jun 11, 2024 7:31 AM: Backend event: Get - Completed: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
Jun 11, 2024 7:31 AM: Backend event: Get - Started: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
Jun 11, 2024 7:31 AM: Processing indexlist volume 1 of 2
Jun 11, 2024 7:31 AM: Backend event: Get - Completed: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
Jun 11, 2024 7:31 AM: Backend event: Get - Started: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
Jun 11, 2024 7:31 AM: Filelists restored, downloading 2 index files
Jun 11, 2024 7:31 AM: Processing filelist volume 2 of 2
Jun 11, 2024 7:31 AM: Backend event: Get - Completed: duplicati-20240610T124711Z.dlist.zip (633 bytes)
Jun 11, 2024 7:31 AM: Backend event: Get - Started: duplicati-20240610T124711Z.dlist.zip (633 bytes)
Jun 11, 2024 7:31 AM: Processing filelist volume 1 of 2
Jun 11, 2024 7:31 AM: Backend event: Get - Completed: duplicati-20240610T124639Z.dlist.zip (632 bytes)
Jun 11, 2024 7:31 AM: Backend event: Get - Started: duplicati-20240610T124639Z.dlist.zip (632 bytes)
Jun 11, 2024 7:31 AM: Rebuild database started, downloading 2 filelists
Jun 11, 2024 7:31 AM: Backend event: List - Completed: (6 bytes)
Jun 11, 2024 7:31 AM: Backend event: List - Started: ()
Jun 11, 2024 7:31 AM: The operation Repair has started

A key line to look at is the “Needs to restore” after it’s done reading dindex files (and hopefully no dblock).

They are connected via ssh/wifi.
A is not active when restoring to C.

Just a single file restore worked.

And while we are on it, why is Duplicati checking if some file is in the path as if it was on A?
I’m restoring files. Don’t touch my local system…

Many files restore also works but with ridicules warnings:

2024-06-11 14:33:21 +02 - [Warning-Duplicati.Library.Main.Operation.RestoreHandler-CreateMissingFolder]: Creating missing folder D:\<path>\rest 06\wallp copy for  file D:\<path>\rest 06\wallp copy\wp2527118.png
2024-06-11 14:33:21 +02 - [Warning-Duplicati.Library.Main.Operation.RestoreHandler-CreateMissingFolder]: Creating missing folder D:\<path>\rest 06\wallpapers 2 copy\wallpapercave.com for  file D:\<path>\rest 06\wallpapers 2 copy\wallpapercave.com\wp2527118.png

How is that a ‘warning’? It’s restoring files/folders so yes it needs to create folders to put those files in there.

…but only if those are small files.

As soon as I try to restore something ‘bigger’ like 100 MB+ files it fails again:

Jun 11, 2024 3:04 PM: The operation Restore has completed
Jun 11, 2024 3:04 PM: Restore completed without errors but no files were restored
Jun 11, 2024 3:04 PM: Restore list contains 0 blocks with a total size of 0 bytes
Jun 11, 2024 3:04 PM: Mapping restore path prefix to "" to "D:\<path>\rest 09\" 
Jun 11, 2024 3:04 PM: Searching backup 18 (2024-05-11 22:39:38) ...
Jun 11, 2024 3:04 PM: Searching backup 17 (2024-05-13 01:41:36) ...
Jun 11, 2024 3:04 PM: Searching backup 16 (2024-05-13 20:33:45) ...
Jun 11, 2024 3:04 PM: Searching backup 15 (2024-05-15 01:30:16) ...
Jun 11, 2024 3:04 PM: Searching backup 14 (2024-05-16 01:39:31) ...
Jun 11, 2024 3:04 PM: Searching backup 13 (2024-05-19 00:42:10) ...
Jun 11, 2024 3:04 PM: Searching backup 12 (2024-05-20 03:16:02) ...
Jun 11, 2024 3:04 PM: Searching backup 11 (2024-05-21 00:26:25) ...
Jun 11, 2024 3:04 PM: Searching backup 10 (2024-05-21 19:37:43) ...
Jun 11, 2024 3:04 PM: Searching backup 9 (2024-05-24 23:19:20) ...
Jun 11, 2024 3:04 PM: Searching backup 8 (2024-05-26 00:31:24) ...
Jun 11, 2024 3:04 PM: Searching backup 7 (2024-05-27 01:25:57) ...
Jun 11, 2024 3:04 PM: Searching backup 6 (2024-05-27 01:28:36) ...
Jun 11, 2024 3:04 PM: Searching backup 5 (2024-05-29 23:53:51) ...
Jun 11, 2024 3:04 PM: Searching backup 4 (2024-06-01 00:07:01) ...
Jun 11, 2024 3:04 PM: Searching backup 3 (2024-06-02 01:27:54) ...
Jun 11, 2024 3:04 PM: Searching backup 2 (2024-06-04 22:03:05) ...
Jun 11, 2024 3:04 PM: Searching backup 1 (2024-06-06 21:34:28) ...
Jun 11, 2024 3:04 PM: Searching backup 0 (2024-06-07 20:09:01) ...
Jun 11, 2024 3:04 PM: Backend event: List - Completed: (4.22 KB)
Jun 11, 2024 3:04 PM: Backend event: List - Started: ()
Jun 11, 2024 3:04 PM: The operation Restore has started
2024-06-11 15:04:09 +02 - [Warning-Duplicati.Library.Main.Operation.RestoreHandler-NoFilesRestored]: Restore completed without errors but no files were restored

Another bug: Live log time/date format is incorrect, it should be YYYY-MM-DD etc.

Duplicati reads the local system to see if file really needs to be restored, and to reduce downloads.
Although this helps restore speed, it also weakens the benefit of test restores unless one specifies:

no-local-blocks

Duplicati will attempt to use data from source files to minimize the amount of downloaded data. Use this option to skip this optimization and only use remote data.

Because somebody who relied on test restore tripped over this, such optimization will become opt-in.

Personally, I think it should be at Information level to cut noise, but there’s also an argument that the metadata for such folders doesn’t come from the backup. Maybe one wants to know. Many won’t care.

Regardless, if any of these things bother you enough, there’s a UX category where I see a time format comment already, and also in GitHub Issues. Note that different areas also have their own preferences.

Returning to the main topic, I searched in Google for these messages, and only found three. One was existing file situation I described, which wasn’t your case. One was empty files (no again, at 100 MB+).

Most interesting one was a config in a reverse proxy. Is there any such equipment, browsing Duplicati?

There have also been some recently found character sensitivities in the web server. You could test with extremely simple paths having U.S. English letters and numbers, and simple punctuation. Does it help?

It is also possible to bypass the GUI and use command line. A developer might be able to say more, but Searching backup is what I can make command line do if I ask for some file that it can’t find. I thought
Direct restore from backup files only got the chosen version. Do you know if that’s all versions?

EDIT 1:

At least on command line, it seems to get all the versions. I have two here, and it grabbed and searched:

C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07>Duplicati.CommandLine.exe restore "file://C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\test 1\\" "C:\missing.txt" --no-encryption=true --restore-path="C:\backup restore" --console-log-level=verbose
Restore started at 6/11/2024 3:27:30 PM
The operation Restore has started
No local database, building a temporary database
Backend event: List - Started:  ()
  Listing remote folder ...
Backend event: List - Completed:  (6 bytes)
Rebuild database started, downloading 2 filelists
Backend event: Get - Started: duplicati-20240610T124639Z.dlist.zip (632 bytes)
  Downloading file duplicati-20240610T124639Z.dlist.zip (632 bytes) ...
Backend event: Get - Completed: duplicati-20240610T124639Z.dlist.zip (632 bytes)
Backend event: Get - Started: duplicati-20240610T124711Z.dlist.zip (633 bytes)
  Downloading file duplicati-20240610T124711Z.dlist.zip (633 bytes) ...
Processing filelist volume 1 of 2
Backend event: Get - Completed: duplicati-20240610T124711Z.dlist.zip (633 bytes)
Processing filelist volume 2 of 2
Filelists restored, downloading 2 index files
Backend event: Get - Started: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
  Downloading file duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes) ...
Backend event: Get - Completed: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
Backend event: Get - Started: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
  Downloading file duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes) ...
Processing indexlist volume 1 of 2
Backend event: Get - Completed: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
Processing indexlist volume 2 of 2
Recreate completed, verifying the database consistency
Recreate completed, and consistency checks completed, marking database as complete
Checking remote backup ...
Backend event: List - Started:  ()
  Listing remote folder ...
Backend event: List - Completed:  (6 bytes)
Searching backup 0 (6/10/2024 12:47:11 PM) ...
Searching backup 1 (6/10/2024 12:46:39 PM) ...
Mapping restore path prefix to "" to "C:\backup restore\"
Restore list contains 0 blocks with a total size of 0 bytes
Checking existing target files ...
  0 files need to be restored (0 bytes)
Scanning local files for needed data ...
Verifying restored files ...
Restore completed without errors but no files were restored
Restored 0 (0 bytes) files to C:\backup restore
Duration of restore: 00:00:08

EDIT 2:

Giving a valid file (I still wonder if something messed up between your browser and Duplicati) looks like:

C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07>Duplicati.CommandLine.exe restore "file://C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\test 1\\" "C:\tmp\short.txt" --no-encryption=true --restore-path="C:\backup restore" --console-log-level=verbose --no-local-blocks
Restore started at 6/11/2024 3:37:28 PM
The operation Restore has started
No local database, building a temporary database
Backend event: List - Started:  ()
  Listing remote folder ...
Backend event: List - Completed:  (6 bytes)
Rebuild database started, downloading 2 filelists
Backend event: Get - Started: duplicati-20240610T124639Z.dlist.zip (632 bytes)
  Downloading file duplicati-20240610T124639Z.dlist.zip (632 bytes) ...
Backend event: Get - Completed: duplicati-20240610T124639Z.dlist.zip (632 bytes)
Backend event: Get - Started: duplicati-20240610T124711Z.dlist.zip (633 bytes)
  Downloading file duplicati-20240610T124711Z.dlist.zip (633 bytes) ...
Processing filelist volume 1 of 2
Backend event: Get - Completed: duplicati-20240610T124711Z.dlist.zip (633 bytes)
Processing filelist volume 2 of 2
Filelists restored, downloading 2 index files
Backend event: Get - Started: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
  Downloading file duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes) ...
Backend event: Get - Completed: duplicati-i04b9aecf1595433cb5aae412562d62e1.dindex.zip (605 bytes)
Processing indexlist volume 1 of 2
Backend event: Get - Started: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
  Downloading file duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes) ...
Backend event: Get - Completed: duplicati-i771cc1cd3d864c9d9a6542f27cb4e5be.dindex.zip (606 bytes)
Processing indexlist volume 2 of 2
Recreate completed, verifying the database consistency
Recreate completed, and consistency checks completed, marking database as complete
Checking remote backup ...
Backend event: List - Started:  ()
  Listing remote folder ...
Backend event: List - Completed:  (6 bytes)
Searching backup 0 (6/10/2024 12:47:11 PM) ...
Needs to restore 1 files (1 bytes)
Mapping restore path prefix to "C:\tmp\" to "C:\backup restore\"
Restore list contains 2 blocks with a total size of 138 bytes
Checking existing target files ...
  1 files need to be restored (1 bytes)
Target file does not exist: C:\backup restore\short.txt
1 remote files are required to restore
Backend event: Get - Started: duplicati-b7698bf16f65a4b098b156db6e2cd30f4.dblock.zip (677 bytes)
  Downloading file duplicati-b7698bf16f65a4b098b156db6e2cd30f4.dblock.zip (677 bytes) ...
Backend event: Get - Completed: duplicati-b7698bf16f65a4b098b156db6e2cd30f4.dblock.zip (677 bytes)
Patching file with remote data: C:\backup restore\short.txt
Recording metadata from remote data: C:\backup restore\short.txt
Patching metadata with remote data: C:\backup restore\short.txt
  0 files need to be restored (0 bytes)
Verifying restored files ...
Testing restored file integrity: C:\backup restore\short.txt
Restored 1 (1 bytes) files to C:\backup restore
Duration of restore: 00:00:07

Restoring files in the GUI with emoji in name fails, it works if there are just Latin characters.

I don’t know what versions you are referring to but there are multiple backup jobs made from the source.

Restoring via terminal works (mostly) but this is limited to only restoring one file at a time as far as I can see, which is kinda a joke.

Possibly one of these (needs developers). The first may get fixed by replacing the web server.

Did you try a wildcard, for example if you have a folder name, end your restore “ask” with \*.

EDIT:

For example, this gets me a restore of emoji-named folder and the two files that are inside it:

Duplicati.CommandLine.exe restore "file://C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\test 4\\" "C:\backup source\emoji\Notes 📝\*" --dbpath="C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\RHRJDWVWXA.sqlite" --no-encryption=true --restore-path="C:\backup restore"

I didn’t try with * because my files are not *-able: they have different names and are located in different folders.

That works here too. Are you sure yours doesn’t? If so, maybe you could post some details?

C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07>Duplicati.CommandLine.exe restore "file://C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\test 4\\" "C:\backup source\emoji\Notes 📝\file1.txt" "C:\backup source\emoji\Notes 📝\file2.txt" "C:\backup source\emoji\ASCII\in-ASCII.txt" --dbpath="C:\Duplicati\duplicati-2.0.8.1_beta_2024-05-07\RUN\RHRJDWVWXA.sqlite" --no-encryption=true --restore-path="C:\backup restore"

EDIT:

C:\backup restore>tree /f
Folder PATH listing
Volume serial number is X
C:.
├───ASCII
│       in-ASCII.txt
│
└───Notes 📝
        file1.txt
        file2.txt

Yes, it works, I previously used multiple files in one set of quotes.

That will break things. On Windows, quotes are used when single paths have spaces inside.

I’m glad you solved it except maybe for a character sensitivity in GUI (maybe fixed in Canary).