Bug 10343 - rsync --exclude '*' --include '*' doesn't work as documented
Summary: rsync --exclude '*' --include '*' doesn't work as documented
Status: CLOSED RAWHIDE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: rsync (Show other bugs)
(Show other bugs)
Version: 6.0
Hardware: All Linux
medium
medium
Target Milestone: ---
Assignee: Bill Nottingham
QA Contact:
URL:
Whiteboard:
Keywords:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2000-03-25 05:34 UTC by Steve Coile
Modified: 2014-03-17 02:13 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2000-04-05 20:11:40 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

Description Steve Coile 2000-03-25 05:34:41 UTC
According to the rsync(1) man page (or my interpretation of it), the
following two should be equivalent:

	rsync
	rsync --exclude '*' --include '*'

However, they are not.  In fact, the "--exclude '*'" seems to dominate all
"--include" options, such that once everything is excluded, nothing can
then be included.  This is in direct contradition with the documentation,
which clearly states (WRT "--include"): "This option tells rsync to not
exclude the specified pattern of filenames."  The example uses of
"--exclude" and "--include" given in the man page also do not work.

Using rsync-2.3.1-1.

Comment 1 Steve Coile 2000-03-25 05:41:59 UTC
Ugh.  Make this a documentation enhancement request.  Turns out that the
ordering is significant.  Specifically, if you want to include only specific
files and exclude all else, you need to identify the files to include (using
"--include") *first*, *then* exclude everything else.  Thus, the following are
equivalent:

	rsync
	rsync --include '*' --exclude '*'

but the following are not:

	rsync --include '*' --exclude '*'   # excludes nothing
	rsync --exclude '*' --include '*'   # excludes everything

The documentation should make this more clear.

Comment 2 Bill Nottingham 2000-04-05 20:11:59 UTC
The current (2.4.2) documentation says:

      o      --include  "*/" --include "*.c" --exclude "*" would
              include all directories and C source files

and, also:

       rsync builds a ordered list of include/exclude options  as
       specified  on the command line. When a filename is encoun-
       tered, rsync checks the name against each  exclude/include
       pattern  in  turn. The first matching pattern is acted on.

This seems to imply that patterns are checked in the order
on the command line.


Note You need to log in before you can comment on or make changes to this bug.