From d1cce1dd9209f5fde2b58f798bf8eea8cf82f99f Mon Sep 17 00:00:00 2001 From: "J.W. Schultz" Date: Mon, 21 Apr 2003 08:44:25 +0000 Subject: [PATCH] Make explicit that (in|ex)clude patterns are for relative paths and that the leading / is the equivalent of ^ in regex. --- rsync.yo | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/rsync.yo b/rsync.yo index e257eff3..5360d43b 100644 --- a/rsync.yo +++ b/rsync.yo @@ -651,7 +651,7 @@ useful in combination with a recursive transfer. You may use as many --exclude options on the command line as you like to build up the list of files to exclude. -See the section on exclude patterns for information on the syntax of +See the EXCLUDE PATTERNS section for information on the syntax of this option. dit(bf(--exclude-from=FILE)) This option is similar to the --exclude @@ -664,7 +664,7 @@ dit(bf(--include=PATTERN)) This option tells rsync to not exclude the specified pattern of filenames. This is useful as it allows you to build up quite complex exclude/include rules. -See the section of exclude patterns for information on the syntax of +See the EXCLUDE PATTERNS section for information on the syntax of this option. dit(bf(--include-from=FILE)) This specifies a list of include patterns @@ -871,6 +871,12 @@ skipped. If it is an include pattern then that filename is not skipped. If no matching include/exclude pattern is found then the filename is not skipped. +The filenames matched against the exclude/incldue patterns are +relative to the base directories so patterns should not +include the path elements to those base directories. The +only way in which a pattern will match the absolute path of +a file or directory is if the base path is the root directory. + Note that when used with -r (which is implied by -a), every subcomponent of every path is visited from top down, so include/exclude patterns get applied recursively to each subcomponent. @@ -882,13 +888,17 @@ each. To add multiple patterns use the --include-from and The patterns can take several forms. The rules are: itemize( + it() if the pattern starts with a / then it is matched against the start of the filename, otherwise it is matched against the end of - the filename. Thus "/foo" would match a file called "foo" at the base of - the tree. On the other hand, "foo" would match any file called "foo" + the filename. + This is the equivalent of a leading ^ in regular expressions. + Thus "/foo" would match a file called "foo" at the base of the tree. + On the other hand, "foo" would match any file called "foo" anywhere in the tree because the algorithm is applied recursively from top down; it behaves as if each path component gets a turn at being the end of the file name. + The leading / does not make the pattern an absolute pathname. it() if the pattern ends with a / then it will only match a directory, not a file, link or device. -- 2.34.1