{"record":{"id":"3682fbd72f1b5ff3","repo":"duplicati/duplicati","slug":"file-not-found-remotename-3682fb","errorCode":null,"errorMessage":"File not found: {remotename}","messagePattern":"File not found: (.+?)","errorType":"exception","errorClass":"FileMissingException","httpStatus":null,"severity":"warning","filePath":"Duplicati/Library/Backend/Filejump/Filejump.cs","lineNumber":293,"sourceCode":"\r\n            cache[result.FileEntry.Name] = new(result.FileEntry.Id, result.FileEntry.Url);\r\n        }\r\n\r\n        ///<inheritdoc/>\r\n        public async Task GetAsync(string remotename, string filename, CancellationToken token)\r\n        {\r\n            using var fs = new FileStream(filename, FileMode.Create, FileAccess.Write);\r\n            await GetAsync(remotename, fs, token);\r\n        }\r\n\r\n        ///<inheritdoc/>\r\n        public async Task GetAsync(string remotename, Stream stream, CancellationToken token)\r\n        {\r\n            var client = await GetClient(token);\r\n\r\n            var entry = await FindFileEntryIdAsync(remotename, token);\r\n            if (entry == null)\r\n                throw new FileMissingException($\"File not found: {remotename}\");\r\n\r\n            var url = entry.Url;\r\n            if (!url.StartsWith(\"/\") && !url.StartsWith(\"http\", StringComparison.OrdinalIgnoreCase))\r\n                url = \"/\" + url;\r\n\r\n            var response = await Utility.Utility.WithTimeout(m_timeoutOptions.ShortTimeout, token,\r\n                ct => client.SendAsync(new HttpRequestMessage(HttpMethod.Get, url), HttpCompletionOption.ResponseHeadersRead, ct));\r\n            response.EnsureSuccessStatusCode();\r\n            using var timeoutStream = stream.ObserveWriteTimeout(m_timeoutOptions.ReadWriteTimeout);\r\n            await response.Content.CopyToAsync(timeoutStream, token);\r\n        }\r\n\r\n        /// <summary>\r\n        /// Parses the date time from the string returned by the API (ISO-8601 format).\r\n        /// </summary>\r\n        /// <param name=\"timestamp\">The timestamp to parse</param>\r\n        /// <returns>>The parsed date time</returns>\r\n        private static DateTime ParseDateTime(string timestamp)\r","sourceCodeStart":275,"sourceCodeEnd":311,"githubUrl":"https://github.com/duplicati/duplicati/blob/3f348be3e33f5d72d414e3ad55839c2ba34dda67/Duplicati/Library/Backend/Filejump/Filejump.cs#L275-L311","documentation":"Thrown in Filejump.GetAsync when FindFileEntryIdAsync(remotename) returns null. It is a FileMissingException, which Duplicati maps to a recoverable 'file not present' state rather than a hard fault. The lookup happens after GetClient succeeds and before any download bytes flow.","triggerScenarios":"A GET is requested for a remotename that is not present in the Filejump folder (neither in the cache table nor found by a fresh listing). The cache lookup and the on-server search both came back empty.","commonSituations":"The file was already deleted (e.g. a retention purge removed it). The remotename case or path does not match exactly (Filejump is case-sensitive). A previous upload failed silently so the file was never actually stored. Another tool/session deleted the file between list and get.","solutions":["List the remote folder to confirm whether the file exists and under what exact name/case.","If the file was legitimately removed, let Duplicati's missing-file handling proceed (it re-uploads on the next backup run).","Check for case mismatch between the local dbblock name and the remote entry; normalize naming if needed.","If the file should exist, re-run the backup upload step to recreate it."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { await backend.GetAsync(remotename, dest, token); }\ncatch (FileMissingException) { /* Duplicati recovers: re-upload on next run; optionally log */ }","preventionTips":["Keep remote and local names case-consistent.","Run periodic listed-only backups to sync Duplicati's view of remote files.","Avoid manually deleting files from the Filejump folder."],"tags":["filejump","download","missing-file","backend"],"backgroundTag":null,"analyzedSha":"3f348be3e33f5d72d414e3ad55839c2ba34dda67","analyzedAt":"2026-08-13T16:48:27.008Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}