Protocol: 31 (unchanged)
-
Avoid a potential out-of-bounds read in daemon mode if argc can be made to become 0.
-
Fix the default list of skip-compress files for non-daemon transfers.
-
Fix xattr filter rules losing an 'x' attribute in a non-local transfer.
-
Avoid an error when a check for a potential fuzzy file happens to reference a directory.
-
Make the atomic-rsync helper script have a more consistent error-exit.
-
Make sure that a signal handler calls
_exit()
instead of exit(). -
Various zlib fixes, including security fixes for CVE-2016-9843, CVE-2016-9842, CVE-2016-9841, and CVE-2016-9840.
-
Fixed an issue with
--remove-source-files
not removing a source symlink when combined with--copy-links
. -
Fixed a bug where the daemon would fail to write early fatal error messages to the client, such as refused or unknown command-line options.
-
Fixed the block-size validation logic when dealing with older protocols.
-
Some rrsync fixes and enhancements to handle the latest options.
-
Fixed a problem with the
--link-dest
|--copy-dest
code when--xattrs
was specified along with multiple alternate-destination directories (it could possibly choose a bad file match while trying to find a better xattr match). -
Fixed a couple bugs in the handling of files with the
--sparse
option. -
Fixed a bug in the writing of the batch.sh file (w/--write-batch) when the source & destination args were not last on the command-line.
-
Avoid a hang when an overabundance of messages clogs up all the I/O buffers.
-
Fixed a mismatch in the RSYNC_PID values when running both a
pre-xfer exec
and apost-xfer exec
. -
Fixed a crash in the
--iconv
code. -
Fixed a rare crash in the popt_unalias() code.
-
Various checksum enhancements, including the optional use of openssl's MD4 & MD5 checksum algorithms, some x86-64 optimizations for the rolling checksum, some x86-64 optimizations for the (non-openssl) MD5 checksum, the addition of xxhash checksum support, and a negotiation heuristic that ensures that it is easier to add new checksum algorithms in the future. Currently the x86-64 optimizations require the use of the
--enable-simd
flag to configure, but they will probably be enabled by default in the near future. The environment variableRSYNC_CHECKSUM_LIST
can be used to customize the preference order of the negotiation. -
Various compression enhancements, including the addition of zstd and lz4 compression algorithms and a negotiation heuristic that picks the best compression option supported by both sides. The environment variable
RSYNC_COMPRESS_LIST
can be used to customize the preference order of the heuristic when speaking to another rsync 3.2.0 version. -
Added a --debug=NSTR option that outputs details of the new negotiation strings (for checksums and compression). The first level just outputs the result of each negotiation on the client, level 2 outputs the values of the strings that were sent to and received from the server, and level 3 outputs all those values on the server side too.
-
The --debug=OPTS command-line option is no longer auto-forwarded to the remote rsync which allows for the client and server to have different levels of debug specified. This also allows for newer debug options to be specified, such as using --debug=NSTR to see the negotiated hash result, without having the command fail if the server version is too old to handle that debug item. Use -M--debug=OPTS to send the options to the remote side.
-
Added the
--atimes
option based on the long-standing patch (just with some fixes that the patch has been needing). -
Added
--open-noatime
option to open files usingO_NOATIME
. -
Added the
--write-devices
option based on the long-standing patch. -
Added openssl support to the rsync-ssl script, which is now installed by default. This script was unified with the stunnel-rsync helper script to simplify packaging.
-
Rsync was enhanced to set the
RSYNC_PORT
environment variable when running a daemon-over-rsh script. Its value is the user-specified port number (set via--port
or an rsync:// URL) or 0 if the user didn't override the port. -
Added the
haproxy header
daemon parameter that allows your rsyncd to know the real remote IP when it is being proxied. -
Added negated matching to the daemon's
refuse options
setting by using match strings that start with a!
(such as!compress*
). -
Added the
early exec
daemon parameter that runs a script before the transfer parameters are known, allowing some early setup based on module name. -
Added status output in response to a signal (via both SIGINFO & SIGVTALRM).
-
Added a
--copy-as=USER
option to give some extra security to root-run rsync commands into/from untrusted directories (such as backups and restores). -
When resuming the transfer of a file in the
--partial-dir
, rsync will now update that partial file in-place instead of creating yet another tmp file copy. This requires both sender & receiver to be at least v3.2.0. -
Added support for
RSYNC_SHELL
&RSYNC_NO_XFER_EXEC
environment variables that affect the pre-xfer exec and post-xfer exec rsync daemon options. -
Optimize the
--fuzzy
--fuzzy
heuristic to avoid the fuzzy directory scan until all other basis-file options are exhausted (such as--link-dest
). -
Have a daemon that is logging include the normal-exit sent/received stats even when the transfer exited with an error.
-
The daemon now locks its pid file (when configured to use one) so that it will not fail to start when the file exists and it is unlocked.
-
Various man page improvements.
-
Made -V the short option for --version.
-
Add installed binary: /usr/bin/rsync-sll
-
Add installed man page: /usr/man/man1/rsync-ssl.1
-
The rsync-ssl script wants to run either openssl or stunnel4, so consider adding a dependency for openssl (though it's probably fine to just let it complain about being unable to find either program and let the user decide if they want to install one or the other).
-
If you packaged rsync + rsync-ssl + rsync-ssl-daemon as separate packages, the rsync-ssl package is now gone (along with its install-ssl-client make target -- rsync-ssl should be considered to be mainstream now that Samba requires SSL for its rsync daemon).
-
Add build dependency for liblz4-dev, libxxhash-dev, libzstd-dev, and libssl-dev. These development libraries will give rsync extra compression algorithms, extra checksum algorithms, and allow use of openssl's crypto lib for MD4/MD5 checksums.
-
Add build dependency for g++ to enable the SIMD checksum optimizations.
-
Add build dependency for either python3-cmarkcfm or python3-commonmark to allow for patching of man pages or building a git release. Note that cmarkcfm is faster than commonmark, but they generate the same data.
-
Remove yodl build dependency (if you listed it).
-
Silenced some annoying warnings about major()|minor() due to the autoconf include-file check not being smart enough.
-
Converted the man pages from yodl to markdown. They are now processed via a simple python3 script using the cmarkgfm OR commonmark library. This should make it easier for packaging rsync, since yodl has gotten obscure.
-
Improved some configure checks to work better with strict C99 compilers.
-
The
--debug=FOO
options are no longer auto-forwarded to the server side, allowing more control over what is output & the ability to request debug data from divergent rsync versions. -
Some perl scripts were recoded into awk and python3.
-
Some defines in byteorder.h were changed into static inline functions that will help to ensure that the args don't get evaluated multiple times on
careful alignment
hosts. -
Some code typos were fixed (as pointed out by a Fossies run).