duplicati/duplicati · error · FolderMissingException
Folder not found: {m_path}
Error message
Folder not found: {m_path} What it means
Thrown in Filejump.PutAsync when the configured destination folder path m_path is non-empty but GetTargetPathIdAsync could not resolve it to a folder id. It is a FolderMissingException, which Duplicati treats as a retry-stoppable, user-correctable backend error (the framework can prompt to re-create the folder). It fires before any upload attempt, so no data is transferred.
Source
Thrown at Duplicati/Library/Backend/Filejump/Filejump.cs:248
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
return m_client = client;
}
///<inheritdoc/>
public async Task PutAsync(string remotename, string filename, CancellationToken token)
{
using var fs = File.OpenRead(filename);
await PutAsync(remotename, fs, token);
}
///<inheritdoc/>
public async Task PutAsync(string remotename, Stream stream, CancellationToken token)
{
var client = await GetClient(token);
var folderId = await GetTargetPathIdAsync(m_path, token);
if (folderId == null && !string.IsNullOrWhiteSpace(m_path))
throw new FolderMissingException($"Folder not found: {m_path}");
// Filejump does not support overwrite, so we need to delete the previous version if it exists
var cache = await GetCacheTable(token);
cache.TryGetValue(remotename, out var _);
await DeleteAsync(remotename, token);
var content = new MultipartFormDataContent();
using var timeoutStream = stream.ObserveReadTimeout(m_timeoutOptions.ReadWriteTimeout);
var fileContent = new StreamContent(timeoutStream);
content.Add(fileContent, "file", remotename);
if (folderId.HasValue)
content.Add(new StringContent(folderId.Value.ToString()), "parentId");
using var request = new HttpRequestMessage(HttpMethod.Post, "uploads") { Content = content };
request.Headers.Add("Accept", "application/json");
using var response = await client.SendAsync(request, token);
await EnsureSuccessStatusCode(response);
View on GitHub (pinned to 3f348be3e3)
Solutions
- Open the Filejump web UI and confirm the configured destination folder path exists exactly as typed in the backup destination URL.
- Re-run the destination test/connection wizard so Duplicati re-validates the path.
- If the folder was deleted, recreate it at the same path or update the backup destination to point at an existing folder.
- Ensure the same Filejump account is used; if credentials changed, re-enter them so the path resolves against the right workspace.
Defensive patterns
Strategy: validation
Validate before calling
// Pre-flight: resolve the folder before the first PutAsync
var folderId = await GetTargetPathIdAsync(m_path, token);
if (folderId == null && !string.IsNullOrWhiteSpace(m_path))
throw new FolderMissingException($"Folder not found: {m_path}"); Try / catch
try { await PutAsync(remotename, filename, token); }
catch (FolderMissingException) { /* re-run destination test, recreate folder, then retry */ } Prevention
- Run Duplicati's destination test after changing the configured path.
- Keep the destination folder name stable; avoid renaming it in the web UI.
- Use the same Filejump account across runs to keep the folder resolvable.
When it happens
Trigger: PutAsync(stream) is called, GetClient succeeds, GetTargetPathIdAsync(m_path) returns null, and m_path is not null/whitespace. This happens when the path does not exist on the Filejump side and the listing/traversal in GetTargetPathIdAsync found no matching folder.
Common situations: The destination folder was deleted or renamed in the Filejump web UI after the backup destination was configured. The configured path has a typo or a leading/trailing slash mismatch. A different Filejump account is now logged in, so the previously existing folder is gone. The folder lives under a parent that no longer exists, so traversal stops early.
Related errors
- Folder not found: {part}
- The backend does not support folder operations
- AzureNoAccountName
- AzureNoAccessKeyOrSasToken
- File not found: {remotename}
AI-assisted analysis of duplicati/duplicati@3f348be3e3 (2026-08-13).
Data as JSON: /api/errors/34c705ffa8d66784.
Report an issue: GitHub.