Changed write file to cope with partial writes by looping
[rsync/rsync.git] / rsync.yo
index e257eff..5faa561 100644 (file)
--- a/rsync.yo
+++ b/rsync.yo
@@ -507,8 +507,13 @@ the source and target are on the local machine.
 dit(bf(--no-whole-file)) Turn off --whole-file, for use when it is the
 default.
 
-dit(bf(-p, --perms)) This option causes rsync to update the remote
-permissions to be the same as the local permissions.
+dit(bf(-p, --perms)) This option causes rsync to set the destination
+permissions to be the same as the source permissions.
+
+Without this option, each new file gets its permissions set based on the
+source file's permissions and the umask at the receiving end, while all
+other files (including updated files) retain their existing permissions
+(which is the same behavior as other file-copy utilities, such as cp).
 
 dit(bf(-o, --owner)) This option causes rsync to set the owner of the
 destination file to be the same as the source file.  On most systems,
@@ -651,7 +656,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 +669,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
@@ -734,6 +739,8 @@ dit(bf(--link-dest=DIR)) This option behaves like bf(--compare-dest) but
 also will create hard links from em(DIR) to the destination directory for
 unchanged files.  Files with changed ownership or permissions will not be
 linked.
+Like bf(--compare-dest) if DIR is a relative path, it is relative
+to the destination directory.
 
 dit(bf(-z, --compress)) With this option, rsync compresses any data from
 the files that it sends to the destination machine.  This
@@ -871,6 +878,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/include 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 +895,18 @@ 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
+  transferred 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.
@@ -900,11 +918,11 @@ itemize(
   it() if the pattern includes a double asterisk "**" then all wildcards in
   the pattern will match slashes, otherwise they will stop at slashes.
 
-  it() if the pattern contains a / (not counting a trailing /) then it
-  is matched against the full filename, including any leading
-  directory. If the pattern doesn't contain a / then it is matched
-  only against the final component of the filename.  Again, remember
-  that the algorithm is applied recursively so "full filename" can 
+  it() if the pattern contains a / (not counting a trailing /) or a "**"
+  then it is matched against the full filename, including any leading
+  directory. If the pattern doesn't contain a / or a "**", then it is
+  matched only against the final component of the filename.  Again,
+  remember that the algorithm is applied recursively so "full filename" can
   actually be any portion of a path.
 
   it() if the pattern starts with "+ " (a plus followed by a space)
@@ -919,8 +937,9 @@ itemize(
   include/exclude list is reset, removing all previously defined patterns.
 )
 
-The +/- rules are most useful in exclude lists, allowing you to have a
-single exclude list that contains both include and exclude options.
+The +/- rules are most useful in a list that was read from a file, allowing
+you to have a single exclude list that contains both include and exclude
+options.
 
 If you end an exclude list with --exclude '*', note that since the
 algorithm is applied recursively that unless you explicitly include