- - Lower memory use, more optimal transfer of data over the socket,
- and lower CPU usage (see the INTERNAL section for details).
-
- - The RSYNC_PROXY environment variable can now contain a
- "USER:PASS@" prefix before the "HOST:PORT" information.
- (Bardur Arantsson)
-
- - The --progress output now mentions how far along in the transfer
- we are, including both a count of files transferred and a
- percentage of the total file-count that we've processed. It also
- shows better current-rate-of-transfer and remaining-transfer-time
- values.
-
- - Documentation changes now attempt to describe some often mis-
- understood features more clearly.
-
- BUG FIXES:
-
- - When -x (--one-file-system) is combined with -L (--copy-links) or
- --copy-unsafe-links, no symlinked files are skipped, even if the
- referent file is on a different filesystem.
-
- - The --link-dest code now works properly for a non-root user when
- (1) the UIDs of the source and destination differ and -o was
- specified, or (2) when the group of the source can't be used on
- the destination and -g was specified.
-
- - Fixed a bug in the handling of -H (hard-links) that might cause
- the expanded PATH/NAME value of the current item to get
- overwritten (due to an expanded-name caching bug).
-
- - We now reset the "new data has been sent" flag at the start of
- each file we send. This makes sure that an interrupted transfer
- with the --partial option set doesn't keep a shorter temp file
- than the current basis file when no new data has been transfered
- over the wire for that file.
-
- - Fixed a byte-order problem in --batch-mode on big-endian machines.
- (Jay Fenlason)
-
- - When using --cvs-exclude, the exclude items we get from a
- per-directory's .cvsignore file once again only affect that one
- directory (not all following directories too). The items are also
- now properly word-split and parsed without any +/- prefix parsing.
-
- - When specifying the USER@HOST: prefix for a file, the USER part
- can now contain an '@', if needed (i.e. the last '@' is used to
- find the HOST, not the first).
-
- - Fixed some bugs in the handling of group IDs for non-root users:
- (1) It properly handles a group that the sender didn't have a name
- for (it would previously skip changing the group on any files in
- that group). (2) If --numeric-ids is used, rsync no longer
- attempts to set groups that the user doesn't have the permission
- to set.
-
- - Fixed the "refuse options" setting in the rsyncd.conf file.
-
- - Improved the -x (--one-file-system) flag's handling of any mount-
- point directories we encounter. It is both more optimal (in that
- it no longer does a useless scan of the contents of the mount-
- point dirs) and also fixes a bug where a remapped mount of the
- original filesystem could get discovered in a subdir we should be
- ignoring.
-
- - Rsync no longer discards a double-slash at the start of a filename
- when trying to open the file. It also no longer constructs names
- that start with a double slash (unless the user supplied them).
-
- - Path-specifying options to a daemon should now work the same with
- or without chroot turned on. Previously, such a option (such as
- --link-dest) would get its absolute path munged into a relative
- one if chroot was not on, making that setting fairly useless.
- Rsync now transforms the path into one that is based on the
- module's base dir when chroot is not enabled.
-
- - Fixed a compatibility problem interacting with older rsync
- versions that might send us an empty --suffix value without
- telling us that --backup-dir was specified.
-
- - The "hosts allow" option for a daemon-over-remote-shell process
- now has improved support for IPv6 addresses and a fix for systems
- that have a length field in their socket structs.
-
- - Fixed the ability to request an empty backup --suffix when sending
- files to an rsync daemon.
+ - A new incremental-recursion algorithm is now used when rsync is talking
+ to another 3.0.0 version. This starts the transfer going more quickly
+ (before all the files have been found), and requires much less memory.
+ See the --recursive option in the manpage for some restrictions.
+
+ - The default --delete algorithm is now --delete-during when talking to a
+ 3.x rsync. This is a faster scan than using --delete-before (which is
+ the default when talking to older rsync versions), and is compatible with
+ the new incremental recursion mode.
+
+ - Added the --delete-delay option, which is a more efficient way to delete
+ files at the end of the transfer without needing a separate delete pass.
+
+ - Added the --acls (-A) option to preserve Access Control Lists. This is
+ an improved version of the prior patch that was available. (If you need
+ to have backward compatibility with old, patched versions, the new
+ acls.diff patch that will add that.)
+
+ - Added the --xattrs (-X) option to preserver extended attributes. This is
+ an improved version of the prior patch that was available. (If you need
+ to have backward compatibility with old, patched versions, the new
+ xattrs.diff patch that will add that.)
+
+ - Added the --fake-super option that allows a non-super user to preserve
+ all attributes of a file by using a special extended-attribute idiom.
+ There is also an analogous "fake super" option for an rsync daemon.
+
+ - Added the --iconv option, which allows rsync to convert filenames from
+ one character-set to another during the transfer. The default is to make
+ this feature available as long as your system has iconv_open(). If
+ compilation fails, specify --disable-iconv to configure and rebuild. If
+ you want rsync to perform character-set conversions by default, you can
+ specify --enable-iconv=CONVERT_STRING with the default value for the
+ --iconv option that you wish to use. For example, --enable-iconv=. is a
+ good choice. See the rsync man page for an explanation of the --iconv
+ option's settings.
+
+ - You may specify --max-delete=0 to a 3.0.0 client as long as the receiving
+ side is at least version 3.0.0. This means that you can pull from an
+ older rsync with this option, but pushing to an older rsync will generate
+ an error. *Be sure to never specify a 0 value to an older rsync client,
+ or it will be silently ignored.*
+
+ - The --hard-link option now uses less memory on both the sending and
+ receiving side for all protocol versions. For protocol 30, the use of a
+ hashtable on the sending side allows us to more efficiently convey to the
+ receiver what files are linked together. This reduces the amount of data
+ sent over the socket by a considerable margin (rather than adding more
+ data), and limits the in-memory storage of the device+inode information
+ to just the sending side for the new protocol 30, or to the receiving
+ side when speaking an older protocol (note that older rsync versions kept
+ the device+inode information on both sides).