GUI - Stuck at "Downloading files" while restoring

Hello,

After initiating a restore process the GUI gets stuck at “Downloading files” and never provides any indication it has finished the restore, even after all files have been properly restored to the target location. If I interrupt the process after files have been restored it still returns an error. The alternative is to wait for the next backup, in which case it will proceed without returning any errors.

I’m using Duplicati with several flavours of Mac OS X, from Mountain Lion to macOS High Sierra and backing up to a NAS through SFTP (I also tried with AFP and SMB shared folders). Same problem everywhere.

Version: Duplicati - 2.0.2.1_beta_2017-08-01

Thanks in advance for the help.

Hello @LSilva, welcome to the forum!

I also use SFTP to a NAS as a destination from my MacOS backup, and I know it works becaues I have tested a restore with it. So let’s see if we can figure out what’s going on at your end.

  • When you started the restore, was it from within the job or using the main menu Restore option?
  • If from the main menu, was it a “Direct restore from backup files”, “Restore from configuration”, or something else?
  • While the restore is running, if you use the main menu “About -> Show log” tab and select “Live” then “Profiling” do you see any entries about what it’s doing?

Hello!

Old thread, but I also have this problem. Havent this been fixed in 1,5 years? I am evaluating Duplicati for my (and others) backup solution.

