Rsync filter tester

Test ordered include and exclude rules against a sample file tree. See which rule decides each path and which descendants cannot be visited.

Unmatched paths

Test paths from the transfer root

Paste + include rules and - exclude rules in the order you intend to use them. A standalone ! clears the rules above it. Supply unique relative paths, one per line, and mark directories with a trailing slash. The model accepts up to 1,000 rules and 1,000 paths; absolute paths, duplicate paths, character classes, and unsupported rule modifiers are rejected.

Make the path list representative of the transfer, including the directories leading to the files you care about. The leading slash in an anchored filter refers to this transfer root, not your machine's filesystem root.

Choose what happens to an unmatched path: include or exclude. The first matching rule decides each visited path. Put specific exceptions before a broader rule that would catch them.

An excluded parent stops traversal. Its descendants are unvisited, even if a later include rule would match a child. This also happens when the unmatched default excludes the parent. If a desired file is unvisited, inspect its ancestors before changing the file's own rule.

Invalid rules or paths leave the editors available without a trace. Editing clears the previous result; test again after reordering a rule. Copying the report does not run a transfer.

The tool evaluates these rules and paths in browser memory. It does not send them to a host or server or save them in a URL or browser storage.

Rsync pattern scope

Pattern scope and rule order solve different problems. Scope determines whether a pattern matches a path; order determines whether that match gets a chance to decide it. The rsync manual documents the full filter language. This tester implements only the subset below and the ordered include, exclude, and clear rules.

PatternScopeExample
*.confA basename at any depthCan match app.conf or etc/app.conf
/etc/*.confAnchored at the transfer root; * does not cross a slashCan match etc/app.conf, not etc/app/site.conf
**Can cross directory separators/logs/** can match paths below logs/ at several depths
?One non-slash characterpart?.txt can match part1.txt, not part12.txt
Trailing /Directories onlycache/ matches a directory named cache

Verify the real transfer

The supplied tree is the entire world this model sees. It does not inspect symlinks, permissions, shell expansion, daemon modules, delete behavior, or per-directory merge files. An included path here is not proof that the real transfer can read or copy it.

Use rsync --dry-run with the intended source root, destination, options, and installed version before copying. Check the command's own output as well as this trace, especially when changing traversal or deletion options.