Duplicati Filters and Wildcards: Why Your Source Drives Go Missing and How to Fix It
The filter rule that silently drops your source drives
If you added an include filter in Duplicati to grab specific files and then discovered that other drives you’d already selected stopped backing up, there’s one rule behind it: when every active filter rule is an include rule, Duplicati automatically treats everything else as excluded.
That single behaviour explains a surprisingly large number of “my backup stopped working” posts. Add one include filter for a handful of .desktop files, and your entire Home drive quietly falls out of the next job.
Source paths and filters are two separate things
Duplicati draws a firm line between source paths and filter rules. Source paths tell the job which folders to recurse into. Filters tell it what to keep or skip once it’s already inside those folders. They don’t substitute for each other.
A filter like /usr/share/applications/wine*.desktop does not instruct Duplicati to open /usr/share/applications/ and search around. You still need to declare that folder as a source — in the file tree or the source path field. The filter then refines what gets picked up within that already-declared source.
The “no folder selected” error makes complete sense once you see this. The filter pointed at a path, but no source path included it, so Duplicati had nowhere to look.
Why wildcards don’t work in the path field
Typing /usr/share/applications/wine*.desktop into the source path box won’t work. Duplicati treats that field as a literal filesystem path — it either finds a folder at that exact location or it doesn’t. Wildcards are interpreted by the filter engine, not the path resolver. So wine*.desktop in a path string just silently matches nothing.
The correct approach is to split the work. Add the parent folder (/usr/share/applications/) as a source path, then set a filter like +/usr/share/applications/wine*.desktop to pick up only the files you want.
The implicit exclude when using only include filters
By default, Duplicati includes everything inside a source folder unless a rule says otherwise. That default flips when you use only include rules.
The documentation states it directly: “In the special case that all rules are include rules, Duplicati assumes that all other files and folders are meant to be excluded.”
So the moment you define even one +include filter without any accompanying -exclude filters, Duplicati switches modes. Other source paths you had already selected — Home, Data, whatever — will still be traversed, but nothing inside them matches an include rule, so they come back empty. You’ll see permission warnings (like those “lost+found” messages) but no actual file data from those drives.
The fix: one include filter per source you want
Once you’re in include-only mode, every source that should be backed up needs its own include rule. Here’s the working pattern:
- Source path:
/home/— Filter:+/home/ - Source path:
/Data_Linux/— Filter:+/Data_Linux/ - Source path:
/usr/share/applications/— Filter:+/usr/share/applications/wine*.desktop
The trailing slash on folder filter rules matters. Duplicati represents directories internally with a trailing path separator, so +/home/ matches the folder itself and lets recursion proceed. Without it, the rule may not fire at the right evaluation point.
Filter order: first match wins, always
Duplicati evaluates filter rules in the order you define them and stops at the first match. A folder-level exclude near the top of the list blocks all children from evaluation, even if a later include rule would otherwise catch them.
Put specific rules before broad ones. If you need to include a subfolder while excluding its parent, the include must come first. Test with a small dry run before scheduling — this catches ordering mistakes before they silently hollow out a backup job.
Wildcard behaviour differs from standard glob
Duplicati’s * wildcard matches path separators. In most shell glob implementations, * stops at a /. In Duplicati’s filter engine it doesn’t, so /home/*/documents will match paths at any depth fitting that shape.
The ? character matches exactly one character and does not cross separators — closer to standard glob behaviour.
For patterns that glob wildcards can’t express cleanly, wrap a .NET-style regex in square brackets: [.*/wine[^/]+\.desktop]. More precise, and useful when a simple asterisk isn’t selective enough.
Sources