I have looked at the live log:

  • Dec 1, 2019 8:24 AM: Backend event: Get - Started: duplicati-b0126c54c57404e6180e5dea6bcb6ba9c.dblock.zip.aes (49.91 MB)

  • Dec 1, 2019 8:24 AM: Starting - RemoteOperationGet

  • Dec 1, 2019 8:24 AM: 1 remote files are required to restore

  • Dec 1, 2019 8:24 AM: GetMissingVolumes took 0:00:00:00.002

  • Dec 1, 2019 8:24 AM: Starting - GetMissingVolumes

  • Dec 1, 2019 8:24 AM: ScanForExistingSourceBlocksFast took 0:00:00:05.495

  • Dec 1, 2019 8:24 AM: CommitBlockMarker took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - CommitBlockMarker

  • Dec 1, 2019 8:24 AM: Target file is patched with some local data: /source/training/MVI_3755.MOV

  • Dec 1, 2019 8:24 AM: ExecuteReader: SELECT DISTINCT “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath”, “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path”, “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Hash”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Size” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”, “File”, (SELECT “File”.“Path”, “File”.“BlocksetID”, MAX(“Fileset”.“Timestamp”) FROM “Fileset”, “FilesetEntry”, “File” WHERE “FilesetEntry”.“FileID” = “File”.“ID” AND “FilesetEntry”.“FilesetID” = “Fileset”.“ID” AND “File”.“Path” IN (SELECT DISTINCT “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” WHERE “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID” = “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“FileID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Restored” = 0 AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Metadata” = 0 AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath” != “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” ) GROUP BY “File”.“Path” ) S, “Block”, “BlocksetEntry” WHERE “BlocksetEntry”.“BlocksetID” = “S”.“BlocksetID” AND “BlocksetEntry”.“BlocksetID” = “File”.“BlocksetID” AND “BlocksetEntry”.“BlockID” = “Block”.“ID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index” = “BlocksetEntry”.“Index” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Hash” = “Block”.“Hash” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Size” = “Block”.“Size” AND “S”.“Path” = “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID” = “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“FileID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Restored” = 0 AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Metadata” = 0 AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath” != “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” ORDER BY “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index” took 0:00:00:00.014

  • Dec 1, 2019 8:24 AM: Starting - ExecuteReader: SELECT DISTINCT “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath”, “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path”, “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Hash”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Size” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”, “File”, (SELECT “File”.“Path”, “File”.“BlocksetID”, MAX(“Fileset”.“Timestamp”) FROM “Fileset”, “FilesetEntry”, “File” WHERE “FilesetEntry”.“FileID” = “File”.“ID” AND “FilesetEntry”.“FilesetID” = “Fileset”.“ID” AND “File”.“Path” IN (SELECT DISTINCT “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” WHERE “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID” = “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“FileID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Restored” = 0 AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Metadata” = 0 AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath” != “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” ) GROUP BY “File”.“Path” ) S, “Block”, “BlocksetEntry” WHERE “BlocksetEntry”.“BlocksetID” = “S”.“BlocksetID” AND “BlocksetEntry”.“BlocksetID” = “File”.“BlocksetID” AND “BlocksetEntry”.“BlockID” = “Block”.“ID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index” = “BlocksetEntry”.“Index” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Hash” = “Block”.“Hash” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Size” = “Block”.“Size” AND “S”.“Path” = “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID” = “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“FileID” AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Restored” = 0 AND “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Metadata” = 0 AND “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“TargetPath” != “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“Path” ORDER BY “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E”.“ID”, “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E”.“Index”

  • Dec 1, 2019 8:24 AM: Starting - ScanForExistingSourceBlocksFast

  • Dec 1, 2019 8:24 AM: ScanForExistingTargetBlocks took 0:00:00:00.012

  • Dec 1, 2019 8:24 AM: CommitBlockMarker took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - CommitBlockMarker

  • Dec 1, 2019 8:24 AM: Target file does not exist: /source/training/MVI_3755.MOV

  • Dec 1, 2019 8:24 AM: Starting - ScanForExistingTargetBlocks

  • Dec 1, 2019 8:24 AM: CreateDirectory took 0:00:00:00.001

  • Dec 1, 2019 8:24 AM: ExecuteReader: SELECT “TargetPath” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E” WHERE “BlocksetID” == -100 took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - ExecuteReader: SELECT “TargetPath” FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E” WHERE “BlocksetID” == -100

  • Dec 1, 2019 8:24 AM: Starting - CreateDirectory

  • Dec 1, 2019 8:24 AM: PrepareBlockList took 0:00:00:00.035

  • Dec 1, 2019 8:24 AM: CreateProgressTracker took 0:00:00:00.003

  • Dec 1, 2019 8:24 AM: ExecuteNonQuery: CREATE TEMPORARY TRIGGER “UpdateTotalStats_FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” AFTER UPDATE ON “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” BEGIN UPDATE “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” SET “FilesFullyRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FilesFullyRestored” + (CASE WHEN NEW.“BlocksRestored” = NEW.“TotalBlocks” THEN 1 ELSE 0 END) - (CASE WHEN OLD.“BlocksRestored” = OLD.“TotalBlocks” THEN 1 ELSE 0 END) , “FilesPartiallyRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FilesPartiallyRestored” + (CASE WHEN NEW.“BlocksRestored” BETWEEN 1 AND NEW.“TotalBlocks” - 1 THEN 1 ELSE 0 END) - (CASE WHEN OLD.“BlocksRestored” BETWEEN 1 AND OLD.“TotalBlocks” - 1 THEN 1 ELSE 0 END) , “BlocksRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“BlocksRestored” + NEW.“BlocksRestored” - OLD.“BlocksRestored” , “SizeRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“SizeRestored” + NEW.“SizeRestored” - OLD.“SizeRestored” ; END took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - ExecuteNonQuery: CREATE TEMPORARY TRIGGER “UpdateTotalStats_FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” AFTER UPDATE ON “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” BEGIN UPDATE “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” SET “FilesFullyRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FilesFullyRestored” + (CASE WHEN NEW.“BlocksRestored” = NEW.“TotalBlocks” THEN 1 ELSE 0 END) - (CASE WHEN OLD.“BlocksRestored” = OLD.“TotalBlocks” THEN 1 ELSE 0 END) , “FilesPartiallyRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FilesPartiallyRestored” + (CASE WHEN NEW.“BlocksRestored” BETWEEN 1 AND NEW.“TotalBlocks” - 1 THEN 1 ELSE 0 END) - (CASE WHEN OLD.“BlocksRestored” BETWEEN 1 AND OLD.“TotalBlocks” - 1 THEN 1 ELSE 0 END) , “BlocksRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“BlocksRestored” + NEW.“BlocksRestored” - OLD.“BlocksRestored” , “SizeRestored” = “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“SizeRestored” + NEW.“SizeRestored” - OLD.“SizeRestored” ; END

  • Dec 1, 2019 8:24 AM: ExecuteNonQuery: CREATE TEMPORARY TRIGGER “TrackRestoredBlocks_Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” AFTER UPDATE OF “Restored” ON “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” WHEN OLD.“Restored” != NEW.“Restored” AND NEW.“Metadata” = 0 BEGIN UPDATE “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” SET “BlocksRestored” = “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“BlocksRestored” + (NEW.“Restored” - OLD.“Restored”) , “SizeRestored” = “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“SizeRestored” + ((NEW.“Restored” - OLD.“Restored”) * NEW.Size) WHERE “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FileId” = NEW.“FileID” ; END took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - ExecuteNonQuery: CREATE TEMPORARY TRIGGER “TrackRestoredBlocks_Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” AFTER UPDATE OF “Restored” ON “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” WHEN OLD.“Restored” != NEW.“Restored” AND NEW.“Metadata” = 0 BEGIN UPDATE “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” SET “BlocksRestored” = “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“BlocksRestored” + (NEW.“Restored” - OLD.“Restored”) , “SizeRestored” = “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“SizeRestored” + ((NEW.“Restored” - OLD.“Restored”) * NEW.Size) WHERE “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A”.“FileId” = NEW.“FileID” ; END

  • Dec 1, 2019 8:24 AM: ExecuteNonQuery: INSERT INTO “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” ( “TotalFiles”, “TotalBlocks”, “TotalSize” , “FilesFullyRestored”, “FilesPartiallyRestored”, “BlocksRestored”, “SizeRestored” ) SELECT IFNULL(COUNT(“P”.“FileId”), 0), IFNULL(SUM(“P”.“TotalBlocks”), 0), IFNULL(SUM(“P”.“TotalSize”), 0) , IFNULL(COUNT(CASE WHEN “P”.“BlocksRestored” = “P”.“TotalBlocks” THEN 1 ELSE NULL END), 0) , IFNULL(COUNT(CASE WHEN “P”.“BlocksRestored” BETWEEN 1 AND “P”.“TotalBlocks” - 1 THEN 1 ELSE NULL END), 0) , IFNULL(SUM(“P”.“BlocksRestored”), 0), IFNULL(SUM(“P”.“SizeRestored”), 0) FROM “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” “P” took 0:00:00:00.000

  • Dec 1, 2019 8:24 AM: Starting - ExecuteNonQuery: INSERT INTO “TotalProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” ( “TotalFiles”, “TotalBlocks”, “TotalSize” , “FilesFullyRestored”, “FilesPartiallyRestored”, “BlocksRestored”, “SizeRestored” ) SELECT IFNULL(COUNT(“P”.“FileId”), 0), IFNULL(SUM(“P”.“TotalBlocks”), 0), IFNULL(SUM(“P”.“TotalSize”), 0) , IFNULL(COUNT(CASE WHEN “P”.“BlocksRestored” = “P”.“TotalBlocks” THEN 1 ELSE NULL END), 0) , IFNULL(COUNT(CASE WHEN “P”.“BlocksRestored” BETWEEN 1 AND “P”.“TotalBlocks” - 1 THEN 1 ELSE NULL END), 0) , IFNULL(SUM(“P”.“BlocksRestored”), 0), IFNULL(SUM(“P”.“SizeRestored”), 0) FROM “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” “P”

  • Dec 1, 2019 8:24 AM: ExecuteNonQuery: INSERT INTO “FileProgress-B99D6C44AAA84841A0DFD65F8FE4BC4A” (“FileId”, “TotalBlocks”, “TotalSize”, “BlocksRestored”, “SizeRestored”) SELECT “F”.“ID”, IFNULL(COUNT(“B”.“ID”), 0), IFNULL(SUM(“B”.“Size”), 0) , IFNULL(COUNT(CASE “B”.“Restored” WHEN 1 THEN “B”.“ID” ELSE NULL END), 0) , IFNULL(SUM(CASE “B”.“Restored” WHEN 1 THEN “B”.“Size” ELSE 0 END), 0) FROM “Fileset-5A7A6131EF8B684FA75D571A2EF91A2E” “F” LEFT JOIN “Blocks-5A7A6131EF8B684FA75D571A2EF91A2E” “B” ON “B”.“FileID” = “F”.“ID” WHERE “B”.“Metadata” IS NOT 1 GROUP BY “F”.“ID” took 0:00:00:00.000

Welcome to the forum @jmm_73

Exactly the same, including SFTP (if not, what is your destination type)? Always, or only intermittently? There will also by default be file downloads for actions like verifying backend files and compacting files.
Did your restore (like original report) somehow actually restore files successfully despite looking stuck?

I thought that this was happening/freezing, but then I opened the logs as suggested by @JonMikeIV, and found out that duplicati was in the process of restoring attributes (ownership, permissions), and it did finally finish, with a perfect restoration.