Setup for 3.2.4dev.
[rsync.git] / NEWS.md
1 <a name="3.2.4"></a>
2
3 # NEWS for rsync 3.2.4 (UNRELEASED)
4
5 ## Changes in this version:
6
7 ### BUG FIXES:
8
9  - Use openssl's `-verify_hostname` option in the rsync-ssl script.
10
11  - Avoid a weird failure if you run a local copy with an `--rsh` option that
12    contained a `V`.
13
14 ------------------------------------------------------------------------------
15 <a name="3.2.3"></a>
16
17 # NEWS for rsync 3.2.3 (6 Aug 2020)
18
19 ## Changes in this version:
20
21 ### BUG FIXES:
22
23  - Fixed a bug in the xattr code that was freeing the wrong object when trying
24    to cleanup the xattr list.
25
26  - Fixed a bug in the xattr code that was not leaving room for the "rsync."
27    prefix in some instances where it needed to be added.
28
29  - Restored the ability to use `--bwlimit=0` to specify no bandwidth limit.  (It
30    was accidentally broken in 3.2.2.)
31
32  - Fix a bug when combining `--delete-missing-args` with `--no-implied-dirs` &
33    `-R` where rsync might create the destination path of a missing arg.  The
34    code also avoids some superfluous warnings for nested paths of removed args.
35
36  - Fixed an issue where hard-linked devices could cause the rdev_major value to
37    get out of sync between the sender and the receiver, which could cause a
38    device to get created with the wrong major value in its major,minor pair.
39
40  - Rsync now complains about a missing `--temp-dir` before starting any file
41    transfers.
42
43  - A completely empty source arg is now a fatal error.  This doesn't change
44    the handling of implied dot-dir args such as "localhost:" and such.
45
46 ### ENHANCEMENTS:
47
48  - Allow `--max-alloc=0` to specify no limit to the alloc sanity check.
49
50  - Allow `--block-size=SIZE` to specify the size using units (e.g. "100K").
51
52  - The name of the id-0 user & group are now sent to the receiver along with
53    the other user/group names in the transfer (instead of assuming that both
54    sides have the same id-0 names).
55
56  - Added the `--stop-after=MINS` and `--stop-at=DATE_TIME` options (with the
57    `--time-limit=MINS` option accepted as an alias for `--stop-after`).  This
58    is an enhanced version of the time-limit patch from the patches repo.
59
60  - Added the `name converter` daemon parameter to make it easier to convert
61    user & group names inside a chrooted daemon module.  This is based on the
62    nameconverter patch with some improvements, including a tweak to the request
63    protocol (so if you used this patch in the past, be sure to update your
64    converter script to use newlines instead of null chars).
65
66  - Added `--crtimes` (`-N`) option for preserving the file's create time (I
67    believe that this is macOS only at the moment).
68
69  - Added `--mkpath` option to tell rsync that it should create a non-existing
70    path component of the destination arg.
71
72  - Added `--stderr=errors|all|client` to replace the `--msgs2stderr` and
73    `--no-msgs2stderr` options (which are still accepted).  The default use of
74    stderr was changed to be `--stderr=errors` where all the processes that have
75    stderr available output directly to stderr, which should help error messages
76    get to the user more quickly, especially when doing a push (which includes
77    local copying).  This also allows rsync to exit quickly when a receiver
78    failure occurs, since rsync doesn't need to try to keep the connection alive
79    long enough for the fatal error to go from the receiver to the generator to
80    the sender.  The old default can be requested via `--stderr=client`.  Also
81    changed is that a non-default stderr mode is conveyed to the remote rsync
82    (using the older option names) instead of requiring the user to use
83    `--remote-option` (`-M`) to tell the remote rsync what to do.
84
85  - Added the ability to specify "@netgroup" names to the `hosts allow` and
86    `hosts deny` daemon parameters.  This is a finalized version of the
87    netgroup-auth patch from the patches repo.
88
89  - Rsync can now hard-link symlinks on FreeBSD due to it making ues of the
90    linkat() function when it is available.
91
92  - Output file+line info on out-of-memory & overflow errors while also avoiding
93    the output of alternate build-dir path info that is not useful to the user.
94
95  - Change configure to know that Cygwin supports Linux xattrs.
96
97  - Improved the testsuite on FreeBSD & Cygwin.
98
99  - Added some compatibility code for HPE NonStop platforms.
100
101  - Improved the INSTALL.md info.
102
103  - Added a few more suffixes to the default skip-compress list.
104
105  - Improved configure's error handling to notify about several issues at once
106    instead of one by one (for the newest optional features).
107
108 ### INTERNAL:
109
110  - Use a simpler overflow check idiom in a few spots.
111
112  - Use a C99 Flexible Array for a trailing variable-size filename in a struct
113    (with a fallback to the old 1-char string kluge for older compilers).
114
115 ------------------------------------------------------------------------------
116 <a name="3.2.2"></a>
117
118 # NEWS for rsync 3.2.2 (4 Jul 2020)
119
120 ## Changes in this version:
121
122 ### BUG FIXES:
123
124  - Avoid a crash when a daemon module enables `transfer logging` without
125    setting a `log format` value.
126
127  - Fixed installing rsync-ssl script from an alternate build dir.
128
129  - Fixed the updating of configure.sh from an alternate build dir.
130
131  - Apple requires the asm function name to begin with an underscore.
132
133  - Avoid a test failure in the daemon test when `--atimes` is disabled.
134
135 ### ENHANCEMENTS:
136
137  - Allow the server side to restrict checksum & compression choices via the
138    same environment variables the client uses.  The env vars can be divided
139    into "client list & server list" by the "`&`" char or the same list can
140    apply to both.
141
142  - Simplify how the negotiation environment variables apply when interacting
143    with an older rsync and also when a list contains only invalid names.
144
145  - Do not allow a negotiated checksum or compression choice of "none" unless
146    the user authorized it via an environment variable or command-line option.
147
148  - Added the `--max-alloc=SIZE` option to be able to override the memory
149    allocator's sanity-check limit.  It defaults to 1G (as before) but the error
150    message when exceeding it specifically mentions the new option so that you
151    can differentiate an out-of-memory error from a failure of this limit.  It
152    also allows you to specify the value via the RSYNC_MAX_ALLOC environment
153    variable.
154
155  - Add the "open atime" daemon parameter to allow a daemon to always enable or
156    disable the use of O_NOATIME (the default is to let the user control it).
157
158  - The default systemd config was changed to remove the `ProtectHome=on`
159    setting since rsync is often used to serve files in /home and /root and this
160    seemed a bit too strict.  Feel free to use `systemctl edit rsync` to add
161    that restriction (or maybe `ProtectHome=read-only`), if you like.  See the
162    3.2.0 NEWS for the other restrictions that were added compared to 3.1.3.
163
164  - The memory allocation functions now automatically check for a failure and
165    die when out of memory.  This eliminated some caller-side check-and-die
166    code and added some missing sanity-checking of allocations.
167
168  - Put optimizations into their own list in the `--version` output.
169
170  - Improved the man page a bit more.
171
172 ### PACKAGING RELATED:
173
174  - Prepared the checksum code for an upcoming xxHash release that provides new
175    XXH3 (64-bit) & XXH128 (128-bit) checksum routines.  These will not be
176    compiled into rsync until the xxhash v0.8.0 include files are installed on
177    the build host, and that release is a few weeks away at the time this was
178    written.  So, if it's now the future and you have packaged and installed
179    xxhash-0.8.0-devel, a fresh rebuild of rsync 3.2.2 will give you the new
180    checksum routines.  Just make sure that the new rsync package depends on
181    xxhash >= 0.8.0.
182
183 ### DEVELOPER RELATED:
184
185  - Moved the version number out of configure.ac into its own version.h file so
186    that we don't need to reconfigure just because the version number changes.
187
188  - Moved the daemon parameter list into daemon-parm.txt so that an awk script
189    can create the interrelated structs and accessors that loadparm.c needs.
190
191 ------------------------------------------------------------------------------
192 <a name="3.2.1"></a>
193
194 # NEWS for rsync 3.2.1 (22 Jun 2020)
195
196 ## Changes in this version:
197
198 ### BUG FIXES:
199
200  - Fixed a potential build issue with the MD5 assembly-language code by
201    removing some non-portable directives.
202
203  - Use the preprocessor with the asm file to ensure that if the code is
204    unneeded, it doesn't get built.
205
206  - Avoid the stack getting set to executable when including the asm code.
207
208  - Some improvements in the SIMD configure testing to try to avoid build
209    issues, such as avoiding a clang++ core dump when `-g` is combined with
210    `-O2`.  Note that clang++ is quite buggy in this area, and it does still
211    crash for some folks, so just use `--disable-simd` if you need to avoid
212    their buggy compiler (since the configure test is apparently not finding
213    all the compilers that will to crash and burn).
214
215  - Fixed an issue in the md2man script when building from an alternate dir.
216
217  - Disable `--atimes` on macOS (it apparently just ignores the atime change).
218
219 ### ENHANCEMENTS:
220
221  - The use of `--backup-dir=STR` now implies `--backup`.
222
223  - Added `--zl=NUM` as a short-hand for `--compress-level=NUM`.
224
225  - Added `--early-input=FILE` option that allows the client to send some
226    data to a daemon's (optional) "early exec" script on its stdin.
227
228  - Mention atimes in the capabilities list that `--version` outputs.
229
230  - Mention either "default protect-args" or "optional protect-args" in the
231    `--version` capabilities depending on how rsync was configured.
232
233  - Some info on optimizations is now elided from the `--version` capabilities
234    since they aren't really user-facing capabilities.  You can still see the
235    info (plus the status of a couple extra optimizations) by repeating the
236    `--version` option (e.g. `-VV`).
237
238  - Updated various URLs to be https instead of http.
239
240  - Some documentation improvements.
241
242 ### PACKAGING RELATED:
243
244  - If you had to use `--disable-simd` for 3.2.0, you might want to try removing
245    that and see if it will succeed or auto-disable.  Some buggy clang++
246    compilers are still not auto disabled, though.
247
248  - The MD5 asm code is now under its own configure flag (not shared with the
249    SIMD setting), so if you have any issues compiling it, re-run configure with
250    `--disable-asm`.
251
252  - Merged the OLDNEWS.md file into NEWS.md.
253
254 ------------------------------------------------------------------------------
255 <a name="3.2.0"></a>
256
257 # NEWS for rsync 3.2.0 (19 Jun 2020)
258
259 ## Changes in this version:
260
261 ### BUG FIXES:
262
263  - Avoid a potential out-of-bounds read in daemon mode if argc can be made to
264    become 0.
265
266  - Fix the default list of skip-compress files for non-daemon transfers.
267
268  - Fix xattr filter rules losing an 'x' attribute in a non-local transfer.
269
270  - Avoid an error when a check for a potential fuzzy file happens to reference
271    a directory.
272
273  - Make the atomic-rsync helper script have a more consistent error-exit.
274
275  - Make sure that a signal handler's use of exit_cleanup() calls `_exit()`
276    instead of exit().
277
278  - Various zlib fixes, including security fixes for CVE-2016-9843,
279    CVE-2016-9842, CVE-2016-9841, and CVE-2016-9840.
280
281  - Fixed an issue with `--remove-source-files` not removing a source symlink
282    when combined with `--copy-links`.
283
284  - Fixed a bug where the daemon would fail to write early fatal error messages
285    to the client, such as refused or unknown command-line options.
286
287  - Fixed the block-size validation logic when dealing with older protocols.
288
289  - Some rrsync fixes and enhancements to handle the latest options.
290
291  - Fixed a problem with the `--link-dest`|`--copy-dest` code when `--xattrs`
292    was specified along with multiple alternate-destination directories (it
293    could possibly choose a bad file match while trying to find a better xattr
294    match).
295
296  - Fixed a couple bugs in the handling of files with the `--sparse` option.
297
298  - Fixed a bug in the writing of the batch.sh file (w/`--write-batch`) when the
299    source & destination args were not last on the command-line.
300
301  - Avoid a hang when an overabundance of messages clogs up all the I/O buffers.
302
303  - Fixed a mismatch in the RSYNC_PID values put into the environment of
304    `pre-xfer exec` and a `post-xfer exec`.
305
306  - Fixed a crash in the `--iconv` code.
307
308  - Fixed a rare crash in the popt_unalias() code.
309
310 ### ENHANCEMENTS:
311
312  - The default systemd config was made stricter by default.  For instance,
313    `ProtectHome=on` (which hides content in /root and /home/USER dirs),
314    `ProtectSystem=full` (which makes /usr, /boot, & /etc dirs read-only), and
315    `PrivateDevices=on` (which hides devices).  You can override any of these
316    using the standard `systemctl edit rsync` and add one or more directives
317    under a `[Service]` heading (and restart the rsync service).
318
319  - Various checksum enhancements, including the optional use of openssl's MD4 &
320    MD5 checksum algorithms, some x86-64 optimizations for the rolling checksum,
321    some x86-64 optimizations for the (non-openssl) MD5 checksum, the addition
322    of xxHash checksum support, and a negotiation heuristic that ensures that it
323    is easier to add new checksum algorithms in the future.  The environment
324    variable `RSYNC_CHECKSUM_LIST` can be used to customize the preference order
325    of the negotiation, or use `--checksum-choice` (`--cc`) to force a choice.
326
327  - Various compression enhancements, including the addition of zstd and lz4
328    compression algorithms and a negotiation heuristic that picks the best
329    compression option supported by both sides.  The environment variable
330    `RSYNC_COMPRESS_LIST` can be used to customize the preference order of the
331    negotiation, or use `--compress-choice` (`--zc`) to force a choice.
332
333  - Added a `--debug=NSTR` option that outputs details of the new negotiation
334    strings (for checksums and compression).  The first level just outputs the
335    result of each negotiation on the client, level 2 outputs the values of the
336    strings that were sent to and received from the server, and level 3 outputs
337    all those values on the server side too (when the server was given the debug
338    option).
339
340  - The `--debug=OPTS` command-line option is no longer auto-forwarded to the
341    remote rsync which allows for the client and server to have different levels
342    of debug specified. This also allows for newer debug options to be
343    specified, such as using `--debug=NSTR` to see the negotiated hash result,
344    without having the command fail if the server version is too old to handle
345    that debug item. Use `-M--debug=OPTS` to send the options to the remote side.
346
347  - Added the `--atimes` option based on the long-standing patch (just with some
348    fixes that the patch has been needing).
349
350  - Added `--open-noatime` option to open files using `O_NOATIME`.
351
352  - Added the `--write-devices` option based on the long-standing patch.
353
354  - Added openssl & preliminary gnutls support to the rsync-ssl script, which is
355    now installed by default.  This was unified with the old stunnel-rsync
356    helper script to simplify packaging.  Note that the script accepts the use
357    of `--type=gnutls` for gnutls testing, but does not look for gnutls-cli on
358    the path yet.  The use of `--type=gnutls` will not work right until
359    gnutls-cli no longer drops data.
360
361  - Rsync was enhanced to set the `RSYNC_PORT` environment variable when running
362    a daemon-over-rsh script. Its value is the user-specified port number (set
363    via `--port` or an rsync:// URL) or 0 if the user didn't override the port.
364
365  - Added the `proxy protocol` daemon parameter that allows your rsyncd to know
366    the real remote IP when it is setup behind a proxy.
367
368  - Added negated matching to the daemon's `refuse options` setting by using
369    match strings that start with a `!` (such as `!compress*`).  This lets you
370    refuse all options except for a particular approved list, for example.  It
371    also lets rsync refuse certain options by default (such as `write-devices`)
372    while allowing the config to override that, as desired.
373
374  - Added the `early exec` daemon parameter that runs a script before the
375    transfer parameters are known, allowing some early setup based on module
376    name.
377
378  - Added status output in response to a signal (via both SIGINFO & SIGVTALRM).
379
380  - Added `--copy-as=USER` option to give some extra security to root-run rsync
381    commands into/from untrusted directories (such as backups and restores).
382
383  - When resuming the transfer of a file in the `--partial-dir`, rsync will now
384    update that partial file in-place instead of creating yet another tmp file
385    copy.  This requires both sender & receiver to be at least v3.2.0.
386
387  - Added support for `RSYNC_SHELL` & `RSYNC_NO_XFER_EXEC` environment variables
388    that affect the early, pre-xfer, and post-xfer exec rsync daemon parameters.
389
390  - Optimize the `--fuzzy --fuzzy` heuristic to avoid the fuzzy directory scan
391    until all other basis-file options are exhausted (such as `--link-dest`).
392
393  - Have the daemon log include the normal-exit sent/received stats when the
394    transfer exited with an error when possible (i.e. if it is the sender).
395
396  - The daemon now locks its pid file (when configured to use one) so that it
397    will not fail to start when the file exists but no daemon is running.
398
399  - Various man page improvements, including some html representations (that
400    aren't installed by default).
401
402  - Made `-V` the short option for `--version` and improved its information.
403
404  - Pass the `-4` or `-6` option to the ssh command, making it easier to type
405    than `--rsh='ssh -4'` (or the `-6` equivalent).
406
407  - Added example config for rsyncd SSL proxy configs to rsyncd.conf.
408
409  - More errors messages now mention if the error is coming from the sender or
410    the receiver.
411
412 ### PACKAGING RELATED:
413
414  - Add installed bash script: /usr/bin/rsync-ssl
415
416  - Add installed man page: /usr/man/man1/rsync-ssl.1
417
418  - Tweak auxiliary doc file names, such as: README.md, INSTALL.md, & NEWS.md.
419
420  - The rsync-ssl script wants to run openssl or stunnel4, so consider adding a
421    dependency for one of those options (though it's probably fine to just let
422    it complain about being unable to find the program and let the user decide
423    if they want to install one or the other).
424
425  - If you packaged rsync + rsync-ssl + rsync-ssl-daemon as separate packages,
426    the rsync-ssl package is now gone (rsync-ssl should be considered to be
427    mainstream now that Samba requires SSL for its rsync daemon).
428
429  - Add _build_ dependency for liblz4-dev, libxxhash-dev, libzstd-dev, and
430    libssl-dev.  These development libraries will give rsync extra compression
431    algorithms, extra checksum algorithms, and allow use of openssl's crypto
432    lib for (potentially) faster MD4/MD5 checksums.
433
434  - Add _build_ dependency for g++ or clang++ on x86_64 systems to enable the
435    SIMD checksum optimizations.
436
437  - Add _build_ dependency for _either_ python3-cmarkcfm or python3-commonmark
438    to allow for patching of man pages or building a git release.  This is not
439    required for a release-tar build, since it comes with pre-built man pages.
440    Note that cmarkcfm is faster than commonmark, but they generate the same
441    data.  The commonmark dependency is easiest to install since it's native
442    python, and can even be installed via `pip3 install --user commonmark` if
443    you want to just install it for the build user.
444
445  - Remove yodl _build_ dependency (if it was even listed before).
446
447 ### DEVELOPER RELATED:
448
449  - Silenced some annoying warnings about major() & minor() by improving an
450    autoconf include-file check.
451
452  - Converted the man pages from yodl to markdown. They are now processed via a
453    simple python3 script using the cmarkgfm **or** commonmark library.  This
454    should make it easier to package rsync, since yodl is rather obscure.
455
456  - Improved some configure checks to work better with strict C99 compilers.
457
458  - Some perl building/packaging scripts were recoded into awk and python3.
459
460  - Some defines in byteorder.h were changed into static inline functions that
461    will help to ensure that the args don't get evaluated multiple times on
462    "careful alignment" hosts.
463
464  - Some code typos were fixed (as pointed out by a Fossies run).
465
466 ------------------------------------------------------------------------------
467 <a name="3.1.3"></a>
468
469 # NEWS for rsync 3.1.3 (28 Jan 2018)
470
471 ## Changes in this version:
472
473 ### SECURITY FIXES:
474
475  - Fixed a buffer overrun in the protocol's handling of xattr names and ensure
476    that the received name is null terminated.
477
478  - Fix an issue with `--protect-args` where the user could specify the arg in the
479    protected-arg list and short-circuit some of the arg-sanitizing code.
480
481 ### BUG FIXES:
482
483  - Don't output about a new backup dir without appropriate info verbosity.
484
485  - Fixed some issues with the sort functions in support/rsyncstats script.
486
487  - Added a way to specify daemon config lists (e.g. users, groups, etc) that
488    contain spaces (see `auth users` in the latest rsyncd.conf manpage).
489
490  - If a backup fails (e.g. full disk) rsync exits with an error.
491
492  - Fixed a problem with a doubled `--fuzzy` option combined with `--link-dest`.
493
494  - Avoid invalid output in the summary if either the start or end time had an
495    error.
496
497  - We don't allow a popt alias to affect the `--daemon` or `--server` options.
498
499  - Fix daemon exclude code to disallow attribute changes in addition to
500    disallowing transfers.
501
502  - Don't force nanoseconds to match if a non-transferred, non-checksummed file
503    only passed the quick-check w/o comparing nanoseconds.
504
505 ### ENHANCEMENTS:
506
507  - Added the ability for rsync to compare nanosecond times in its file-check
508    comparisons, and added support nanosecond times on Mac OS X.
509
510  - Added a short-option (`-@`) for `--modify-window`.
511
512  - Added the `--checksum-choice=NAME[,NAME]` option to choose the checksum
513    algorithms.
514
515  - Added hashing of xattr names (with using `-X`) to improve the handling of
516    files with large numbers of xattrs.
517
518  - Added a way to filter xattr names using include/exclude/filter rules (see
519    the `--xattrs` option in the manpage for details).
520
521  - Added `daemon chroot|uid|gid` to the daemon config (in addition to the old
522    chroot|uid|gid settings that affect the daemon's transfer process).
523
524  - Added `syslog tag` to the daemon configuration.
525
526  - Some manpage improvements.
527
528 ### DEVELOPER RELATED:
529
530  - Tweak the `make` output when yodl isn't around to create the man pages.
531
532  - Changed an obsolete autoconf compile macro.
533
534  - Support newer yodl versions when converting man pages.
535
536 ------------------------------------------------------------------------------
537 <a name="3.1.2"></a>
538
539 # NEWS for rsync 3.1.2 (21 Dec 2015)
540
541 ## Changes in this version:
542
543 ### SECURITY FIXES:
544
545  - Make sure that all transferred files use only path names from inside the
546    transfer. This makes it impossible for a malicious sender to try to make the
547    receiver use an unsafe destination path for a transferred file, such as a
548    just-sent symlink.
549
550 ### BUG FIXES:
551
552  - Change the checksum seed order in the per-block checksums. This prevents
553    someone from trying to create checksum blocks that match in sum but not
554    content.
555
556  - Fixed a with the per-dir filter files (using `-FF`) that could trigger an
557    assert failure.
558
559  - Only skip `set_modtime()` on a transferred file if the time is exactly
560    right.
561
562  - Don't create an empty backup dir for a transferred file that doesn't exist
563    yet.
564
565  - Fixed a bug where `--link-dest` and `--xattrs` could cause rsync to exit if
566    a filename had a matching dir of the same name in the alt-dest area.
567
568  - Allow more than 32 group IDs per user in the daemon's gid=LIST config.
569
570  - Fix the logging of %b & %c via `--log-file` (daemon logging was already
571    correct, as was `--out-format='%b/%c'`).
572
573  - Fix erroneous acceptance of `--info=5` & `--debug=5` (an empty flag name is
574    not valid).
575
576 ### ENHANCEMENTS:
577
578  - Added `(DRY RUN)` info to the `--debug=exit` output line.
579
580  - Use usleep() for our msleep() function if it is available.
581
582  - Added a few extra long-option names to rrsync script, which will make
583    BackupPC happier.
584
585  - Made configure choose to use Linux xattrs on NetBSD (rather than not
586    supporting xattrs).
587
588  - Added `-wo` (write-only) option to rrsync support script.
589
590  - Misc. manpage tweaks.
591
592 ### DEVELOPER RELATED:
593
594  - Fixed a bug with the Makefile's use of `INSTALL_STRIP`.
595
596  - Improve a test in the suite that could get an erroneous timestamp error.
597
598  - Tweaks for newer versions of git in the packaging tools.
599
600  - Improved the m4 generation rules and some autoconf idioms.
601
602 ------------------------------------------------------------------------------
603 <a name="3.1.1"></a>
604
605 # NEWS for rsync 3.1.1 (22 Jun 2014)
606
607 ## Changes in this version:
608
609 ### BUG FIXES:
610
611  - If the receiver gets bogus filenames from the sender (an unexpected leading
612    slash or a `..` infix dir), exit with an error. This prevents a malicious
613    sender from trying to inject filenames that would affect an area outside the
614    destination directories.
615
616  - Fixed a failure to remove the partial-transfer temp file when interrupted
617    (and rsync is not saving the partial files).
618
619  - Changed the chown/group/xattr-set order to avoid losing some security-
620    related xattr info (that would get cleared by a chown).
621
622  - Fixed a bug in the xattr-finding code that could make a non-root-run
623    receiver not able to find some xattr numbers.
624
625  - Fixed a bug in the early daemon protocol where a timeout failed to be
626    honored (e.g. if the remote side fails to send us the initial protocol
627    greeting).
628
629  - Fixed unintended inclusion of commas in file numbers in the daemon log.
630
631  - We once again send the 'f' sub-flag (of `-e`) to the server side so it knows
632    that we can handle incremental-recursion directory errors properly in older
633    protocols.
634
635  - Fixed an issue with too-aggressive keep-alive messages causing a problem for
636    older rsync versions early in the transfer.
637
638  - Fixed an incorrect message about backup-directory-creation when using
639    `--dry-run` and the backup dir is not an absolute path.
640
641  - Fixed a bug where a failed deletion and/or a failed sender-side removal
642    would not affect the exit code.
643
644  - Fixed a bug that caused a failure when combining `--delete-missing-args`
645    with `--xattrs` and/or `--acls`.
646
647  - Fixed a strange `dir_depth` assertion error that was caused by empty-dir
648    removals and/or duplicate files in the transfer.
649
650  - Fixed a problem with `--info=progress2`'s output stats where rsync would
651    only update the stats at the end of each file's transfer. It now uses the
652    data that is flowing for the current file, making the stats more accurate
653    and less jumpy.
654
655  - Fixed an itemize bug that affected the combo of `--link-dest`, `-X`, and
656    `-n`.
657
658  - Fixed a problem with delete messages not appearing in the log file when the
659    user didn't use `--verbose`.
660
661  - Improve chunked xattr reading for OS X.
662
663  - Removed an attempted hard-link xattr optimization that was causing a
664    transfer failure. This removal is flagged in the compatibility code, so if a
665    better fix can be discovered, we have a way to flip it on again.
666
667  - Fixed a bug when the receiver is not configured to be able to hard link
668    symlimks/devices/special-file items but the sender sent some of these items
669    flagged as hard-linked.
670
671  - We now generate a better error if the buffer overflows in `do_mknod()`.
672
673  - Fixed a problem reading more than 16 ACLs on some OSes.
674
675  - Fixed the reading of the secrets file to avoid an infinite wait when the
676    username is missing.
677
678  - Fixed a parsing problem in the `--usermap`/`--groupmap` options when using
679    MIN-MAX numbers.
680
681  - Switched Cygwin back to using socketpair `pipes` to try to speed it up.
682
683  - Added knowledge of a few new options to rrsync.
684
685 ### ENHANCEMENTS:
686
687  - Tweaked the temp-file naming when `--temp-dir=DIR` is used: the temp-file
688    names will not get a '.' prepended.
689
690  - Added support for a new-compression idiom that does not compress all the
691    matching data in a transfer. This can help rsync to use less cpu when a
692    transfer has a lot of matching data, and also makes rsync compatible with a
693    non-bundled zlib. See the `--new-compress` and `--old-compress` options in
694    the manpage.
695
696  - Added the support/rsync-no-vanished wrapper script.
697
698  - Made configure more prominently mention when we failed to find yodl (in case
699    the user wants to be able to generate manpages from `*.yo` files).
700
701  - Have manpage mention how a daemon's max-verbosity setting affects info and
702    debug options. Also added more clarification on backslash removals for
703    excludes that contain wildcards.
704
705  - Have configure check if for the attr lib (for getxattr) for those systems
706    that need to link against it explicitly.
707
708  - Change the early dir-creation logic to only use that idiom in an
709    inc-recursive copy that is preserving directory times. e.g. using
710    `--omit-dir-times` will avoid these early directories being created.
711
712  - Fix a bug in `cmp_time()` that would return a wrong result if the 2 times
713    differed by an amount greater than what a `time_t` can hold.
714
715 ### DEVELOPER RELATED:
716
717  - We now include an example systemd file (in packaging/systemd).
718
719  - Tweaked configure to make sure that any intended use of the included popt
720    and/or zlib code is put early in the CFLAGS.
721
722 ------------------------------------------------------------------------------
723 <a name="3.1.0"></a>
724
725 # NEWS for rsync 3.1.0 (28 Sep 2013)
726
727 ## Changes in this version:
728
729 ### PROTOCOL NUMBER:
730
731  - The protocol number was changed to 31.
732
733 ### OUTPUT CHANGES:
734
735  - Output numbers in 3-digit groups by default (e.g. 1,234,567). See the
736    `--human-readable` option for a way to turn it off. See also the daemon's
737    `log format` parameter and related command-line options (including
738    `--out-format`) for a modifier that can be used to request digit-grouping or
739    human-readable output in log escapes. (Note that log output is unchanged by
740    default.)
741
742  - The `--list-only` option is now affected by the `--human-readable` setting.
743    It will display digit groupings by default, and unit suffixes if higher
744    levels of readability are requested. Also, the column width for the size
745    output has increased from 11 to 14 characters when human readability is
746    enabled. Use `--no-h` to get the old-style output and column size.
747
748  - The output of the `--progress` option has changed: the string `xfer` was
749    shortened to `xfr`, and the string `to-check` was shortened to `to-chk`,
750    both designed to make room for the (by default) wider display of file size
751    numbers without making the total line-length longer. Also, when incremental
752    recursion is enabled, the string `ir-chk` will be used instead of `to-chk`
753    up until the incremental-recursion scan is done, letting you know that the
754    value to check and the total value will still be increasing as new files are
755    found.
756
757  - Enhanced the `--stats` output: 1) to mention how many files were created
758    (protocol >= 28), 2) to mention how many files were deleted (a new line for
759    protocol 31, but only output when `--delete` is in effect), and 3) to follow
760    the file-count, created-count, and deleted-count with a subcount list that
761    shows the counts by type. The wording of the transferred count has also
762    changed so that it is clearer that it is only a count of regular files.
763
764 ### BUG FIXES:
765
766  - Fixed a bug in the iconv code when EINVAL or EILSEQ is returned with a full
767    output buffer.
768
769  - Fixed some rare bugs in `--iconv` processing that might cause a multibyte
770    character to get translated incorrectly.
771
772  - Fixed a bogus `vanished file` error if some files were specified with `./`
773    prefixes and others were not.
774
775  - Fixed a bug in `--sparse` where an extra gap could get inserted after a
776    partial write.
777
778  - Changed the way `--progress` overwrites its prior output in order to make it
779    nearly impossible for the progress to get overwritten by an error.
780
781  - Improved the propagation of abnormal-exit error messages. This should help
782    the client side to receive errors from the server when it is exiting
783    abnormally, and should also avoid dying with an `connection unexpectedly
784    closed` exit when the closed connection is really expected.
785
786  - The sender now checks each file it plans to remove to ensure that it hasn't
787    changed from the first stat's info. This helps to avoid losing file data
788    when the user is not using the option in a safe manner.
789
790  - Fixed a data-duplication bug in the compress option that made compression
791    less efficient. This improves protocol 31 onward, while behaving in a
792    compatible (buggy) manner with older rsync protocols.
793
794  - When creating a temp-file, rsync is now a bit smarter about it dot-char
795    choices, which can fix a problem on OS X with names that start with `..`.
796
797  - Rsync now sets a cleanup flag for `--inplace` and `--append` transfers that
798    will flush the write buffer if the transfer aborts. This ensures that more
799    received data gets written out to the disk on an aborted transfer (which is
800    quite helpful on a slow, flaky connection).
801
802  - The reads that `map_ptr()` now does are aligned on 1K boundaries. This helps
803    some filesystems and/or files that don't like unaligned reads.
804
805  - Fix an issue in the msleep() function if time jumps backwards.
806
807  - Fix daemon-server module-name splitting bug where an arg would get split
808    even if `--protect-args` was used.
809
810 ### ENHANCEMENTS:
811
812  - Added the `--remote-option=OPT` (`-M OPT`) command-line option that is
813    useful for things like sending a remote `--log-file=FILE` or `--fake-super`
814    option.
815
816  - Added the `--info=FLAGS` and `--debug=FLAGS` options to allow finer-grained
817    control over what is output. Added an extra type of `--progress` output
818    using `--info=progress2`.
819
820  - The `--msgs2stderr` option can help with debugging rsync by allowing the
821    debug messages to get output to stderr rather than travel via the socket
822    protocol.
823
824  - Added the `--delete-missing-args` and `--ignore-missing-args` options to
825    either delete or ignore user-specified files on the receiver that are
826    missing on the sender (normally the absence of user-specified files
827    generates an error).
828
829  - Added a `T` (terabyte) category to the `--human-readable` size suffixes.
830
831  - Added the `--usermap`/`--groupmap`/`--chown` options for manipulating file
832    ownership during the copy.
833
834  - Added the `%C` escape to the log-output handling, which will output the MD5
835    checksum of any transferred file, or all files if `--checksum` was specified
836    (when protocol 30 or above is in effect).
837
838  - Added the `reverse lookup` parameter to the rsync daemon config file to
839    allow reverse-DNS lookups to be disabled.
840
841  - Added a forward-DNS lookup for the daemon's hosts allow/deny config. Can be
842    disabled via `forward lookup` parameter (defaults to enabled).
843
844  - Added a way for more than one group to be specified in the daemon's config
845    file, including a way to specify that you want all of the specified user's
846    groups without having to name them. Also changed the daemon to complain
847    about an inability to set explicitly-specified uid/gid values, even when not
848    run by a super-user.
849
850  - The daemon now tries to send the user the error messages from the pre-xfer
851    exec script when it fails.
852
853  - Improved the use of alt-dest options into an existing hierarchy of files: If
854    a match is found in an alt-dir, it takes precedence over an existing file.
855    (We'll need to wait for a future version before attribute-changes on
856    otherwise unchanged files are safe when using an existing hierarchy.)
857
858  - Added per-user authorization options and group-authorization support to the
859    daemon's `auth users` parameter.
860
861  - Added a way to reference environment variables in a daemon's config file
862    (using %VAR% references).
863
864  - When replacing a non-dir with a symlink/hard-link/device/special-file, the
865    update should now be done in an atomic manner.
866
867  - Avoid re-sending xattr info for hard-linked files w/the same xattrs
868    (protocol 31).
869
870  - The backup code was improved to use better logic maintaining the backup
871    directory hierarchy. Also, when a file is being backed up, rsync tries to
872    hard-link it into place so that the upcoming replacement of the destination
873    file will be atomic (for the normal, non-inplace logic).
874
875  - Added the ability to synchronize nano-second modified times.
876
877  - Added a few more default suffixes for the `dont compress` settings.
878
879  - Added the checking of the `RSYNC_PROTECT_ARGS` environment variable to allow
880    the default for the `--protect-args` command-line option to be overridden.
881
882  - Added the `--preallocate` command-line option.
883
884  - Allow `--password-file=-` to read the password from stdin (filename `-`).
885
886  - Rsync now comes packaged with an rsync-ssl helper script that can be used to
887    contact a remote rsync daemon using a piped-stunnel command.  It also
888    includes an stunnel config file to run the server side to support ssl daemon
889    connections. See the packaging/lsb/rsync.spec file for one way to package
890    the resulting files. (Suggestions for how to make this even easier to
891    install & use are welcomed.)
892
893  - Improved the speed of some `--inplace` updates when there are lots of
894    identical checksum blocks that end up being unusable.
895
896  - Added the `--outbuf=N|L|B` option for choosing the output buffering.
897
898  - Repeating the `--fuzzy` option now causes the code to look for fuzzy matches
899    inside alt-dest directories too.
900
901  - The `--chmod` option now supports numeric modes, e.g. `--chmod=644,D755`
902
903  - Added some Solaris xattr code.
904
905  - Made an rsync daemon (the listening process) exit with a 0 status when it
906    was signaled to die. This helps launchd.
907
908  - Improved the `RSYNC_*` environment variables for the pre-xfer exec script:
909    when a daemon is sent multiple request args, they are now joined into a
910    single return value (separated by spaces) so that the `RSYNC_REQUEST`
911    environment variable is accurate for any `pre-xfer exec`. The values in
912    `RSYNC_ARG#` vars are no longer truncated at the `.` arg (prior to the
913    request dirs/files), so that all the requested values are also listed
914    (separately) in `RSYNC_ARG#` variables.
915
916 ### EXTRAS:
917
918  - Added an `instant-rsyncd` script to the support directory, which makes it
919    easy to configure a simple rsync daemon in the current directory.
920
921  - Added the `mapfrom` and `mapto` scripts to the support directory, which
922    makes it easier to do user/group mapping in a local transfer based on
923    passwd/group files from another machine.
924
925  - There's a new, improved version of the lsh script in the support dir: it's
926    written in perl and supports `-u` without resorting to using sudo (when run
927    as root). The old shell version is now named lsh.sh.
928
929  - There is a helper script named rsync-slash-strip in the support directory
930    for anyone that wants to change the way rsync handles args with trailing
931    slashes. (e.g. arg/ would get stripped to arg while arg/. would turn into
932    arg/).
933
934 ### INTERNAL:
935
936  - The I/O code was rewritten to be simpler and do bigger buffered reads over
937    the socket. The I/O between the receiver and the generator was changed to be
938    standard multiplexed-I/O (like that over the socket).
939
940  - The sender tries to use any dead time while the generator is looking for
941    files to transfer in order to do sender-side directory scanning in a more
942    parallel manner.
943
944  - A daemon can now inform a client about a daemon-configured timeout value so
945    that the client can assist in the keep-alive activity (protocol 31).
946
947  - The filter code received some refactoring to make it more extendable, to
948    read better, and do better sanity checking.
949
950  - Really big numbers are now output using our own big-num routine rather than
951    casting them to a double and using a %.0f conversion.
952
953  - The `pool_alloc` library has received some minor improvements in alignment
954    handling.
955
956  - Added `init_stat_x()` function to avoid duplication of acl/xattr init code.
957
958  - The included zlib was upgraded from 1.2.3 to 1.2.8.
959
960  - Rsync can now be compiled to use an unmodified zlib library instead of the
961    tweaked one that is included with rsync. This will eventually become the
962    default, at which point we'll start the countdown to removing the included
963    zlib. Until then, feel free to configure using:
964
965    ./configure `--with-included-zlib=no`
966
967 ### DEVELOPER RELATED:
968
969  - Added more conditional debug output.
970
971  - Fixed some build issues for Android and Minix.
972
973 ------------------------------------------------------------------------------
974 <a name="3.0.9"></a>
975
976 # NEWS for rsync 3.0.9 (23 Sep 2011)
977
978 ## Changes in this version:
979
980 ### BUG FIXES:
981
982  - Fix a crash bug in checksum scanning when `--inplace` is used.
983
984  - Fix a hang if a hard-linked file cannot be opened by the sender (e.g.  if it
985    has no read permission).
986
987  - Fix preservation of a symlink's system xattrs (e.g. selinux) on Linux.
988
989  - Fix a memory leak in the xattr code.
990
991  - Fixed a bug with `--delete-excluded` when a filter merge file has a rule
992    that specifies a receiver-only side restriction.
993
994  - Fix a bug with the modifying of unwritable directories.
995
996  - Fix `--fake-super`'s interaction with `--link-dest` same-file comparisons.
997
998  - Fix the updating of the `curr_dir` buffer to avoid a duplicate slash.
999
1000  - Fix the directory permissions on an implied dot-dir when using `--relative`
1001    (e.g. /outside/path/././send/path).
1002
1003  - Fixed some too-long sleeping instances when using `--bwlimit`.
1004
1005  - Fixed when symlink ownership difference-checking gets compiled into
1006    `unchanged_attrs()`.
1007
1008  - Improved the socket-error reporting when multiple protocols fail.
1009
1010  - Fixed a case where a socket error could reference just-freed memory.
1011
1012  - Failing to use a password file that was specified on the command-line is now
1013    a fatal error.
1014
1015  - Fix the non-root updating of directories that don't have the read and/or
1016    execute permission.
1017
1018  - Make daemon-excluded file errors more error-like.
1019
1020  - Fix a compilation issue on older C compilers (due to a misplaced var
1021    declaration).
1022
1023  - Make configure avoid finding socketpair on Cygwin.
1024
1025  - Avoid trying to reference `SO_BROADCAST` if the OS doesn't support it.
1026
1027  - Fix some issues with the post-processing of the man pages.
1028
1029  - Fixed the user home-dir handling in the support/lsh script.
1030
1031  - Some minor manpage improvements.
1032
1033 ------------------------------------------------------------------------------
1034 <a name="3.0.8"></a>
1035
1036 # NEWS for rsync 3.0.8 (26 Mar 2011)
1037
1038 ## Changes in this version:
1039
1040 ### BUG FIXES:
1041
1042  - Fixed two buffer-overflow issues: one where a directory path that is exactly
1043    MAXPATHLEN was not handled correctly, and one handling a `--backup-dir` that
1044    is extra extra large.
1045
1046  - Fixed a data-corruption issue when preserving hard-links without preserving
1047    file ownership, and doing deletions either before or during the transfer
1048    (CVE-2011-1097). This fixes some assert errors in the hard-linking code, and
1049    some potential failed checksums (via `-c`) that should have matched.
1050
1051  - Fixed a potential crash when an rsync daemon has a filter/exclude list and
1052    the transfer is using ACLs or xattrs.
1053
1054  - Fixed a hang if a really large file is being processed by an rsync that
1055    can't handle 64-bit numbers. Rsync will now complain about the file being
1056    too big and skip it.
1057
1058  - For devices and special files, we now avoid gathering useless ACL and/or
1059    xattr information for files that aren't being copied. (The un-copied files
1060    are still put into the file list, but there's no need to gather data that is
1061    not going to be used.) This ensures that if the user uses `--no-D`, that
1062    rsync can't possibly complain about being unable to gather extended
1063    information from special files that are in the file list (but not in the
1064    transfer).
1065
1066  - Properly handle requesting remote filenames that start with a dash. This
1067    avoids a potential error where a filename could be interpreted as a (usually
1068    invalid) option.
1069
1070  - Fixed a bug in the comparing of upper-case letters in file suffixes for
1071    `--skip-compress`.
1072
1073  - If an rsync daemon has a module configured without a path setting, rsync
1074    will now disallow access to that module.
1075
1076  - If the destination arg is an empty string, it will be treated as a reference
1077    to the current directory (as 2.x used to do).
1078
1079  - If rsync was compiled with a newer time-setting function (such as lutimes),
1080    rsync will fall-back to an older function (such as utimes) on a system where
1081    the newer function is not around. This helps to make the rsync binary more
1082    portable in mixed-OS-release situations.
1083
1084  - Fixed a batch-file writing bug that would not write out the full set of
1085    compatibility flags that the transfer was using. This fixes a potential
1086    protocol problem for a batch file that contains a sender-side I/O error: it
1087    would have been sent in a way that the batch-reader wasn't expecting.
1088
1089  - Some improvements to the hard-linking code to ensure that device-number
1090    hashing is working right, and to supply more information if the hard-link
1091    code fails.
1092
1093  - The `--inplace` code was improved to not search for an impossible checksum
1094    position. The quadruple-verbose chunk[N] message will now mention when an
1095    inplace chunk was handled by a seek rather than a read+write.
1096
1097  - Improved ACL mask handling, e.g. for Solaris.
1098
1099  - Fixed a bug that prevented `--numeric-ids` from disabling the translation of
1100    user/group IDs for ACLs.
1101
1102  - Fixed an issue where an xattr and/or ACL transfer that used an alt-dest
1103    option (e.g. `--link-dest`) could output an error trying to itemize the
1104    changes against the alt-dest directory's xattr/ACL info but was instead
1105    trying to access the not-yet-existing new destination directory.
1106
1107  - Improved xattr system-error messages to mention the full path to the file.
1108
1109  - The `--link-dest` checking for identical symlinks now avoids considering
1110    attribute differences that cannot be changed on the receiver.
1111
1112  - Avoid trying to read/write xattrs on certain file types for certain OSes.
1113    Improved configure to set `NO_SYMLINK_XATTRS`, `NO_DEVICE_XATTRS`, and/or
1114    `NO_SPECIAL_XATTRS` defines in config.h.
1115
1116  - Improved the unsafe-symlink errors messages.
1117
1118  - Fixed a bug setting xattrs on new files that aren't user writable.
1119
1120  - Avoid re-setting xattrs on a hard-linked file w/the same xattrs.
1121
1122  - Fixed a bug with `--fake-super` when copying files and dirs that aren't user
1123    writable.
1124
1125  - Fixed a bug where a sparse file could have its last sparse block turned into
1126    a real block when rsync sets the file size (requires ftruncate).
1127
1128  - If a temp-file name is too long, rsync now avoids truncating the name in the
1129    middle of adjacent high-bit characters. This prevents a potential filename
1130    error if the filesystem doesn't allow a name to contain an invalid
1131    multi-byte sequence.
1132
1133  - If a muli-protocol socket connection fails (i.e., when contacting a daemon),
1134    we now report all the failures, not just the last one. This avoids losing a
1135    relevant error (e.g. an IPv4 connection-refused error) that happened before
1136    the final error (e.g. an IPv6 protocol-not-supported error).
1137
1138  - Generate a transfer error if we try to call chown with a `-1` for a uid or a
1139    gid (which is not settable).
1140
1141  - Fixed the working of `--force` when used with `--one-file-system`.
1142
1143  - Fix the popt arg parsing so that an option that doesn't take an arg will
1144    reject an attempt to supply one (can configure `--with-included-popt` if
1145    your system's popt library doesn't yet have this fix).
1146
1147  - A couple minor option tweaks to the support/rrsync script, and also some
1148    regex changes that make vim highlighting happier.
1149
1150  - Fixed some issues in the support/mnt-excl script.
1151
1152  - Various manpage improvements.
1153
1154 ### ENHANCEMENTS:
1155
1156  - Added `.hg/` to the default cvs excludes (see `-C` & `--cvs-exclude`).
1157
1158 ### DEVELOPER RELATED:
1159
1160  - Use lchmod() whenever it is available (not just on symlinks).
1161
1162  - A couple fixes to the `socketpair_tcp()` routine.
1163
1164  - Updated the helper scripts in the packaging subdirectory.
1165
1166  - Renamed configure.in to configure.ac.
1167
1168  - Fixed configure's checking for iconv routines for newer OS X versions.
1169
1170  - Fixed the testsuite/xattrs.test script on OS X.
1171
1172 ------------------------------------------------------------------------------
1173 <a name="3.0.7"></a>
1174
1175 # NEWS for rsync 3.0.7 (31 Dec 2009)
1176
1177 ## Changes in this version:
1178
1179 ### BUG FIXES:
1180
1181  - Fixed a bogus free when using `--xattrs` with `--backup`.
1182
1183  - Avoid an error when `--dry-run` was trying to stat a prior hard-link file
1184    that hasn't really been created.
1185
1186  - Fixed a problem with `--compress` (`-z`) where the receiving side could
1187    return the error "inflate (token) returned -5".
1188
1189  - Fixed a bug where `--delete-during` could delete in a directory before it
1190    noticed that the sending side sent an I/O error for that directory (both
1191    sides of the transfer must be at least 3.0.7).
1192
1193  - Improved `--skip-compress`'s error handling of bad character-sets and got
1194    rid of a lingering debug fprintf().
1195
1196  - Fixed the daemon's conveyance of `io_error` value from the sender.
1197
1198  - An rsync daemon use seteuid() (when available) if it used setuid().
1199
1200  - Get the permissions right on a `--fake-super` transferred directory that
1201    needs more owner permissions to emulate root behavior.
1202
1203  - An absolute-path filter rule (i.e. with a '/' modifier) no longer loses its
1204    modifier when sending the filter rules to the remote rsync.
1205
1206  - Improved the "--delete does not work without -r or -d" message.
1207
1208  - Improved rsync's handling of `--timeout` to avoid a weird timeout case where
1209    the sender could timeout even though it has recently written data to the
1210    socket (but hasn't read data recently, due to the writing).
1211
1212  - Some misc manpage improvements.
1213
1214  - Fixed the chmod-temp-dir testsuite on a system without /var/tmp.
1215
1216  - Make sure that a timeout specified in the daemon's config is used as a
1217    maximum timeout value when the user also specifies a timeout.
1218
1219  - Improved the error-exit reporting when rsync gets an error trying to cleanup
1220    after an error: the initial error is reported.
1221
1222  - Improved configure's detection of IPv6 for Solaris and Cygwin.
1223
1224  - The AIX sysacls routines will now return ENOSYS if ENOTSUP is missing.
1225
1226  - Made our (only used if missing) getaddrinfo() routine use `inet_pton()`
1227    (which we also provide) instead of `inet_aton()`.
1228
1229  - The exit-related debug messages now mention the program's role so it is
1230    clear who output what message.
1231
1232 ### DEVELOPER RELATED:
1233
1234  - Got rid of type-punned compiler warnings output by newer gcc versions.
1235
1236  - The Makefile now ensures that proto.h will be rebuilt if config.h changes.
1237
1238  - The testsuite no longer uses `id -u`, so it works better on Solaris.
1239
1240 ------------------------------------------------------------------------------
1241 <a name="3.0.6"></a>
1242
1243 # NEWS for rsync 3.0.6 (8 May 2009)
1244
1245 ## Changes in this version:
1246
1247 ### BUG FIXES:
1248
1249  - Fixed a `--read-batch` hang when rsync is reading a batch file that was
1250    created from an incremental-recursion transfer.
1251
1252  - Fixed the daemon's socket code to handle the simultaneous arrival of
1253    multiple connections.
1254
1255  - Fix `--safe-links`/`--copy-unsafe-links` to properly handle symlinks that
1256    have consecutive slashes in the value.
1257
1258  - Fixed the parsing of an `[IPv6_LITERAL_ADDR]` when a USER@ is prefixed.
1259
1260  - The sender now skips a (bogus) symlink that has a 0-length value, which
1261    avoids a transfer error in the receiver.
1262
1263  - Fixed a case where the sender could die with a tag-0 error if there was an
1264    I/O during the sending of the file list.
1265
1266  - Fixed the rrsync script to avoid a server-side problem when `-e` is at the
1267    start of the short options.
1268
1269  - Fixed a problem where a vanished directory could turn into an exit code 23
1270    instead of the proper exit code 24.
1271
1272  - Fixed the `--iconv` conversion of symlinks when doing a local copy.
1273
1274  - Fixed a problem where `--one-file-system` was not stopping deletions on the
1275    receiving side when a mount-point directory did not match a directory in the
1276    transfer.
1277
1278  - Fixed the dropping of an ACL mask when no named ACL values were present.
1279
1280  - Fixed an ACL/xattr corruption issue where the `--backup` option could cause
1281    rsync to associate the wrong ACL/xattr information with received files.
1282
1283  - Fixed the use of `--xattrs` with `--only-write-batch`.
1284
1285  - Fixed the use of `--dry-run` with `--read-batch`.
1286
1287  - Fixed configure's erroneous use of target.
1288
1289  - Fixed configure's `--disable-debug` option.
1290
1291  - Fixed a run-time issue for systems that can't find `iconv_open()` by adding
1292    the `--disable-iconv-open` configure option.
1293
1294  - Complain and die if the user tries to combine `--remove-source-files` (or
1295    the deprecated `--remove-sent-files`) with `--read-batch`.
1296
1297  - Fixed an failure transferring special files from Solaris to Linux.
1298
1299 ------------------------------------------------------------------------------
1300 <a name="3.0.5"></a>
1301
1302 # NEWS for rsync 3.0.5 (28 Dec 2008)
1303
1304 ## Changes in this version:
1305
1306 ### BUG FIXES:
1307
1308  - Initialize xattr data in a couple spots in the hlink code, which avoids a
1309    crash when the xattr pointer's memory happens to start out non-zero.  Also
1310    fixed the itemizing of an alt-dest file's xattrs when hard-linking.
1311
1312  - Don't send a bogus `-` option to an older server if there were no short
1313    options specified.
1314
1315  - Fixed skipping of unneeded updates in a batch file when incremental
1316    recursion is active. Added a test for this. Made batch-mode handle `redo`
1317    files properly (and without hanging).
1318
1319  - Fix the %P logfile escape when the daemon logs from inside a chroot.
1320
1321  - Fixed the use of `-s` (`--protect-args`) when used with a remote source or
1322    destination that had an empty path (e.g. `host:`). Also fixed a problem when
1323    `-s` was used when accessing a daemon via a remote-shell.
1324
1325  - Fixed the use of a dot-dir path (e.g. foo/./bar) inside a `--files-from`
1326    file when the root of the transfer isn't the current directory.
1327
1328  - Fixed a bug with `-K --delete` removing symlinks to directories when
1329    incremental recursion is active.
1330
1331  - Fixed a hard to trigger hang when using `--remove-source-files`.
1332
1333  - Got rid of an annoying delay when accessing a daemon via a remote-shell.
1334
1335  - Properly ignore (superfluous) source args on a `--read-batch` command.
1336
1337  - Improved the manpage's description of the `*` wildcard to remove the
1338    confusing `non-empty` qualifier.
1339
1340  - Fixed reverse lookups in the compatibility-library version of getnameinfo().
1341
1342  - Fixed a bug when using `--sparse` on a sparse file that has over 2GB of
1343    consecutive sparse data.
1344
1345  - Avoid a hang when using at least 3 `--verbose` options on a transfer with a
1346    client sender (which includes local copying).
1347
1348  - Fixed a problem with `--delete-delay` reporting an error when it was ready
1349    to remove a directory that was now gone.
1350
1351  - Got rid of a bunch of `warn_unused_result` compiler warnings.
1352
1353  - If an ftruncate() on a received file fails, it now causes a partial-
1354    transfer warning.
1355
1356  - Allow a path with a leading `//` to be preserved (CYGWIN only).
1357
1358 ### ENHANCEMENTS:
1359
1360  - Made the support/atomic-rsync script able to perform a fully atomic update
1361    of the copied hierarchy when the destination is setup using a particular
1362    symlink idiom.
1363
1364 ------------------------------------------------------------------------------
1365 <a name="3.0.4"></a>
1366
1367 # NEWS for rsync 3.0.4 (6 Sep 2008)
1368
1369 ## Changes in this version:
1370
1371 ### BUG FIXES:
1372
1373  - Fixed a bug in the hard-linking code where it would sometimes try to
1374    allocate 0 bytes of memory (which fails on some OSes, such as AIX).
1375
1376  - Fixed the hard-linking of files from a device that has a device number of 0
1377    (which seems to be a common device number on NetBSD).
1378
1379  - Fixed the handling of a `--partial-dir` that cannot be created. This
1380    particularly impacts the `--delay-updates` option (since the files cannot be
1381    delayed without a partial-dir), and was potentially destructive if the
1382    `--remove-source-files` was also specified.
1383
1384  - Fixed a couple issues in the `--fake-super` handling of xattrs when the
1385    destination files have root-level attributes (e.g. selinux values) that a
1386    non-root copy can't affect.
1387
1388  - Improved the keep-alive check in the generator to fire consistently in
1389    incremental-recursion mode when `--timeout` is enabled.
1390
1391  - The `--iconv` option now converts the content of a symlink too, instead of
1392    leaving it in the wrong character-set (requires 3.0.4 on both sides of the
1393    transfer).
1394
1395  - When using `--iconv`, if a filename fails to convert on the receiving side,
1396    this no longer makes deletions in the root-dir of the transfer fail silently
1397    (the user now gets a warning about deletions being disabled due to IO error
1398    as long as `--ignore-errors` was not specified).
1399
1400  - When using `--iconv`, if a server-side receiver can't convert a filename,
1401    the error message sent back to the client no longer mangles the name with
1402    the wrong charset conversion.
1403
1404  - Fixed a potential alignment issue in the IRIX ACL code when allocating the
1405    initial `struct acl` object. Also, cast mallocs to avoid warnings.
1406
1407  - Changed some errors that were going to stdout to go to stderr.
1408
1409  - Made `human_num()` and `human_dnum()` able to output a negative number
1410    (rather than outputting a cryptic string of punctuation).
1411
1412 ### ENHANCEMENTS:
1413
1414  - Rsync will avoid sending an `-e` option to the server if an older protocol
1415    is requested (and thus the option would not be useful). This lets the user
1416    specify the `--protocol=29` option to access an overly-restrictive server
1417    that is rejecting the protocol-30 use of `-e` to the server.
1418
1419  - Improved the message output for an `RERR_PARTIAL` exit.
1420
1421 ### DEVELOPER RELATED:
1422
1423  - The Makefile will not halt for just a timestamp change on the Makefile or
1424    the configure files, only for actual changes in content.
1425
1426  - Changed some commands in the testsuite's xattrs.test that called `rsync`
1427    instead of `$RSYNC`.
1428
1429  - Enhanced the release scripts to be able to handle a branch release and to do
1430    even more consistency checks on the files.
1431
1432 ------------------------------------------------------------------------------
1433 <a name="3.0.3"></a>
1434
1435 # NEWS for rsync 3.0.3 (29 Jun 2008)
1436
1437 ## Changes in this version:
1438
1439 ### BUG FIXES:
1440
1441  - Fixed a wildcard matching problem in the daemon when a module has `use
1442    chroot` enabled.
1443
1444  - Fixed a crash bug in the hard-link code.
1445
1446  - Fixed the sending of xattr directory information when the code finds a
1447    `--link-dest` or `--copy-dest` directory with unchanged xattrs -- the
1448    destination directory now gets these unchanged xattrs properly applied.
1449
1450  - Fixed an xattr-sending glitch that could cause an `Internal abbrev` error.
1451
1452  - Fixed the combination of `--xattrs` and `--backup`.
1453
1454  - The generator no longer allows a '.' dir to be excluded by a daemon-exclude
1455    rule.
1456
1457  - Fixed deletion handling when copying a single, empty directory (with no
1458    files) to a differently named, non-existent directory.
1459
1460  - Fixed the conversion of spaces into dashes in the %M log escape.
1461
1462  - Fixed several places in the code that were not returning the right errno
1463    when a function failed.
1464
1465  - Fixed the backing up of a device or special file into a backup dir.
1466
1467  - Moved the setting of the socket options prior to the connect().
1468
1469  - If rsync exits in the middle of a `--progress` output, it now outputs a
1470    newline to help prevent the progress line from being overwritten.
1471
1472  - Fixed a problem with how a destination path with a trailing slash or a
1473    trailing dot-dir was compared against the daemon excludes.
1474
1475  - Fixed the sending of large (size > 16GB) files when talking to an older
1476    rsync (protocols < 30): we now use a compatible block size limit.
1477
1478  - If a file's length is so huge that we overflow a checksum buffer count (i.e.
1479    several hundred TB), warn the user and avoid sending an invalid checksum
1480    struct over the wire.
1481
1482  - If a source arg is excluded, `--relative` no longer adds the excluded arg's
1483    implied dirs to the transfer. This fix also made the exclude check happen in
1484    the better place in the sending code.
1485
1486  - Use the `overflow_exit()` function for overflows, not `out_of_memory()`.
1487
1488  - Improved the code to better handle a system that has only 32-bit file
1489    offsets.
1490
1491 ### ENHANCEMENTS:
1492
1493  - The rsyncd.conf manpage now consistently refers to the parameters in the
1494    daemon config file as `parameters`.
1495
1496  - The description of the `--inplace` option was improved.
1497
1498 ### EXTRAS:
1499
1500  - Added a new script in the support directory, deny-rsync, which allows an
1501    admin to (temporarily) replace the rsync command with a script that sends an
1502    error message to the remote client via the rsync protocol.
1503
1504 ### DEVELOPER RELATED:
1505
1506  - Fixed a testcase failure if the tests are run as root and made some
1507    compatibility improvements.
1508
1509  - Improved the daemon tests, including checking module comments, the listing
1510    of files, and the ensuring that daemon excludes can't affect a dot-dir arg.
1511
1512  - Improved some build rules for those that build in a separate directory from
1513    the source, including better install rules for the man pages, and the fixing
1514    of a proto.h-tstamp rule that could make the binaries get rebuild without
1515    cause.
1516
1517  - Improved the testsuite to work around a problem with some utilities (e.g. cp
1518    -p & touch -r) rounding sub-second timestamps.
1519
1520  - Ensure that the early patches don't cause any generated-file hunks to
1521    bleed-over into patches that follow.
1522
1523 ------------------------------------------------------------------------------
1524 <a name="3.0.2"></a>
1525
1526 # NEWS for rsync 3.0.2 (8 Apr 2008)
1527
1528 ## Changes in this version:
1529
1530 ### BUG FIXES:
1531
1532  - Fixed a potential buffer overflow in the xattr code.
1533
1534 ### ENHANCEMENTS:
1535
1536  - None.
1537
1538 ### DEVELOPER RELATED:
1539
1540  - The RPM spec file was improved to install more useful files.
1541
1542  - A few developer-oriented scripts were moved from the support dir to the
1543    packaging dir.
1544
1545 ------------------------------------------------------------------------------
1546 <a name="3.0.1"></a>
1547
1548 # NEWS for rsync 3.0.1 (3 Apr 2008)
1549
1550 ## Changes in this version:
1551
1552 ### NOTABLE CHANGES IN BEHAVIOR:
1553
1554  - Added the 'c'-flag to the itemizing of non-regular files so that the
1555    itemized output doesn't get hidden if there were no attribute changes, and
1556    also so that the itemizing of a `--copy-links` run will distinguish between
1557    copying an identical non-regular file and the creation of a revised version
1558    with a new value (e.g. a changed symlink referent, a new device number,
1559    etc.).
1560
1561 ### BUG FIXES:
1562
1563  - Fixed a crash bug when a single-use rsync daemon (via remote shell) was run
1564    without specifying a `--config=FILE` option.
1565
1566  - Fixed a crash when backing up a directory that has a default ACL.
1567
1568  - Fixed a bug in the handling of xattr values that could cause rsync to not
1569    think that a file's extended attributes are up-to-date.
1570
1571  - Fixed the working of `--fake-super` with `--link-dest` and `--xattrs`.
1572
1573  - Fixed a hang when combining `--dry-run` with `--remove-source-files`.
1574
1575  - Fixed a bug with `--iconv`'s handling of files that cannot be converted: a
1576    failed name can no longer cause a transfer failure.
1577
1578  - Fixed the building of the rounding.h file on systems that need custom
1579    CPPFLAGS to be used. Also improved the error reporting if the building of
1580    rounding.h fails.
1581
1582  - Fixed the use of the `--protect-args` (`-s`) option when talking to a
1583    daemon.
1584
1585  - Fixed the `--ignore-existing` option's protection of files on the receiver
1586    that are non-regular files on the sender (e.g. if a symlink or a dir on the
1587    sender is trying to replace a file on the receiver). The reverse protection
1588    (protecting a dir/symlink/device from being replaced by a file) was already
1589    working.
1590
1591  - Fixed an assert failure if `--hard-links` is combined with an option that
1592    can skip a file in a set of hard-linked files (i.e. `--ignore-existing`,
1593    `--append`, etc.), without skipping all the files in the set.
1594
1595  - Avoid setting the modify time on a directory that already has the right
1596    modify time set. This avoids tweaking the dir's ctime.
1597
1598  - Improved the daemon-exclude handling to do a better job of applying the
1599    exclude rules to path entries. It also sends the user an error just as if
1600    the files were actually missing (instead of silently ignoring the user's
1601    args), and avoids sending the user the filter-action messages for these
1602    non-user-initiated rules.
1603
1604  - Fixed some glitches with the dry-run code's missing-directory handling,
1605    including a problem when combined with `--fuzzy`.
1606
1607  - Fixed some glitches with the skipped-directory handling.
1608
1609  - Fixed the 'T'-flag itemizing of symlinks when `--time` isn't preserved.
1610
1611  - Fixed a glitch in the itemizing of permissions with the `-E` option.
1612
1613  - The `--append` option's restricting of transfers to those that add data no
1614    longer prevents the updating of non-content changes to otherwise up-to-date
1615    files (i.e. those with the same content but differing permissions,
1616    ownership, xattrs, etc.).
1617
1618  - Don't allow `--fake-super` to be specified with `-XX` (double `--xattrs`)
1619    because the options conflict. If a daemon has `fake super` enabled, it
1620    automatically downgrades a `-XX` request to `-X`.
1621
1622  - Fixed a couple bugs in the parsing of daemon-config excludes that could make
1623    a floating exclude rule get treated as matching an absolute path.
1624
1625  - A daemon doesn't try to auto-refuse the `iconv` option if iconv-support
1626    wasn't compiled in to the daemon (avoiding a warning in the logs).
1627
1628  - Fixed the inclusion of per-dir merge files from implied dirs.
1629
1630  - Fixed the support/rrsync script to work with the latest options that rsync
1631    sends (including its flag-specifying use of `-e` to the server).
1632
1633 ### ENHANCEMENTS:
1634
1635  - Added the `--old-dirs` (`--old-d`) option to make it easier for a user to
1636    ask for file-listings with older rsync versions (this is easier than having
1637    to type `-r --exclude='/*/*'` manually).
1638
1639  - When getting an error while asking an older rsync daemon for a file listing,
1640    rsync will try to notice if the error is a rejection of the `--dirs` (`-d`)
1641    option and let the user know how to work around the issue.
1642
1643  - Added a few more `--no-OPTION` overrides.
1644
1645  - Improved the documentation of the `--append` option.
1646
1647  - Improved the documentation of the filter/exclude/include daemon parameters.
1648
1649 ### INTERNAL:
1650
1651  - Fixed a couple minor bugs in the included popt library (ones which I sent to
1652    the official popt project for inclusion in the 1.14 release).
1653
1654  - Fixed a stat() call that should have been `do_stat()` so that the proper
1655    normal/64-bit stat() function gets called. (Was in an area that should not
1656    have caused problems, though.)
1657
1658  - Changed the file-glob code to do a directory scan without using the `glob`
1659    and `glob.h`. This lets us do the globbing with less memory churn, and also
1660    avoid adding daemon-excluded items to the returned args.
1661
1662 ### DEVELOPER RELATED:
1663
1664  - The configure script tries to get the user's compiler to not warn about
1665    unused function parameters if the build is not including one or more of the
1666    ACL/xattrs/iconv features.
1667
1668  - The configure script now has better checks for figuring out if the included
1669    popt code should be used or not.
1670
1671  - Fixed two testsuite glitches: avoid a failure if someone's `cd` command
1672    outputs the current directory when cd-ing to a relative path, and made the
1673    itemized test query how rsync was built to determine if it should expect
1674    hard-linked symlinks or not.
1675
1676  - Updated the testsuite to verify that various bug fixes remain fixed.
1677
1678  - The RPM spec file was updated to have: (1) comments for how to use the
1679    rsync-patch tar file, and (2) an /etc/xinetd.d/rsync file.
1680
1681  - Updated the build scripts to work with a revised FTP directory structure.
1682
1683 ------------------------------------------------------------------------------
1684 <a name="3.0.0"></a>
1685
1686 # NEWS for rsync 3.0.0 (1 Mar 2008)
1687
1688 ## Changes in this version:
1689
1690 ### PROTOCOL NUMBER:
1691
1692  - The protocol number was changed to 30.
1693
1694 ### NOTABLE CHANGES IN BEHAVIOR:
1695
1696  - The handling of implied directories when using `--relative` has changed to
1697    send them as directories (e.g. no implied dir is ever sent as a symlink).
1698    This avoids unexpected behavior and should not adversely affect most people.
1699    If you're one of those rare individuals who relied upon having an implied
1700    dir be duplicated as a symlink, you should specify the transfer of the
1701    symlink and the transfer of the referent directory as separate args. (See
1702    also `--keep-dirlinks` and `--no-implied-dirs`.) Also, exclude rules no
1703    longer have a partial effect on implied dirs.
1704
1705  - Requesting a remote file-listing without specifying `-r` (`--recursive`) now
1706    sends the `-d` (`--dirs`) option to the remote rsync rather than sending
1707    `-r` along with an extra exclude of `/*/*`. If the remote rsync does not
1708    understand the `-d` option (i.e. it is 2.6.3 or older), you will need to
1709    either turn off `-d` (`--no-d`), or specify `-r --exclude='/*/*'` manually.
1710
1711  - In `--dry-run` mode, the last line of the verbose summary text is output
1712    with a "(DRY RUN)" suffix to help remind you that no updates were made.
1713    Similarly, `--only-write-batch` outputs `(BATCH ONLY)`.
1714
1715  - A writable rsync daemon with `use chroot` disabled now defaults to a
1716    symlink-munging behavior designed to make symlinks safer while also allowing
1717    absolute symlinks to be stored and retrieved. This also has the effect of
1718    making symlinks unusable while they're in the daemon's hierarchy. See the
1719    daemon's `munge symlinks` parameter for details.
1720
1721  - Starting up an extra copy of an rsync daemon will not clobber the pidfile
1722    for the running daemon -- if the pidfile exists, the new daemon will exit
1723    with an error. This means that your wrapper script that starts the rsync
1724    daemon should be made to handle lock-breaking (if you want any automatic
1725    breaking of locks to be done).
1726
1727 ### BUG FIXES:
1728
1729  - A daemon with `use chroot = no` and excluded items listed in the daemon
1730    config file now properly checks an absolute-path arg specified for these
1731    options: `--compare-dest`, `--link-dest`, `--copy-dest`, `--partial-dir`,
1732    `--backup-dir`, `--temp-dir`, and `--files-from`.
1733
1734  - A daemon can now be told to disable all user- and group-name translation on
1735    a per-module basis. This avoids a potential problem with a writable daemon
1736    module that has `use chroot` enabled -- if precautions weren't taken, a user
1737    could try to add a missing library and get rsync to use it. This makes rsync
1738    safer by default, and more configurable when id-translation is not desired.
1739    See the daemon's `numeric ids` parameter for full details.
1740
1741  - A chroot daemon can now indicate which part of its path should affect the
1742    chroot call, and which part should become an inside-chroot path for the
1743    module. This allows you to have outside-the-transfer paths (such as for
1744    libraries) even when you enable chroot protection. The idiom used in the
1745    rsyncd.conf file is: `path = /chroot/dirs/./dirs/inside`
1746
1747  - If a file's data arrived successfully on the receiving side but the rename
1748    of the temporary file to the destination file failed AND the
1749    `--remove-source-files` (or the deprecated `--remove-sent-files`) option was
1750    specified, rsync no longer erroneously removes the associated source file.
1751
1752  - Fixed the output of `-ii` when combined with one of the `--*-dest` options:
1753    it now itemizes all the items, not just the changed ones.
1754
1755  - Made the output of all file types consistent when using a `--*-dest` option.
1756    Prior versions would output too many creation events for matching items.
1757
1758  - The code that waits for a child pid now handles being interrupted by a
1759    signal. This fixes a problem with the pre-xfer exec function not being able
1760    to get the exit status from the script.
1761
1762  - A negated filter rule (i.e. with a '!' modifier) no longer loses the
1763    negation when sending the filter rules to the remote rsync.
1764
1765  - Fixed a problem with the `--out-format` (aka `--log-format`) option %f: it
1766    no longer outputs superfluous directory info for a non-daemon rsync.
1767
1768  - Fixed a problem with `-vv` (double `--verbose`) and `--stats` when `pushing`
1769    files (which includes local copies). Version 2.6.9 would complete the copy,
1770    but exit with an error when the receiver output its memory stats.
1771
1772  - If `--password-file` is used on a non-daemon transfer, rsync now complains
1773    and exits. This should help users figure out that they can't use this option
1774    to control a remote shell's password prompt.
1775
1776  - Make sure that directory permissions of a newly-created destination
1777    directory are handled right when `--perms` is left off.
1778
1779  - The itemized output of a newly-created destination directory is now output
1780    as a creation event, not a change event.
1781
1782  - Improved `--hard-link` so that more corner cases are handled correctly when
1783    combined with options such as `--link-dest` and/or `--ignore-existing`.
1784
1785  - The `--append` option no longer updates a file that has the same size.
1786
1787  - Fixed a bug when combining `--backup` and `--backup-dir` with `--inplace`:
1788    any missing backup directories are now created.
1789
1790  - Fixed a bug when using `--backup` and `--inplace` with `--whole-file` or
1791    `--read-batch`: backup files are actually created now.
1792
1793  - The daemon pidfile is checked and created sooner in the startup sequence.
1794
1795  - If a daemon module's `path` value is not an absolute pathname, the code now
1796    makes it absolute internally (making it work properly).
1797
1798  - Ensure that a temporary file always has owner-write permission while we are
1799    writing to it. This avoids problems with some network filesystems when
1800    transferring read-only files.
1801
1802  - Any errors output about password-file reading no longer cause an error at
1803    the end of the run about a partial transfer.
1804
1805  - The `--read-batch` option for protocol 30 now ensures that several more
1806    options are set correctly for the current batch file: `--iconv`, `--acls`,
1807    `--xattrs`, `--inplace`, `--append`, and `--append-verify`.
1808
1809  - Using `--only-write-batch` to a daemon receiver now works properly (older
1810    versions would update some files while writing the batch).
1811
1812  - Avoid outputting a "file has vanished" message when the file is a broken
1813    symlink and `--copy-unsafe-links` or `--copy-dirlinks` is used (the code
1814    already handled this for `--copy-links`).
1815
1816  - Fixed the combination of `--only-write-batch` and `--dry-run`.
1817
1818  - Fixed rsync's ability to remove files that are not writable by the file's
1819    owner when rsync is running as the same user.
1820
1821  - When transferring large files, the sender's hashtable of checksums is kept
1822    at a more reasonable state of fullness (no more than 80% full) so that the
1823    scanning of the hashtable will not bog down as the number of blocks
1824    increases.
1825
1826 ### ENHANCEMENTS:
1827
1828  - A new incremental-recursion algorithm is now used when rsync is talking to
1829    another 3.x version. This starts the transfer going more quickly (before all
1830    the files have been found), and requires much less memory.  See the
1831    `--recursive` option in the manpage for some restrictions.
1832
1833  - Lowered memory use in the non-incremental-recursion algorithm for typical
1834    option values (usually saving from 21-29 bytes per file).
1835
1836  - The default `--delete` algorithm is now `--delete-during` when talking to a
1837    3.x rsync. This is a faster scan than using `--delete-before` (which is the
1838    default when talking to older rsync versions), and is compatible with the
1839    new incremental recursion mode.
1840
1841  - Rsync now allows multiple remote-source args to be specified rather than
1842    having to rely on a special space-splitting side-effect of the remote-
1843    shell. Additional remote args must specify the same host or an empty one
1844    (e.g. empty: `:file1` or `::module/file2`). For example, this means that
1845    local use of brace expansion now works: `rsync -av host:dir/{f1,f2} .`
1846
1847  - Added the `--protect-args` (`-s`) option, that tells rsync to send most of
1848    the command-line args at the start of the transfer rather than as args to
1849    the remote-shell command. This protects them from space-splitting, and only
1850    interprets basic wildcard special shell characters (`*?[`).
1851
1852  - Added the `--delete-delay` option, which is a more efficient way to delete
1853    files at the end of the transfer without needing a separate delete pass.
1854
1855  - Added the `--acls` (`-A`) option to preserve Access Control Lists. This is
1856    an improved version of the prior patch that was available, and it even
1857    supports OS X ACLs. If you need to have backward compatibility with old,
1858    ACL-patched versions of rsync, apply the acls.diff file from the patches
1859    dir.
1860
1861  - Added the `--xattrs` (`-X`) option to preserve extended attributes. This is
1862    an improved version of the prior patch that was available, and it even
1863    supports OS X xattrs (which includes their resource fork data). If you need
1864    to have backward compatibility with old, xattr-patched versions of rsync,
1865    apply the xattrs.diff file from the patches dir.
1866
1867  - Added the `--fake-super` option that allows a non-super user to preserve all
1868    attributes of a file by using a special extended-attribute idiom.  It even
1869    supports the storing of foreign ACL data on your backup server.  There is
1870    also an analogous `fake super` parameter for an rsync daemon.
1871
1872  - Added the `--iconv` option, which allows rsync to convert filenames from one
1873    character-set to another during the transfer. The default is to make this
1874    feature available as long as your system has `iconv_open()`.  If compilation
1875    fails, specify `--disable-iconv` to configure, and then rebuild. If you want
1876    rsync to perform character-set conversions by default, you can specify
1877    `--enable-iconv=CONVERT_STRING` with the default value for the `--iconv`
1878    option that you wish to use. For example, `--enable-iconv=.` is a good
1879    choice. See the rsync manpage for an explanation of the `--iconv` option's
1880    settings.
1881
1882  - A new daemon config parameter, `charset`, lets you control the character-
1883    set that is used during an `--iconv` transfer to/from a daemon module. You
1884    can also set your daemon to refuse `no-iconv` if you want to force the
1885    client to use an `--iconv` transfer (requiring an rsync 3.x client).
1886
1887  - Added the `--skip-compress=LIST` option to override the default list of file
1888    suffixes that will not be compressed when using `--compress` (`-z`).
1889
1890  - The daemon's default for `dont compress` was extended to include: `*.7z`
1891    `*.mp[34]` `*.mov` `*.avi` `*.ogg` `*.jpg` `*.jpeg` and the name-matching routine was also
1892    optimized to run more quickly.
1893
1894  - The `--max-delete` option now outputs a warning if it skipped any file
1895    deletions, including a count of how many deletions were skipped. (Older
1896    versions just silently stopped deleting things.)
1897
1898  - You may specify `--max-delete=0` to a 3.0.0 client to request that it warn
1899    about extraneous files without deleting anything. If you're not sure what
1900    version the client is, you can use the less-obvious `--max-delete=-1`, as
1901    both old and new versions will treat that as the same request (though older
1902    versions don't warn).
1903
1904  - The `--hard-link` option now uses less memory on both the sending and
1905    receiving side for all protocol versions. For protocol 30, the use of a
1906    hashtable on the sending side allows us to more efficiently convey to the
1907    receiver what files are linked together. This reduces the amount of data
1908    sent over the socket by a considerable margin (rather than adding more
1909    data), and limits the in-memory storage of the device+inode information to
1910    just the sending side for the new protocol 30, or to the receiving side when
1911    speaking an older protocol (note that older rsync versions kept the
1912    device+inode information on both sides).
1913
1914  - The filter rules now support a perishable (`p`) modifier that marks rules
1915    that should not have an effect in a directory that is being deleted. e.g.
1916    `-f '-p .svn/'` would only affect `live` .svn directories.
1917
1918  - Rsync checks all the alternate-destination args for validity (e.g.
1919    `--link-dest`). This lets the user know when they specified a directory that
1920    does not exist.
1921
1922  - If we get an ENOSYS error setting the time on a symlink, we don't complain
1923    about it anymore (for those systems that even support the setting of the
1924    modify-time on a symlink).
1925
1926  - Protocol 30 now uses MD5 checksums instead of MD4.
1927
1928  - Changed the `--append` option to not checksum the existing data in the
1929    destination file, which speeds up file appending.
1930
1931  - Added the `--append-verify` option, which works like the older `--append`
1932    option (verifying the existing data in the destination file). For
1933    compatibility with older rsync versions, any use of `--append` that is
1934    talking protocol 29 or older will revert to the `--append-verify` method.
1935
1936  - Added the `--contimeout=SECONDS` option that lets the user specify a
1937    connection timeout for rsync daemon access.
1938
1939  - Documented and extended the support for the `RSYNC_CONNECT_PROG` variable
1940    that can be used to enhance the client side of a daemon connection.
1941
1942  - Improved the dashes and double-quotes in the nroff manpage output.
1943
1944  - Rsync now supports a lot more `--no-OPTION` override options.
1945
1946 ### INTERNAL:
1947
1948  - The file-list sorting algorithm now uses a sort that keeps any same-named
1949    items in the same order as they were specified. This allows rsync to always
1950    ensure that the first of the duplicates is the one that will be included in
1951    the copy. The new sort is also faster than the glibc version of qsort() and
1952    mergesort().
1953
1954  - Rsync now supports the transfer of 64-bit timestamps (`time_t` values).
1955
1956  - Made the file-deletion code use a little less stack when recursing through a
1957    directory hierarchy of extraneous files.
1958
1959  - Fixed a build problem with older (2.x) versions of gcc.
1960
1961  - Added some isType() functions that make dealing with signed characters
1962    easier without forcing variables via casts.
1963
1964  - Changed strcat/strcpy/sprintf function calls to use safer versions.
1965
1966  - Upgraded the included popt version to 1.10.2 and improved its use of
1967    string-handling functions.
1968
1969  - Added missing prototypes for compatibility functions from the lib dir.
1970
1971  - Configure determines if iconv() has a const arg, allowing us to avoid a
1972    compiler warning.
1973
1974  - Made the sending of some numbers more efficient for protocol 30.
1975
1976  - Make sure that a daemon process doesn't mind if the client was weird and
1977    omitted the `--server` option.
1978
1979  - There are more internal logging categories available in protocol 30 than the
1980    age-old FINFO and FERROR, including `FERROR_XFER` and FWARN. These new
1981    categories allow some errors and warnings to go to stderr without causing an
1982    erroneous end-of-run warning about some files not being able to be
1983    transferred.
1984
1985  - Improved the use of `const` on pointers.
1986
1987  - Improved J.W.'s `pool_alloc` routines to add a way of incrementally freeing
1988    older sections of a pool's memory.
1989
1990  - The getaddrinfo.c compatibility code in the `lib` dir was replaced with some
1991    new code (derived from samba, derived from PostgreSQL) that has a better
1992    license than the old code.
1993
1994 ### DEVELOPER RELATED:
1995
1996  - Rsync is now licensed under the GPLv3 or later.
1997
1998  - Rsync is now being maintained in a `git` repository instead of CVS (though
1999    the old CVS repository still exists for historical access).  Several
2000    maintenance scripts were updated to work with git.
2001
2002  - Generated files are no longer committed into the source repository. The
2003    autoconf and autoheader commands are now automatically run during the normal
2004    use of `configure` and `make`. The latest dev versions of all generated
2005    files can also be copied from the samba.org web site (see the prepare-source
2006    script's fetch option).
2007
2008  - The `patches` directory of diff files is now built from branches in the
2009    rsync git repository (branch patch/FOO creates file patches/FOO.diff).  This
2010    directory is now distributed in a separate separate tar file named
2011    rsync-patches-VERSION.tar.gz instead of the main rsync-VERSION.tar.gz.
2012
2013  - The proto.h file is now built using a simple perl script rather than a
2014    complex awk script, which proved to be more widely compatible.
2015
2016  - When running the tests, we now put our per-test temp dirs into a sub-
2017    directory named testtmp (which is created, if missing). This allows someone
2018    to symlink the testtmp directory to another filesystem (which is useful if
2019    the build dir's filesystem does not support ACLs and xattrs, but another
2020    filesystem does).
2021
2022  - Rsync now has a way of handling protocol-version changes during the
2023    development of a new protocol version. This causes any out-of-sync versions
2024    to speak an older protocol rather than fail in a cryptic manner.  This
2025    addition makes it safer to deploy a pre-release version that may interact
2026    with the public. This new exchange of sub-version info does not interfere
2027    with the `{MIN,MAX}_PROTOCOL_VERSION` checking algorithm (which does not
2028    have enough range to allow the main protocol number to be incremented for
2029    every minor tweak in that happens during development).
2030
2031  - The csprotocol.txt file was updated to mention the daemon protocol change in
2032    the 3.0.0 release.
2033
2034 ------------------------------------------------------------------------------
2035 <a name="2.6.9"></a>
2036
2037 # NEWS for rsync 2.6.9 (6 Nov 2006)
2038
2039 ## Changes in this version:
2040
2041 ### BUG FIXES:
2042
2043  - If rsync is interrupted via a handled signal (such as SIGINT), it will once
2044    again clean-up its temp file from the destination dir.
2045
2046  - Fixed an overzealous sanitizing bug in the handling of the `--link-dest`,
2047    `--copy-dest`, and `--compare-dest` options to a daemon without chroot: if
2048    the copy's destination dir is deeper than the top of the module's path,
2049    these options now accept a safe number of parent-dir (../) references (since
2050    these options are relative to the destination dir). The old code incorrectly
2051    chopped off all `../` prefixes for these options, no matter how deep the
2052    destination directory was in the module's hierarchy.
2053
2054  - Fixed a bug where a deferred info/error/log message could get sent directly
2055    to the sender instead of being handled by rwrite() in the generator. This
2056    fixes an `unexpected tag 3` fatal error, and should also fix a potential
2057    problem where a deferred info/error message from the receiver might bypass
2058    the log file and get sent only to the client process. (These problems could
2059    only affect an rsync daemon that was receiving files.)
2060
2061  - Fixed a bug when `--inplace` was combined with a `--*-dest` option and we
2062    update a file's data using an alternate basis file. The code now notices
2063    that it needs to copy the matching data from the basis file instead of
2064    (wrongly) assuming that it was already present in the file.
2065
2066  - Fixed a bug where using `--dry-run` with a `--*-dest` option with a path
2067    relative to a directory that does not yet exist: the affected option gets
2068    its proper path value so that the output of the dry-run is right.
2069
2070  - Fixed a bug in the %f logfile escape when receiving files: the destination
2071    path is now included in the output (e.g. you can now tell when a user
2072    specifies a subdir inside a module).
2073
2074  - If the receiving side fails to create a directory, it will now skip trying
2075    to update everything that is inside that directory.
2076
2077  - If `--link-dest` is specified with `--checksum` but without `--times`, rsync
2078    will now allow a hard-link to be created to a matching link-dest file even
2079    when the file's modify-time doesn't match the server's file.
2080
2081  - The daemon now calls more timezone-using functions prior to doing a chroot.
2082    This should help some C libraries to generate proper timestamps from inside
2083    a chrooted daemon (and to not try to access /etc/timezone over and over
2084    again).
2085
2086  - Fixed a bug in the handling of an absolute `--partial-dir=ABS_PATH` option:
2087    it now deletes an alternate basis file from the partial-dir that was used to
2088    successfully update a destination file.
2089
2090  - Fixed a bug in the handling of `--delete-excluded` when using a per-dir
2091    merge file: the merge file is now honored on the receiving side, and only
2092    its unqualified include/exclude commands are ignored (just as is done for
2093    global include/excludes).
2094
2095  - Fixed a recent bug where `--delete` was not working when transferring from
2096    the root (/) of the filesystem with `--relative` enabled.
2097
2098  - Fixed a recent bug where an `--exclude='*'` could affect the root (/) of the
2099    filesystem with `--relative` enabled.
2100
2101  - When `--inplace` creates a file, it is now created with owner read/write
2102    permissions (0600) instead of no permissions at all. This avoids a problem
2103    continuing a transfer that was interrupted (since `--inplace` will not
2104    update a file that has no write permissions).
2105
2106  - If either `--remove-source-files` or `--remove-sent-files` is enabled and we
2107    are unable to remove the source file, rsync now outputs an error.
2108
2109  - Fixed a bug in the daemon's `incoming chmod` rule: newly-created directories
2110    no longer get the 'F' (file) rules applied to them.
2111
2112  - Fixed an infinite loop bug when a filter rule was rejected due to being
2113    overly long.
2114
2115  - When the server receives a `--partial-dir` option from the client, it no
2116    longer runs the client-side code that adds an assumed filter rule (since the
2117    client will be sending us the rules in the usual manner, and they may have
2118    chosen to override the auto-added rule).
2119
2120 ### ENHANCEMENTS:
2121
2122  - Added the `--log-file=FILE` and `--log-file-format=FORMAT` options. These
2123    can be used to tell any rsync to output what it is doing to a log file.
2124    They work with a client rsync, a non-daemon server rsync (see the man page
2125    for instructions), and also allows the overriding of rsyncd.conf settings
2126    when starting a daemon.
2127
2128  - The `--log-format` option was renamed to be `--out-format` to avoid
2129    confusing it with affecting the log-file output. (The old option remains as
2130    an alias for the new to preserve backward compatibility.)
2131
2132  - Made `log file` and `syslog facility` settable on a per-module basis in the
2133    daemon's config file.
2134
2135  - Added the `--remove-source-files` option as a replacement for the (now
2136    deprecated) `--remove-sent-files` option. This new option removes all
2137    non-dirs from the source directories, even if the file was already
2138    up-to-date. This fixes a problem where interrupting an rsync that was using
2139    `--remove-sent-files` and restarting it could leave behind a file that the
2140    earlier rsync synchronized, but didn't get to remove.  (The deprecated
2141    `--remove-sent-files` is still understood for now, and still behaves in the
2142    same way as before.)
2143
2144  - Added the option `--no-motd` to suppress the message-of-the-day output from
2145    a daemon when doing a copy. (See the manpage for a caveat.)
2146
2147  - Added a new environment variable to the pre-/post-xfer exec commands (in the
2148    daemon's config file): `RSYNC_PID`. This value will be the same in both the
2149    pre- and post-xfer commands, so it can be used as a unique ID if the
2150    pre-xfer command wants to cache some arg/request info for the post-xfer
2151    command.
2152
2153 ### INTERNAL:
2154
2155  - Did a code audit using IBM's code-checker program and made several changes,
2156    including: replacing most of the strcpy() and sprintf() calls with
2157    strlcpy(), snprintf(), and memcpy(), adding a 0-value to an enum that had
2158    been intermingling a literal 0 with the defined enum values, silencing some
2159    uninitialized memory checks, marking some functions with a `noreturn`
2160    attribute, and changing an `if` that could never succeed on some platforms
2161    into a pre-processor directive that conditionally compiles the code.
2162
2163  - Fixed a potential bug in `f_name_cmp()` when both the args are a top-level
2164    `.` dir (which doesn't happen in normal operations).
2165
2166  - Changed `exit_cleanup()` so that it can never return instead of exit.  The
2167    old code might return if it found the `exit_cleanup()` function was being
2168    called recursively. The new code is segmented so that any recursive calls
2169    move on to the next step of the exit-processing.
2170
2171  - The macro WIFEXITED(stat) will now be defined if the OS didn't already
2172    define it.
2173
2174 ### DEVELOPER RELATED:
2175
2176  - The acls.diff and xattrs.diff patches have received a bunch of work to make
2177    them much closer to being acceptable in the main distribution.  The xattrs
2178    patch also has some preliminary Mac OS X and FreeBSD compatibility code that
2179    various system types to exchange extended file-attributes.
2180
2181  - A new diff in the patches dir, fake-root.diff, allows rsync to maintain a
2182    backup hierarchy with full owner, group, and device info without actually
2183    running as root. It does this using a special extended attribute, so it
2184    depends on xattrs.diff (which depends on acls.diff).
2185
2186  - The rsync.yo and rsyncd.conf.yo files have been updated to work better with
2187    the latest yodl 2.x releases.
2188
2189  - Updated config.guess and config.sub to their 2006-07-02 versions.
2190
2191  - Updated various files to include the latest FSF address and to have
2192    consistent opening comments.
2193
2194 ------------------------------------------------------------------------------
2195 <a name="2.6.8"></a>
2196
2197 # NEWS for rsync 2.6.8 (22 Apr 2006)
2198
2199 ## Changes in this version:
2200
2201 ### BUG FIXES:
2202
2203  - Fixed a bug in the exclude code where an anchored exclude without any
2204    wildcards fails to match an absolute source arg, but only when `--relative`
2205    is in effect.
2206
2207  - Improved the I/O code for the generator to fix a potential hang when the
2208    receiver gets an EOF on the socket but the generator's select() call never
2209    indicates that the socket is writable for it to be notified about the EOF.
2210    (This can happen when using stunnel).
2211
2212  - Fixed a problem with the file-reading code where a failed read (such as that
2213    caused by a bad sector) would not advance the file's read-position beyond
2214    the failed read's data.
2215
2216  - Fixed a logging bug where the `log file` directive was not being honored in
2217    a single-use daemon (one spawned by a remote-shell connection or by init).
2218
2219  - If rsync cannot honor the `--delete` option, we output an error and exit
2220    instead of silently ignoring the option.
2221
2222  - Fixed a bug in the `--link-dest` code that prevented special files (such as
2223    fifos) from being linked.
2224
2225  - The ability to hard-link symlinks and special files is now determined at
2226    configure time instead of at runtime. This fixes a bug with `--link-dest`
2227    creating a hard-link to a symlink's referent on a BSD system.
2228
2229 ### ENHANCEMENTS:
2230
2231  - In daemon mode, if rsync fails to bind to the requested port, the error(s)
2232    returned by socket() and/or bind() are now logged.
2233
2234  - When we output a fatal error, we now output the version of rsync in the
2235    message.
2236
2237  - Improved the documentation for the `--owner` and `--group` options.
2238
2239  - The rsyncstats script in `support` has an improved line-parsing regex that
2240    is easier to read and also makes it to parse syslog-generated lines.
2241
2242  - A new script in `support`: file-attr-restore, can be used to restore the
2243    attributes of a file-set (the permissions, ownership, and group info) taken
2244    from the cached output of a `find ARG... -ls` command.
2245
2246 ### DEVELOPER RELATED:
2247
2248  - Removed the unused function `write_int_named()`, the unused variable
2249    `io_read_phase`, and the rarely used variable `io_write_phase`. This also
2250    elides the confusing 'phase "unknown"' part of one error message.
2251
2252  - Removed two unused configure checks and two related (also unused)
2253    compatibility functions.
2254
2255  - The xattrs.diff patch received a security fix that prevents a potential
2256    buffer overflow in the `receive_xattr()` code.
2257
2258  - The acls.diff patch has been improved quite a bit, with more to come.
2259
2260  - A new patch was added: log-file.diff. This contains an early version of a
2261    future option, `--log-file=FILE`, that will allow any rsync to log its
2262    actions to a file (something that only a daemon supports at present).
2263
2264 ------------------------------------------------------------------------------
2265 <a name="2.6.7"></a>
2266
2267 # NEWS for rsync 2.6.7 (11 Mar 2006)
2268
2269 ## Changes in this version:
2270
2271 ### OUTPUT CHANGES:
2272
2273  - The letter 'D' in the itemized output was being used for both devices
2274    (character or block) as well as other special files (such as fifos and named
2275    sockets). This has changed to separate non-device special files under the
2276    'S' designation (e.g. `cS+++++++ path/fifo`). See also the `--specials`
2277    option, below.
2278
2279  - The way rsync escapes unreadable characters has changed. First, rsync now
2280    has support for recognizing valid multibyte character sequences in your
2281    current locale, allowing it to escape fewer characters than before for a
2282    locale such as UTF-8. Second, it now uses an escape idiom of `\#123`, which
2283    is the literal string `\#` followed by exactly 3 octal digits. Rsync no
2284    longer doubles a backslash character in a filename (e.g. it used to output
2285    `foo\\bar` when copying `foo\bar`) -- now it only escapes a backslash that
2286    is followed by a hash-sign and 3 digits (0-9) (e.g. it will output
2287    `foo\#134#789` when copying `foo\#789`). See also the `--8-bit-output`
2288    (`-8`) option, mentioned below.
2289
2290    Script writers: the local rsync is the one that outputs escaped names, so if
2291    you need to support unescaping of filenames for older rsyncs, I'd suggest
2292    that you parse the output of `rsync --version` and only use the old
2293    unescaping rules for 2.6.5 and 2.6.6.
2294
2295 ### BUG FIXES:
2296
2297  - Fixed a really old bug that caused `--checksum` (`-c`) to checksum all the
2298    files encountered during the delete scan (ouch).
2299
2300  - Fixed a potential hang in a remote generator: when the receiver gets a
2301    read-error on the socket, it now signals the generator about this so that
2302    the generator does not try to send any of the terminating error messages to
2303    the client (avoiding a potential hang in some setups).
2304
2305  - Made hard-links work with symlinks and devices again.
2306
2307  - If the sender gets an early EOF reading a source file, we propagate this
2308    error to the receiver so that it can discard the file and try requesting it
2309    again (which is the existing behavior for other kinds of read errors).
2310
2311  - If a device-file/special-file changes permissions, rsync now updates the
2312    permissions without recreating the file.
2313
2314  - If the user specifies a remote-host for both the source and destination, we
2315    now output a syntax error rather than trying to open the destination
2316    hostspec as a filename.
2317
2318  - When `--inplace` creates a new destination file, rsync now creates it with
2319    permissions 0600 instead of 0000 -- this makes restarting possible when the
2320    transfer gets interrupted in the middle of sending a new file.
2321
2322  - Reject the combination of `--inplace` and `--sparse` since the sparse-output
2323    algorithm doesn't work when overwriting existing data.
2324
2325  - Fixed the directory name in the error that is output when `pop_dir()` fails.
2326
2327  - Really fixed the parsing of a `!` entry in .cvsignore files this time.
2328
2329  - If the generator gets a stat() error on a file, output it (this used to
2330    require at least `-vv` for the error to be seen).
2331
2332  - If waitpid() fails or the child rsync didn't exit cleanly, we now handle the
2333    exit status properly and generate a better error.
2334
2335  - Fixed some glitches in the double-verbose output when using `--copy-dest`,
2336    `--link-dest`, or `--compare-dest`. Also improved how the verbose output
2337    handles hard-links (within the transfer) that had an up-to-date alternate
2338    `dest` file, and copied files (via `--copy-dest`).
2339
2340  - Fixed the matching of the dont-compress items (e.g. `*.gz`) against files
2341    that have a path component containing a slash.
2342
2343  - If the code reading a filter/exclude file gets an EINTR error, rsync now
2344    clears the error flag on the file handle so it can keep on reading.
2345
2346  - If `--relative` is active, the sending side cleans up trailing `/` or `/.`
2347    suffixes to avoid triggering a bug in older rsync versions. Also, we now
2348    reject a `..` dir if it would be sent as a relative dir.
2349
2350  - If a non-directory is in the way of a directory and rsync is run with
2351    `--dry-run` and `--delete`, rsync no longer complains about not being able
2352    to opendir() the not-yet present directory.
2353
2354  - When `--list-only` is used and a non-existent local destination dir was also
2355    specified as a destination, rsync no longer generates a warning about being
2356    unable to create the missing directory.
2357
2358  - Fixed some problems with `--relative --no-implied-dirs` when the destination
2359    directory did not yet exist: we can now create a symlink or device when it
2360    is the first thing in the missing dir, and `--fuzzy` no longer complains
2361    about being unable to open the missing dir.
2362
2363  - Fixed a bug where the `--copy-links` option would not affect implied
2364    directories without `--copy-unsafe-links` (see `--relative`).
2365
2366  - Got rid of the need for `--force` to be used in some circumstances with
2367    `--delete-after` (making it consistent with
2368    `--delete-before`/`--delete-during`).
2369
2370  - Rsync now ignores the SIGXFSZ signal, just in case your OS sends this when a
2371    file is too large (rsync handles the write error).
2372
2373  - Fixed a bug in the Proxy-Authorization header's base64-encoded value: it was
2374    not properly padded with trailing '=' chars. This only affects a user that
2375    need to use a password-authenticated proxy for an outgoing daemon-rsync
2376    connection.
2377
2378  - If we're transferring an empty directory to a new name, rsync no longer
2379    forces `S_IWUSR` if it wasn't already set, nor does it accidentally leave it
2380    set.
2381
2382  - Fixed a bug in the debug output (`-vvvvv`) that could mention the wrong
2383    checksum for the current file offset.
2384
2385  - Rsync no longer allows a single directory to be copied over a non-directory
2386    destination arg.
2387
2388 ### ENHANCEMENTS:
2389
2390  - Added the `--append` option that makes rsync append data onto files that are
2391    longer on the source than the destination (this includes new files).
2392
2393  - Added the `--min-size=SIZE` option to exclude small files from the transfer.
2394
2395  - Added the `--compress-level` option to allow you to set how aggressive
2396    rsync's compression should be (this option implies `--compress`).
2397
2398  - Enhanced the parsing of the SIZE value for `--min-size` and `--max-size` to
2399    allow easy entry of multiples of 1000 (instead of just multiples of 1024)
2400    and off-by-one values too (e.g. `--max-size=8mb-1`).
2401
2402  - Added the `--8-bit-output` (`-8`) option, which tells rsync to avoid
2403    escaping high-bit characters that it thinks are unreadable in the current
2404    locale.
2405
2406  - The new option `--human-readable` (`-h`) changes the output of `--progress`,
2407    `--stats`, and the end-of-run summary to be easier to read. If repeated, the
2408    units become powers of 1024 instead of powers of 1000. (The old meaning of
2409    `-h`, as a shorthand for `--help`, still works as long as you just use it on
2410    its own, as in `rsync -h`.)
2411
2412  - If lutimes() and/or lchmod() are around, use them to allow the preservation
2413    of attributes on symlinks.
2414
2415  - The `--link-dest` option now affects symlinks and devices (when possible).
2416
2417  - Added two config items to the rsyncd.conf parsing: `pre-xfer exec` and
2418    `post-xfer exec`. These allow a command to be specified on a per-module
2419    basis that will be run before and/or after a daemon-mode transfer. (See the
2420    man page for a list of the environment variables that are set with
2421    information about the transfer.)
2422
2423  - When using the `--relative` option, you can now insert a dot dir in the
2424    source path to indicate where the replication of the source dirs should
2425    start. For example, if you specify a source path of
2426    rsync://host/module/foo/bar/./baz/dir with `-R`, rsync will now only
2427    replicate the `baz/dir` part of the source path (note: a trailing dot dir is
2428    unaffected unless it also has a trailing slash).
2429
2430  - Added some new `--no-FOO` options that make it easier to override unwanted
2431    implied or default options. For example, `-a --no-o` (aka `--archive
2432    --no-owner`) can be used to turn off the preservation of file ownership that
2433    is implied by `-a`.
2434
2435  - Added the `--chmod=MODE` option that allows the destination permissions to
2436    be changed from the source permissions. E.g. `--chmod=g+w,o-rwx`
2437
2438  - Added the `incoming chmod` and `outgoing chmod` daemon options that allow a
2439    module to specify what permissions changes should be applied to all files
2440    copied to and from the daemon.
2441
2442  - Allow the `--temp-dir` option to be specified when starting a daemon, which
2443    sets the default temporary directory for incoming files.
2444
2445  - If `--delete` is combined with `--dirs` without `--recursive`, rsync will
2446    now delete in any directory whose content is being synchronized.
2447
2448  - If `--backup` is combined with `--delete` without `--backup-dir` (and
2449    without `--delete-excluded`), we add a `protect` filter-rule to ensure that
2450    files with the backup suffix are not deleted.
2451
2452  - The file-count stats that are output by `--progress` were improved to better
2453    indicate what the numbers mean. For instance, the output: `(xfer#5,
2454    to-check=8383/9999)` indicates that this was the fifth file to be
2455    transferred, and we still need to check 8383 more files out of a total of
2456    9999.
2457
2458  - The include/exclude code now allows a `dir/***` directive (with 3 trailing
2459    stars) to match both the dir itself as well as all the content below the dir
2460    (`dir/**` would not match the dir).
2461
2462  - Added the `--prune-empty-dirs` (`-m`) option that makes the receiving rsync
2463    discard empty chains of directories from the file-list. This makes it easier
2464    to selectively copy files from a source hierarchy and end up with just the
2465    directories needed to hold the resulting files.
2466
2467  - If the `--itemize-changes` (`-i`) option is repeated, rsync now includes
2468    unchanged files in the itemized output (similar to `-vv`, but without all
2469    the other verbose messages that can get in the way). Of course, the client
2470    must be version 2.6.7 for this to work, but the remote rsync only needs to
2471    be 2.6.7 if you're pushing files.
2472
2473  - Added the `--specials` option to tell rsync to copy non-device special files
2474    (which rsync now attempts even as a normal user). The `--devices` option now
2475    requests the copying of just devices (character and block).  The `-D` option
2476    still requests both (e.g. `--devices` and `--specials`), `-a` still implies
2477    `-D`, and non-root users still get a silent downgrade that omits device
2478    copying.
2479
2480  - Added the `--super` option to make the receiver always attempt super-user
2481    activities. This is useful for systems that allow things such as devices to
2482    be created or ownership to be set without being UID 0, and is also useful
2483    for someone who wants to ensure that errors will be output if the receiving
2484    rsync isn't being run as root.
2485
2486  - Added the `--sockopts` option for those few who want to customize the TCP
2487    options used to contact a daemon rsync.
2488
2489  - Added a way for the `--temp-dir` option to be combined with a partial-dir
2490    setting that lets rsync avoid non-atomic updates (for those times when
2491    `--temp-dir` is not being used because space is tight).
2492
2493  - A new support script, files-to-excludes, will transform a list of files into
2494    a set of include/exclude directives that will copy those files.
2495
2496  - A new option, `--executability` (`-E`) can be used to preserve just the
2497    execute bit on files, for those times when using the `--perms` option is not
2498    desired.
2499
2500  - The daemon now logs each connection and also each module-list request that
2501    it receives.
2502
2503  - New log-format options: %M (modtime), %U (uid), %G (gid), and %B (permission
2504    bits, e.g. `rwxr-xrwt`).
2505
2506  - The `--dry-run` option no longer forces the enabling of `--verbose`.
2507
2508  - The `--remove-sent-files` option now does a better job of incrementally
2509    removing the sent files on the sending side (older versions tended to clump
2510    up all the removals at the end).
2511
2512  - A daemon now supersedes its minimal SIGCHLD handler with the standard
2513    PID-remembering version after forking. This ensures that the generator can
2514    get the child-exit status from the receiver.
2515
2516  - Use of the `--bwlimit` option no longer interferes with the remote rsync
2517    sending error messages about invalid/refused options.
2518
2519  - Rsync no longer returns a usage error when used with one local source arg
2520    and no destination: this now implies the `--list-only` option, just like the
2521    comparable situation with a remote source arg.
2522
2523  - Added the `--copy-dirlinks` option, a more limited version of
2524    `--copy-links`.
2525
2526  - Various documentation improvements, including: a better synopsis, some
2527    improved examples, a better discussion of the presence and absence of
2528    `--perms` (including how it interacts with the new `--executability` and
2529    `--chmod` options), an extended discussion of `--temp-dir`, an improved
2530    discussion of `--partial-dir`, a better description of rsync's pattern
2531    matching characters, an improved `--no-implied-dirs` section, and the
2532    documenting of what the `--stats` option outputs.
2533
2534  - Various new and updated diffs in the patches dir, including: acls.diff,
2535    xattrs.diff, atimes.diff, detect-renamed.diff, and slp.diff.
2536
2537 ### INTERNAL:
2538
2539  - We now use sigaction() and sigprocmask() if possible, and fall back on
2540    signal() if not. Using sigprocmask() ensures that rsync enables all the
2541    signals that it needs, just in case it was started in a masked state.
2542
2543  - Some buffer sizes were expanded a bit, particularly on systems where
2544    MAXPATHLEN is overly small (e.g. Cygwin).
2545
2546  - If `io_printf()` tries to format more data than fits in the buffer, exit
2547    with an error instead of transmitting a truncated buffer.
2548
2549  - If a `va_copy` macro is defined, lib/snprintf.c will use it when defining
2550    the `VA_COPY` macro.
2551
2552  - Reduced the amount of stack memory needed for each level of directory
2553    recursion by nearly MAXPATHLEN bytes.
2554
2555  - The wildmatch function was extended to allow an array of strings to be
2556    supplied as the string to match. This allows the exclude code to do less
2557    string copying.
2558
2559  - Got rid of the `safe_fname()` function (and all the myriad calls) and
2560    replaced it with a new function in the log.c code that filters all the
2561    output going to the terminal.
2562
2563  - Unified the `f_name()` and the `f_name_to()` functions.
2564
2565  - Improved the hash-table code the sender uses to handle checksums to make it
2566    use slightly less memory and run just a little faster.
2567
2568 ### DEVELOPER RELATED:
2569
2570  - The diffs in the patches dir now require `patch -p1 <DIFF` instead of the
2571    previous `-p0`. Also, the version included in the release tar now affect
2572    generated files (e.g. configure, rsync.1, proto.h, etc.), so it is no longer
2573    necessary to run autoconf and/or yodl unless you're applying a patch that
2574    was checked out from CVS.
2575
2576  - Several diffs in the patches dir now use the proper `--enable-FOO` configure
2577    option instead of `--with-FOO` to turn on the inclusion of the newly patched
2578    feature.
2579
2580  - There is a new script, `prepare-source` than can be used to update the
2581    various generated files (proto.h, configure, etc.) even before configure has
2582    created the Makefile (this is mainly useful when patching the source with a
2583    patch that doesn't affect generated files).
2584
2585  - The testsuite now sets HOME so that it won't be affected by a file such as
2586    ~/.popt.
2587
2588 ------------------------------------------------------------------------------
2589 <a name="2.6.6"></a>
2590
2591 # NEWS for rsync 2.6.6 (28 Jul 2005)
2592
2593 ## Changes in this version:
2594
2595 ### SECURITY FIXES:
2596
2597  - The zlib code was upgraded to version 1.2.3 in order to make it more secure.
2598    While the widely-publicized security problem in zlib 1.2.2 did not affect
2599    rsync, another security problem surfaced that affects rsync's zlib 1.1.4.
2600
2601 ### BUG FIXES:
2602
2603  - The setting of `flist->high` in `clean_flist()` was wrong for an empty list.
2604    This could cause `flist_find()` to crash in certain rare circumstances (e.g.
2605    if just the right directory setup was around when `--fuzzy` was combined
2606    with `--link-dest`).
2607
2608  - The outputting of hard-linked files when verbosity was > 1 was not right:
2609    (1) Without `-i` it would output the name of each hard-linked file as though
2610    it had been changed; it now outputs a `is hard linked` message for the file.
2611    (2) With `-i` it would output all dots for the unchanged attributes of a
2612    hard-link; it now changes those dots to spaces, as is done for other totally
2613    unchanged items.
2614
2615  - When backing up a changed symlink or device, get rid of any old backup item
2616    so that we don't get an `already exists` error.
2617
2618  - A couple places that were comparing a local and a remote modification-time
2619    were not honoring the `--modify-window` option.
2620
2621  - Fixed a bug where the 'p' (permissions) itemized-changes flag might get set
2622    too often (if some non-significant mode bits differed).
2623
2624  - Fixed a really old, minor bug that could cause rsync to warn about being
2625    unable to mkdir() a path that ends in `/.` because it just created the
2626    directory (required `--relative`, `--no-implied-dirs`, a source path that
2627    ended in either a trailing slash or a trailing `/.`, and a non-existing
2628    destination dir to tickle the bug in a recent version).
2629
2630 ### ENHANCEMENTS:
2631
2632  - Made the `max verbosity` setting in the rsyncd.conf file settable on a
2633    per-module basis (which now matches the documentation).
2634
2635  - The support/rrsync script has been upgraded to verify the args of options
2636    that take args (instead of rejecting any such options). The script was also
2637    changed to try to be more secure and to fix a problem in the parsing of a
2638    pull operation that has multiple sources.
2639
2640  - Improved the documentation that explains the difference between a normal
2641    daemon transfer and a daemon-over remote-shell transfer.
2642
2643  - Some of the diffs supplied in the patches dir were fixed and/or improved.
2644
2645 ### BUILD CHANGES:
2646
2647  - Made configure define `NOBODY_USER` (currently hard-wired to `nobody`) and
2648    `NOBODY_GROUP` (set to either `nobody` or `nogroup` depending on what we
2649    find in the /etc/group file).
2650
2651  - Added a test to the test suite, itemized.test, that tests the output of `-i`
2652    (log-format w/%i) and some double-verbose messages.
2653
2654 ------------------------------------------------------------------------------
2655 <a name="2.6.5"></a>
2656
2657 # NEWS for rsync 2.6.5 (1 Jun 2005)
2658
2659 ## Changes in this version:
2660
2661 ### OUTPUT CHANGES:
2662
2663  - Non-printable chars in filenames are now output using backslash-escaped
2664    characters rather than '?'s. Any non-printable character is output using 3
2665    digits of octal (e.g. `\n` -> `\012`), and a backslash is now output as
2666    `\\`. Rsync also uses your locale setting, which can make it treat fewer
2667    high-bit characters as non-printable.
2668
2669  - If rsync received an empty file-list when pulling files, it would output a
2670    `nothing to do` message and exit with a 0 (success) exit status, even if the
2671    remote rsync returned an error (it did not do this under the same conditions
2672    when pushing files). This was changed to make the pulling behavior the same
2673    as the pushing behavior: we now do the normal end-of-run outputting
2674    (depending on options) and exit with the appropriate exit status.
2675
2676 ### BUG FIXES:
2677
2678  - A crash bug was fixed when a daemon had its `path` set to `/`, did not have
2679    chroot enabled, and used some anchored excludes in the rsyncd.conf file.
2680
2681  - Fixed a bug in the transfer of a single file when `-H` is specified (rsync
2682    would either infinite loop or perhaps crash).
2683
2684  - Fixed a case where the generator might try (and fail) to tweak the
2685    write-permissions of a read-only directory in list-only mode (this only
2686    caused an annoying warning message).
2687
2688  - If `--compare-dest` or `--link-dest` uses a locally-copied file as the basis
2689    for an updated version, log this better when `--verbose` or `-i` is in
2690    effect.
2691
2692  - Fixed the accidental disabling of `--backup` during the `--delete-after`
2693    processing.
2694
2695  - Restored the ability to use the `--address` option in client mode (in
2696    addition to its use in daemon mode).
2697
2698  - Make sure that some temporary progress information from the delete
2699    processing does not get left on the screen when it is followed by a newline.
2700
2701  - When `--existing` skips a directory with extra verbosity, refer to it as a
2702    `directory`, not a `file`.
2703
2704  - When transferring a single file to a different-named file, any generator
2705    messages that are source-file related no longer refer to the file by the
2706    destination filename.
2707
2708  - Fixed a bug where hard-linking a group of files might fail if the generator
2709    hasn't created a needed destination directory yet.
2710
2711  - Fixed a bug where a hard-linked group of files that is newly-linked to a
2712    file in a `--link-dest` dir doesn't link the files from the rest of the
2713    cluster.
2714
2715  - When deleting files with the `--one-file-system` (`-x`) option set, rsync no
2716    longer tries to remove files from inside a mount-point on the receiving
2717    side. Also, we don't complain about being unable to remove the mount-point
2718    dir.
2719
2720  - Fixed a compatibility problem when using `--cvs-ignore` (`-C`) and sending
2721    files to an older rsync without using `--delete`.
2722
2723  - Make sure that a `- !` or `+ !` include/exclude pattern does not trigger the
2724    list-clearing action that is reserved for `!`.
2725
2726  - Avoid a timeout in the generator when the sender/receiver aren't handling
2727    the generator's checksum output quickly enough.
2728
2729  - Fixed the omission of some directories in the delete processing when
2730    `--relative` (`-R`) was combined with a source path that had a trailing
2731    slash.
2732
2733  - Fixed a case where rsync would erroneously delete some files and then
2734    re-transfer them when the options `--relative` (`-R`) and `--recursive`
2735    (`-r`) were both enabled (along with `--delete`) and a source path had a
2736    trailing slash.
2737
2738  - Make sure that `--max-size` doesn't affect a device or a symlink.
2739
2740  - Make sure that a system with a really small MAXPATHLEN does not cause the
2741    buffers in `readfd_unbuffered()` to be too small to receive normal messages.
2742    (This mainly affected Cygwin.)
2743
2744  - If a source pathname ends with a filename of `..`, treat it as if `../` had
2745    been specified (so that we don't copy files to the parent dir of the
2746    destination).
2747
2748  - If `--delete` is combined with a file-listing rsync command (i.e. no
2749    transfer is happening), avoid outputting a warning that we couldn't delete
2750    anything.
2751
2752  - If `--stats` is specified with `--delete-after`, ensure that all the
2753    `deleting` messages are output before the statistics.
2754
2755  - Improved one `if` in the deletion code that was only checking errno for
2756    ENOTEMPTY when it should have also been checking for EEXIST (for
2757    compatibility with OS variations).
2758
2759 ### ENHANCEMENTS:
2760
2761  - Added the `--only-write-batch=FILE` option that may be used (instead of
2762    `--write-batch=FILE`) to create a batch file without doing any actual
2763    updating of the destination. This allows you to divert all the file-updating
2764    data away from a slow data link (as long as you are pushing the data to the
2765    remote server when creating the batch).
2766
2767  - When the generator is taking a long time to fill up its output buffer (e.g.
2768    if the transferred files are few, small, or missing), it now periodically
2769    flushes the output buffer so that the sender/receiver can get started on the
2770    files sooner rather than later.
2771
2772  - Improved the keep-alive code to handle a long silence between the sender and
2773    the receiver that can occur when the sender is receiving the checksum data
2774    for a large file.
2775
2776  - Improved the auth-errors that are logged by the daemon to include some
2777    information on why the authorization failed: wrong user, password mismatch,
2778    etc. (The client-visible message is unchanged!)
2779
2780  - Improved the client's handling of an `@ERROR` from a daemon so that it does
2781    not complain about an unexpectedly closed socket (since we really did expect
2782    the socket to close).
2783
2784  - If the daemon can't open the log-file specified in rsyncd.conf, fall back to
2785    using syslog and log an appropriate warning. This is better than what was
2786    typically a totally silent (and fatal) failure (since a daemon is not
2787    usually run with the `--no-detach` option that was necessary to see the
2788    error on stderr).
2789
2790  - The man pages now consistently refer to an rsync daemon as a `daemon`
2791    instead of a `server` (to distinguish it from the server process in a
2792    non-daemon transfer).
2793
2794  - Made a small change to the rrsync script (restricted rsync -- in the support
2795    dir) to make a read-only server reject all `--remove-*` options when sending
2796    files (to future-proof it against the possibility of other similar options
2797    being added at some point).
2798
2799 ### INTERNAL:
2800
2801  - Rsync now calls `setlocale(LC_CTYPE, "")`. This enables isprint() to better
2802    discern which filename characters need to be escaped in messages (which
2803    should result in fewer escaped characters in some locales).
2804
2805  - Improved the naming of the log-file open/reopen/close functions.
2806
2807  - Removed some protocol-compatibility code that was only needed to help
2808    someone running a pre-release of 2.6.4.
2809
2810 ### BUILD CHANGES:
2811
2812  - Added configure option `--disable-locale` to disable any use of setlocale()
2813    in the binary.
2814
2815  - Fixed a bug in the `SUPPORT{,_HARD}_LINKS` #defines which prevented rsync
2816    from being built without symlink or hard-link support.
2817
2818  - Only #define `HAVE_REMSH` if it is going to be set to 1.
2819
2820  - Configure now disables the use of mkstemp() under HP-UX (since they refuse
2821    to fix its broken handling of large files).
2822
2823  - Configure now explicitly checks for the lseek64() function so that the code
2824    can use `HAVE_LSEEK64` instead of inferring lseek64()'s presence based on
2825    the presence of the `off64_t` type.
2826
2827  - Configure no longer mentions the change in the default remote-shell (from
2828    rsh to ssh) that occurred for the 2.6.0 release.
2829
2830  - Some minor enhancements to the test scripts.
2831
2832  - Added a few new `*.diff` files to the patches dir, including a patch that
2833    enables the optional copying of extended attributes.
2834
2835 ------------------------------------------------------------------------------
2836 <a name="2.6.4"></a>
2837
2838 # NEWS for rsync 2.6.4 (30 March 2005)
2839
2840 ## Changes in this version:
2841
2842 ### PROTOCOL NUMBER:
2843
2844  - The protocol number was changed to 29.
2845
2846 ### OUTPUT CHANGES:
2847
2848  - When rsync deletes a directory and outputs a verbose message about it, it
2849    now appends a trailing slash to the name instead of (only sometimes)
2850    outputting a preceding "directory " string.
2851
2852  - The `--stats` output will contain file-list time-statistics if both sides
2853    are 2.6.4, or if the local side is 2.6.4 and the files are being pushed
2854    (since the stats come from the sending side).  (Requires protocol 29 for a
2855    pull.)
2856
2857  - The `%o` (operation) log-format escape now has a third value (besides `send`
2858    and `recv`): `del.` (with trailing dot to make it 4 chars).  This changes
2859    the way deletions are logged in the daemon's log file.
2860
2861  - When the `--log-format` option is combined with `--verbose`, rsync now
2862    avoids outputting the name of the file twice in most circumstances.  As long
2863    as the `--log-format` item does not refer to any post-transfer items (such
2864    as %b or %c), the `--log-format` message is output prior to the transfer, so
2865    `--verbose` is now the equivalent of a `--log-format` of '%n%L' (which
2866    outputs the name and any link info). If the log output must occur after the
2867    transfer to be complete, the only time the name is also output prior to the
2868    transfer is when `--progress` was specified (so that the name will precede
2869    the progress stats, and the full `--log-format` output will come after).
2870
2871  - Non-printable characters in filenames are replaced with a '?' to avoid
2872    corrupting the screen or generating empty lines in the output.
2873
2874 ### BUG FIXES:
2875
2876  - Restore the list-clearing behavior of `!` in a .cvsignore file (2.6.3 was
2877    only treating it as a special token in an rsync include/exclude file).
2878
2879  - The combination of `--verbose` and `--dry-run` now mentions the full list of
2880    changes that would be output without `--dry-run`.
2881
2882  - Avoid a mkdir warning when removing a directory in the destination that
2883    already exists in the `--backup-dir`.
2884
2885  - An OS that has a binary mode for its files (such as Cygwin) needed
2886    `setmode(fd, O_BINARY)` called on the temp-file we opened with mkstemp().
2887    (Fix derived from Cygwin's 2.6.3 rsync package.)
2888
2889  - Fixed a potential hang when verbosity is high, the client side is the
2890    sender, and the file-list is large.
2891
2892  - Fixed a potential protocol-corrupting bug where the generator could merge a
2893    message from the receiver into the middle of a multiplexed packet of data if
2894    only part of that data had been written out to the socket when the message
2895    from the generator arrived.
2896
2897  - We now check if the OS doesn't support using mknod() for creating FIFOs and
2898    sockets, and compile-in some compatibility code using mkfifo() and socket()
2899    when necessary.
2900
2901  - Fixed an off-by-one error in the handling of `--max-delete=N`. Also, if the
2902    `--max-delete` limit is exceeded during a run, we now output a warning about
2903    this at the end of the run and exit with a new error code (25).
2904
2905  - One place in the code wasn't checking if fork() failed.
2906
2907  - The `ignore nonreadable` daemon parameter used to erroneously affect
2908    readable symlinks that pointed to a non-existent file.
2909
2910  - If the OS does not have lchown() and a chown() of a symlink will affect the
2911    referent of a symlink (as it should), we no longer try to set the user and
2912    group of a symlink.
2913
2914  - The generator now properly runs the hard-link loop and the dir-time
2915    rewriting loop after we're sure that the redo phase is complete.
2916
2917  - When `--backup` was specified with `--partial-dir=DIR`, where DIR is a
2918    relative path, the backup code was erroneously trying to backup a file that
2919    was put into the partial-dir.
2920
2921  - If a file gets resent in a single transfer and the `--backup` option is
2922    enabled along with `--inplace`, rsync no longer performs a duplicate backup
2923    (it used to overwrite the first backup with the failed file).
2924
2925  - One call to `flush_write_file()` was not being checked for an error.
2926
2927  - The `--no-relative` option was not being sent from the client to a server
2928    sender.
2929
2930  - If an rsync daemon specified `dont compress = ...` for a file and the client
2931    tried to specify `--compress`, the libz code was not handling a compression
2932    level of 0 properly. This could cause a transfer failure if the block-size
2933    for a file was large enough (e.g. rsync might have exited with an error for
2934    large files).
2935
2936  - Fixed a bug that would sometimes surface when using `--compress` and sending
2937    a file with a block-size larger than 64K (either manually specified, or
2938    computed due to the file being really large). Prior versions of rsync would
2939    sometimes fail to decompress the data properly, and thus the transferred
2940    file would fail its verification.
2941
2942  - If a daemon can't open the specified log file (i.e. syslog is not being
2943    used), die without crashing. We also output an error about the failure on
2944    stderr (which will only be seen if `--no-detach` was specified) and exit
2945    with a new error code (6).
2946
2947  - A local transfer no longer duplicates all its include/exclude options (since
2948    the forked process already has a copy of the exclude list, there's no need
2949    to send them a set of duplicates).
2950
2951  - The output of the items that are being updated by the generator (dirs,
2952    symlinks, devices) is now intermingled in the proper order with the output
2953    from the items that the receiver is updating (regular files) when pulling.
2954    This misordering was particularly bad when `--progress` was specified.
2955    (Requires protocol 29.)
2956
2957  - When `--timeout` is specified, lulls that occur in the transfer while the
2958    generator is doing work that does not generate socket traffic (looking for
2959    changed files, deleting files, doing directory-time touch-ups, etc.) will
2960    cause a new keep-alive packet to be sent that should keep the transfer going
2961    as long as the generator continues to make progress. (Requires protocol 29.)
2962
2963  - The stat size of a device is not added to the total file size of the items
2964    in the transfer (the size might be undefined on some OSes).
2965
2966  - Fixed a problem with refused-option messages sometimes not making it back to
2967    the client side when a remote `--files-from` was in effect and the daemon
2968    was the receiver.
2969
2970  - The `--compare-dest` option was not updating a file that differed in (the
2971    preserved) attributes from the version in the compare-dest DIR.
2972
2973  - When rsync is copying files into a write-protected directory, fixed the
2974    change-report output for the directory so that we don't report an identical
2975    directory as changed.
2976
2977 ### ENHANCEMENTS:
2978
2979  - Rsync now supports popt's option aliases, which means that you can use
2980    /etc/popt and/or ~/.popt to create your own option aliases.
2981
2982  - Added the `--delete-during` (`--del`) option which will delete files from
2983    the receiving side incrementally as each directory in the transfer is being
2984    processed. This makes it more efficient than the default,
2985    before-the-transfer behavior, which is now also available as
2986    `--delete-before` (and is still the default `--delete-WHEN` option that will
2987    be chosen if `--delete` or `--delete-excluded` is specified without a
2988    `--delete-WHEN` choice). All the `--del*` options infer `--delete`, so an
2989    rsync daemon that refuses `delete` will still refuse to allow any
2990    file-deleting options (including the new `--remove-sent-files` option).
2991
2992  - All the `--delete-WHEN` options are now more memory efficient: Previously an
2993    duplicate set of file-list objects was created on the receiving side for the
2994    entire destination hierarchy. The new algorithm only creates one directory
2995    of objects at a time (for files inside the transfer).
2996
2997  - Added the `--copy-dest` option, which works like `--link-dest` except that
2998    it locally copies identical files instead of hard-linking them.
2999
3000  - Added support for specifying multiple `--compare-dest`, `--copy-dest`, or
3001    `--link-dest` options, but only of a single type. (Promoted from the patches
3002    dir and enhanced.) (Requires protocol 29.)
3003
3004  - Added the `--max-size` option. (Promoted from the patches dir.)
3005
3006  - The daemon-mode options are now separated from the normal rsync options so
3007    that they can't be mixed together. This makes it impossible to start a
3008    daemon that has improper default option values (which could cause problems
3009    when a client connects, such as hanging or crashing).
3010
3011  - The `--bwlimit` option may now be used in combination with `--daemon` to
3012    specify both a default value for the daemon side and a value that cannot be
3013    exceeded by a user-specified `--bwlimit` option.
3014
3015  - Added the `port` parameter to the rsyncd.conf file. (Promoted from the
3016    patches dir.) Also added `address`. The command-line options take precedence
3017    over a config-file option, as expected.
3018
3019  - In `_exit_cleanup()`: when we are exiting with a partially-received file, we
3020    now flush any data in the write-cache before closing the partial file.
3021
3022  - The `--inplace` support was enhanced to work with `--compare-dest`,
3023    `--link-dest`, and (the new) `--copy-dest` options. (Requires protocol 29.)
3024
3025  - Added the `--dirs` (`-d`) option for an easier way to copy directories
3026    without recursion. Any directories that are encountered are created on the
3027    destination. Specifying a directory with a trailing slash copies its
3028    immediate contents to the destination.
3029
3030  - The `--files-from` option now implies `--dirs` (`-d`).
3031
3032  - Added the `--list-only` option, which is mainly a way for the client to put
3033    the server into listing mode without needing to resort to any internal
3034    option kluges (e.g. the age-old use of `-r --exclude='/*/*'` for a
3035    non-recursive listing). This option is used automatically (behind the
3036    scenes) when a modern rsync speaks to a modern daemon, but may also be
3037    specified manually if you want to force the use of the `--list-only` option
3038    over a remote-shell connection.
3039
3040  - Added the `--omit-dir-times` (`-O`) option, which will avoid updating the
3041    modified time for directories when `--times` was specified. This option will
3042    avoid an extra pass through the file-list at the end of the transfer (to
3043    tweak all the directory times), which may provide an appreciable speedup for
3044    a really large transfer. (Promoted from the patches dir.)
3045
3046  - Added the `--filter` (`-f`) option and its helper option, `-F`. Filter rules
3047    are an extension to the existing include/exclude handling that also supports
3048    nested filter files as well as per-directory filter files (like .cvsignore,
3049    but with full filter-rule parsing).  This new option was chosen in order to
3050    ensure that all existing include/exclude processing remained 100% compatible
3051    with older versions. Protocol 29 is needed for full filter-rule support, but
3052    backward-compatible rules work with earlier protocol versions.  (Promoted
3053    from the patches dir and enhanced.)
3054
3055  - Added the `--delay-updates` option that puts all updated files into a
3056    temporary directory (by default `.~tmp~`, but settable via the
3057    `--partial-dir=DIR` option) until the end of the transfer. This makes the
3058    updates a little more atomic for a large transfer.
3059
3060  - If rsync is put into the background, any output from `--progress` is
3061    reduced.
3062
3063  - Documented the `max verbosity` setting for rsyncd.conf. (This setting was
3064    added a couple releases ago, but left undocumented.)
3065
3066  - The sender and the generator now double-check the file-list index they are
3067    given, and refuse to try to do a file transfer on a non-file index (since
3068    that would indicate that something had gone very wrong).
3069
3070  - Added the `--itemize-changes` (`-i`) option, which is a way to output a more
3071    detailed list of what files changed and in what way. The effect is the same
3072    as specifying a `--log-format` of `%i %n%L` (see both the rsync and
3073    rsyncd.conf manpages). Works with `--dry-run` too.
3074
3075  - Added the `--fuzzy` (`-y`) option, which attempts to find a basis file for a
3076    file that is being created from scratch. The current algorithm only looks in
3077    the destination directory for the created file, but it does attempt to find
3078    a match based on size/mod-time (in case the file was renamed with no other
3079    changes) as well as based on a fuzzy name-matching algorithm. This option
3080    requires protocol 29 because it needs the new file-sorting order. (Promoted
3081    from patches dir and enhanced.) (Requires protocol 29.)
3082
3083  - Added the `--remove-sent-files` option, which lets you move files between
3084    systems.
3085
3086  - The hostname in HOST:PATH or HOST::PATH may now be an IPv6 literal enclosed
3087    in '[' and ']' (e.g. `[::1]`). (We already allowed IPv6 literals in the
3088    rsync://HOST:PORT/PATH format.)
3089
3090  - When rsync recurses to build the file list, it no longer keeps open one or
3091    more directory handles from the dir's parent dirs.
3092
3093  - When building under windows, the default for `--daemon` is now to avoid
3094    detaching, requiring the new `--detach` option to force rsync to detach.
3095
3096  - The `--dry-run` option can now be combined with either `--write-batch` or
3097    `--read-batch`, allowing you to run a do-nothing test command to see what
3098    would happen without `--dry-run`.
3099
3100  - The daemon's `read only` config item now sets an internal `read_only`
3101    variable that makes extra sure that no write/delete calls on the read-only
3102    side can succeed.
3103
3104  - The log-format % escapes can now have a numeric field width in between the %
3105    and the escape letter (e.g. `%-40n %08p`).
3106
3107  - Improved the option descriptions in the `--help` text.
3108
3109 ### SUPPORT FILES:
3110
3111  - Added atomic-rsync to the support dir: a perl script that will transfer some
3112    files using rsync, and then move the updated files into place all at once at
3113    the end of the transfer. Only works when pulling, and uses `--link-dest` and
3114    a parallel hierarchy of files to effect its update.
3115
3116  - Added mnt-excl to the support dir: a perl script that takes the /proc/mounts
3117    file and translates it into a set of excludes that will exclude all mount
3118    points (even mapped mounts to the same disk). The excludes are made relative
3119    to the specified source dir and properly anchored.
3120
3121  - Added savetransfer.c to the support dir: a C program that can make a copy of
3122    all the data that flows over the wire. This lets you test for data
3123    corruption (by saving the data on both the sending side and the receiving
3124    side) and provides one way to debug a protocol error.
3125
3126  - Added rrsync to the support dir: this is an updated version of Joe Smith's
3127    restricted rsync perl script. This helps to ensure that only certain rsync
3128    commands can be run by an ssh invocation.
3129
3130 ### INTERNAL:
3131
3132  - Added better checking of the checksum-header values that come over the
3133    socket.
3134
3135  - Merged a variety of file-deleting functions into a single function so that
3136    it is easier to maintain.
3137
3138  - Improved the type of some variables (particularly blocksize vars) for
3139    consistency and proper size.
3140
3141  - Got rid of the uint64 type (which we didn't need).
3142
3143  - Use a slightly more compatible set of core #include directives.
3144
3145  - Defined int32 in a way that ensures that the build dies if we can't find a
3146    variable with at least 32 bits.
3147
3148 ### PROTOCOL DIFFERENCES FOR VERSION 29:
3149
3150  - A 16-bit flag-word is transmitted after every file-list index. This
3151    indicates what is changing between the sender and the receiver. The
3152    generator now transmits an index and a flag-word to indicate when dirs and
3153    symlinks have changed (instead of producing a message), which makes the
3154    outputting of the information more consistent and less prone to screen
3155    corruption (because the local receiver/sender is now outputting all the
3156    file-change info messages).
3157
3158  - If a file is being hard-linked, the `ITEM_XNAME_FOLLOWS` bit is enabled in
3159    the flag-word and the name of the file that was linked immediately follows
3160    in vstring format (see below).
3161
3162  - If a file is being transferred with an alternate-basis file, the
3163    `ITEM_BASIS_TYPE_FOLLOWS` bit is enabled in the flag-word and a single byte
3164    follows, indicating what type of basis file was chosen. If that indicates
3165    that a fuzzy-match was selected, the `ITEM_XNAME_FOLLOWS` bit is set in the
3166    flag-word and the name of the match in vstring format follows the basis
3167    byte. A vstring is a variable length string that has its size written prior
3168    to the string, and no terminating null.  If the string is from 1-127 bytes,
3169    the length is a single byte. If it is from 128-32767 bytes, the length is
3170    written as ((len >> 8) | 0x80) followed by (len % 0x100).
3171
3172  - The sending of exclude names is done using filter-rule syntax. This means
3173    that all names have a prefixed rule indicator, even excludes (which used to
3174    be sent as a bare pattern, when possible). The `-C` option will include the
3175    per-dir .cvsignore merge file in the list of filter rules so it is
3176    positioned correctly (unlike in some older transfer scenarios).
3177
3178  - Rsync sorts the filename list in a different way: it sorts the subdir names
3179    after the non-subdir names for each dir's contents, and it always puts a
3180    dir's contents immediately after the dir's name in the list. (Previously an
3181    item named `foo.txt` would sort in between directory `foo/` and `foo/bar`.)
3182
3183  - When talking to a protocol 29 rsync daemon, a list-only request is able to
3184    note this before the options are sent over the wire and the new
3185    `--list-only` option is included in the options.
3186
3187  - When the `--stats` bytes are sent over the wire (or stored in a batch), they
3188    now include two elapsed-time values: one for how long it took to build the
3189    file-list, and one for how long it took to send it over the wire (each
3190    expressed in thousandths of a second).
3191
3192  - When `--delete-excluded` is specified with some filter rules (AKA excludes),
3193    a client sender will now initiate a send of the rules to the receiver (older
3194    protocols used to omit the sending of excludes in this situation since there
3195    were no receiver-specific rules that survived `--delete-excluded` back
3196    then). Note that, as with all the filter-list sending, only items that are
3197    significant to the other side will actually be sent over the wire, so the
3198    filter-rule list that is sent in this scenario is often empty.
3199
3200  - An index equal to the file-list count is sent as a keep-alive packet from
3201    the generator to the sender, which then forwards it on to the receiver. This
3202    normally invalid index is only a valid keep-alive packet if the 16-bit
3203    flag-word that follows it contains a single bit (`ITEM_IS_NEW`, which is
3204    normally an illegal flag to appear alone).
3205
3206  - A protocol-29 batch file includes a bit for the setting of the `--dirs`
3207    option and for the setting of the `--compress` option. Also, the shell
3208    script created by `--write-batch` will use the `--filter` option instead of
3209    `--exclude-from` to capture any filter rules.
3210
3211 ### BUILD CHANGES:
3212
3213  - Handle an operating system that use mkdev() in place of makedev().
3214
3215  - Improved configure to better handle cross-compiling.
3216
3217 ------------------------------------------------------------------------------
3218 <a name="2.6.3"></a>
3219
3220 # NEWS for rsync 2.6.3 (30 Sep 2004)
3221
3222 ## Changes in this version:
3223
3224 ### SECURITY FIXES:
3225
3226  - A bug in the `sanitize_path` routine (which affects a non-chrooted rsync
3227    daemon) could allow a user to craft a pathname that would get transformed
3228    into an absolute path for certain options (but not for file-transfer names).
3229    If you're running an rsync daemon with chroot disabled, **please upgrade**,
3230    ESPECIALLY if the user privs you run rsync under is anything above `nobody`.
3231
3232    OUTPUT CHANGES (ATTN: those using a script to parse the verbose output):
3233
3234  - Please note that the 2-line footer (output when verbose) now uses the term
3235    `sent` instead of `wrote` and `received` instead of `read`. If you are not
3236    parsing the numeric values out of this footer, a script would be better off
3237    using the empty line prior to the footer as the indicator that the verbose
3238    output is over.
3239
3240  - The output from the `--stats` option was similarly affected to change
3241    `written` to `sent` and `read` to `received`.
3242
3243  - Rsync ensures that a filename that contains a newline gets mentioned with
3244    each newline transformed into a question mark (which prevents a filename
3245    from causing an empty line to be output).
3246
3247  - The `backed up ...` message that is output when at least 2 `--verbose`
3248    options are specified is now the same both with and without the
3249    `--backup-dir` option.
3250
3251 ### BUG FIXES:
3252
3253  - Fixed a crash bug that might appear when `--delete` was used and multiple
3254    source directories were specified.
3255
3256  - Fixed a 32-bit truncation of the file length when generating the checksums.
3257
3258  - The `--backup` code no longer attempts to create some directories over and
3259    over again (generating warnings along the way).
3260
3261  - Fixed a bug in the reading of the secrets file (by the daemon) and the
3262    password file (by the client): the files no longer need to be terminated by
3263    a newline for their content to be read in.
3264
3265  - If a file has a read error on the sending side or the reconstructed data
3266    doesn't match the expected checksum (perhaps due to the basis file changing
3267    during the transfer), the receiver will no longer retain the resulting file
3268    unless the `--partial` option was specified.  (Note: for the read-error
3269    detection to work, neither side can be older than 2.6.3 -- older receivers
3270    will always retain the file, and older senders don't tell the receiver that
3271    the file had a read error.)
3272
3273  - If a file gets resent in a single transfer and the `--backup` option is
3274    enabled, rsync no longer performs a duplicate backup (it used to overwrite
3275    the original file in the backup area).
3276
3277  - Files specified in the daemon's `exclude` or `exclude from` config items are
3278    now excluded from being uploaded (assuming that the module allows uploading
3279    at all) in addition to the old download exclusion.
3280
3281  - Got rid of a potential hang in the receiver when near the end of a phase.
3282
3283  - When using `--backup` without a `--backup-dir`, rsync no longer preserves
3284    the modify time on directories. This avoids confusing NFS.
3285
3286  - When `--copy-links` (`-L`) is specified, we now output a separate error for
3287    a symlink that has no referent instead of claiming that a file `vanished`.
3288
3289  - The `--copy-links` (`-L`) option no longer has the side-effect of telling
3290    the receiving side to follow symlinks. See the `--keep-dirlinks` option
3291    (mentioned below) for a way to specify that behavior.
3292
3293  - Error messages from the daemon server's option-parsing (such as refused
3294    options) are now successfully transferred back to the client (the server
3295    used to fail to send the message because the socket wasn't in the right
3296    state for the message to get through).
3297
3298  - Most transfer errors that occur during a daemon transfer are now returned to
3299    the user in addition to being logged (some messages are intended to be
3300    daemon-only and are not affected by this).
3301
3302  - Fixed a bug in the daemon authentication code when using one of the
3303    batch-processing options.
3304
3305  - We try to work around some buggy IPv6 implementations that fail to implement
3306    `IPV6_V6ONLY`. This should fix the `address in use` error that some daemons
3307    get when running on an OS with a buggy IPv6 implementation. Also, if the new
3308    code gets this error, we might suggest that the user specify `--ipv4` or
3309    `--ipv6` (if we think it will help).
3310
3311  - When the remote rsync dies, make a better effort to recover any error
3312    messages it may have sent before dying (the local rsync used to just die
3313    with a socket-write error).
3314
3315  - When using `--delete` and a `--backup-dir` that contains files that are
3316    hard-linked to their destination equivalents, rsync now makes sure that
3317    removed files really get removed (avoids a really weird rename() behavior).
3318
3319  - Avoid a bogus run-time complaint about a lack of 64-bit integers when the
3320    int64 type is defined as an `off_t` and it actually has 64-bits.
3321
3322  - Added a configure check for open64() without mkstemp64() so that we can
3323    avoid using mkstemp() when such a combination is encountered.  This bypasses
3324    a problem writing out large temp files on OSes such as AIX and HP-UX.
3325
3326  - Fixed an age-old crash problem with `--read-batch` on a local copy (rsync
3327    was improperly assuming `--whole-file` for the local copy).
3328
3329  - When `--dry-run` (`-n`) is used and the destination directory does not
3330    exist, rsync now produces a correct report of files that would be sent
3331    instead of dying with a chdir() error.
3332
3333  - Fixed a bug that could cause a slow-to-connect rsync daemon to die with an
3334    error instead of waiting for the connection to finish.
3335
3336  - Fixed an ssh interaction that could cause output to be lost when the user
3337    chose to combine the output of rsync's stdout and stderr (e.g.  using the
3338    `2>&1`).
3339
3340  - Fixed an option-parsing bug when `--files-from` got passed to a daemon.
3341
3342 ### ENHANCEMENTS:
3343
3344  - Added the `--partial-dir=DIR` option that lets you specify where to
3345    (temporarily) put a partially transferred file (instead of overwriting the
3346    destination file). E.g. `--partial-dir=.rsync-partial` Also added support
3347    for the `RSYNC_PARTIAL_DIR` environment variable that, when found,
3348    transforms a regular `--partial` option (such as the convenient `-P` option)
3349    into one that also specifies a directory.
3350
3351  - Added `--keep-dirlinks` (`-K`), which allows you to symlink a directory onto
3352    another partition on the receiving side and have rsync treat it as matching
3353    a normal directory from the sender.
3354
3355  - Added the `--inplace` option that tells rsync to write each destination file
3356    without using a temporary file. The matching of existing data in the
3357    destination file can be severely limited by this, but there are also cases
3358    where this is more efficient (such as appending data).  Use only when needed
3359    (see the man page for more details).
3360
3361  - Added the `write only` option for the daemon's config file.
3362
3363  - Added long-option names for `-4` and `-6` (namely `--ipv4` and `--ipv6`) and
3364    documented all these options in the man page.
3365
3366  - Improved the handling of the `--bwlimit` option so that it's less bursty,
3367    more accurate, and works properly over a larger range of values.
3368
3369  - The rsync daemon-over-ssh code now looks for `SSH_CONNECTION` and
3370    `SSH2_CLIENT` in addition to `SSH_CLIENT` to figure out the IP address.
3371
3372  - Added the `--checksum-seed=N` option for advanced users.
3373
3374  - Batch writing/reading has a brand-new implementation that is simpler, fixes
3375    a few weird problems with the old code (such as no longer sprinkling the
3376    batch files into different dirs or even onto different systems), and is much
3377    less intrusive into the code (making it easier to maintain for the future).
3378    The new code generates just one data file instead of three, which makes it
3379    possible to read the batch on stdin via a remote shell. Also, the old
3380    requirement of forcing the same fixed checksum-seed for all batch processing
3381    has been removed.
3382
3383  - If an rsync daemon has a module set with `list = no` (which hides its
3384    presence in the list of available modules), a user that fails to
3385    authenticate gets the same `unknown module` error that they would get if the
3386    module were actually unknown (while still logging the real error to the
3387    daemon's log file). This prevents fishing for module names.
3388
3389  - The daemon's `refuse options` config item now allows you to match option
3390    names using wildcards and/or the single-letter option names.
3391
3392  - Each transferred file now gets its permissions and modified-time updated
3393    before the temp-file gets moved into place. Previously, the finished file
3394    would have a very brief window where its permissions disallowed all group
3395    and world access.
3396
3397  - Added the ability to parse a literal IPv6 address in an `rsync:` URL (e.g.
3398    rsync://[2001:638:500:101::21]:873/module/dir).
3399
3400  - The daemon's wildcard expanding code can now handle more than 1000 filenames
3401    (it's now limited by memory instead of having a hard-wired limit).
3402
3403 ### INTERNAL:
3404
3405  - Some cleanup in the exclude code has saved some per-exclude memory and made
3406    the code easier to maintain.
3407
3408  - Improved the argv-overflow checking for a remote command that has a lot of
3409    args.
3410
3411  - Use rsyserr() in the various places that were still calling rprintf() with
3412    strerror() as an arg.
3413
3414  - If an rsync daemon is listening on multiple sockets (to handle both IPv4 and
3415    IPv6 to a single port), we now close all the unneeded file handles after we
3416    accept a connection (we used to close just one of them).
3417
3418  - Optimized the handling of larger block sizes (rsync used to slow to a crawl
3419    if the block size got too large).
3420
3421  - Optimized away a loop in `hash_search()`.
3422
3423  - Some improvements to the `sanitize_path()` and `clean_fname()` functions
3424    makes them more efficient and produce better results (while still being
3425    compatible with the file-name cleaning that gets done on both sides when
3426    sending the file-list).
3427
3428  - Got rid of `alloc_sanitize_path()` after adding a destination-buffer arg to
3429    `sanitize_path()` made it possible to put all the former's functionality
3430    into the latter.
3431
3432  - The file-list that is output when at least 4 verbose options are specified
3433    reports the uid value on the sender even when rsync is not running as root
3434    (since we might be sending to a root receiver).
3435
3436 ### BUILD CHANGES:
3437
3438  - Added a `gen` target to rebuild most of the generated files, including
3439    configure, config.h.in, the man pages, and proto.h.
3440
3441  - If `make proto` doesn't find some changes in the prototypes, the proto.h
3442    file is left untouched (its time-stamp used to always be updated).
3443
3444  - The variable `$STRIP` (that is optionally set by the install-strip target's
3445    rule) was changed to `$INSTALL_STRIP` because some systems have `$STRIP`
3446    already set in the environment.
3447
3448  - Fixed a build problem when `SUPPORT_HARD_LINKS` isn't defined.
3449
3450  - When cross-compiling, the gettimeofday() function is now assumed to be a
3451    modern version that takes two-args (since we can't test it).
3452
3453 ### DEVELOPER RELATED:
3454
3455  - The scripts in the testsuite dir were cleaned up a bit and a few new tests
3456    added.
3457
3458  - Some new diffs were added to the patches dir, and some accepted ones were
3459    removed.
3460
3461 ------------------------------------------------------------------------------
3462 <a name="2.6.2"></a>
3463
3464 # NEWS for rsync 2.6.2 (30 Apr 2004)
3465
3466 ## Changes in this version:
3467
3468 ### BUG FIXES:
3469
3470  - Fixed a major bug in the sorting of the filenames when `--relative` is used
3471    for some sources (just sources such as `/` and `/*` were affected). This fix
3472    ensures that we ask for the right file-list item when requesting changes
3473    from the sender.
3474
3475  - Rsync now checks the return value of the close() function to better report
3476    disk-full problems on an NFS file system.
3477
3478  - Restored the old daemon-server behavior of logging error messages rather
3479    than returning them to the user. (A better long-term fix will be sought in
3480    the future.)
3481
3482  - An obscure uninitialized-variable bug was fixed in the uid/gid code. (This
3483    bug probably had no ill effects.)
3484
3485 ### BUILD CHANGES:
3486
3487  - Got rid of the configure check for sys/sysctl.h (it wasn't used and was
3488    causing a problem on some systems). Also improved the
3489    broken-largefile-locking test to try to avoid failure due to an NFS
3490    build-dir.
3491
3492  - Fixed a compile problem on systems that don't define `AI_NUMERICHOST`.
3493
3494  - Fixed a compile problem in the popt source for compilers that don't support
3495    `__attribute__`.
3496
3497 ### DEVELOPER RELATED:
3498
3499  - Improved the testsuite's `merge` test to work on OSF1.
3500
3501  - Two new diffs were added to the patches dir.
3502
3503 ------------------------------------------------------------------------------
3504 <a name="2.6.1"></a>
3505
3506 # NEWS for rsync 2.6.1 (26 Apr 2004)
3507
3508 ## Changes in this version:
3509
3510 ### PROTOCOL NUMBER:
3511
3512  - The protocol number was changed to 28.
3513
3514 ### SECURITY FIXES:
3515
3516  - Paths sent to an rsync daemon are more thoroughly sanitized when chroot is
3517    not used. If you're running a non-read-only rsync daemon with chroot
3518    disabled, **please upgrade**, ESPECIALLY if the user privs you run rsync
3519    under is anything above `nobody`.
3520
3521 ### ENHANCEMENTS:
3522
3523  - Lower memory use, more optimal transfer of data over the socket, and lower
3524    CPU usage (see the INTERNAL section for details).
3525
3526  - The `RSYNC_PROXY` environment variable can now contain a `USER:PASS@` prefix
3527    before the `HOST:PORT` information.  (Bardur Arantsson)
3528
3529  - The `--progress` output now mentions how far along in the transfer we are,
3530    including both a count of files transferred and a percentage of the total
3531    file-count that we've processed. It also shows better
3532    current-rate-of-transfer and remaining-transfer-time values.
3533
3534  - Documentation changes now attempt to describe some often misunderstood
3535    features more clearly.
3536
3537 ### BUG FIXES:
3538
3539  - When `-x` (`--one-file-system`) is combined with `-L` (`--copy-links`) or
3540    `--copy-unsafe-links,` no symlinked files are skipped, even if the referent
3541    file is on a different filesystem.
3542
3543  - The `--link-dest` code now works properly for a non-root user when (1) the
3544    UIDs of the source and destination differ and `-o` was specified, or (2)
3545    when the group of the source can't be used on the destination and `-g` was
3546    specified.
3547
3548  - Fixed a bug in the handling of `-H` (hard-links) that might cause the
3549    expanded PATH/NAME value of the current item to get overwritten (due to an
3550    expanded-name caching bug).
3551
3552  - We now reset the `new data has been sent` flag at the start of each file we
3553    send. This makes sure that an interrupted transfer with the `--partial`
3554    option set doesn't keep a shorter temp file than the current basis file when
3555    no new data has been transferred over the wire for that file.
3556
3557  - Fixed a byte-order problem in `--batch-mode` on big-endian machines.  (Jay
3558    Fenlason)
3559
3560  - When using `--cvs-exclude`, the exclude items we get from a per-directory's
3561    .cvsignore file once again only affect that one directory (not all following
3562    directories too). The items are also now properly word-split and parsed
3563    without any +/- prefix parsing.
3564
3565  - When specifying the USER@HOST: prefix for a file, the USER part can now
3566    contain an '@', if needed (i.e. the last '@' is used to find the HOST, not
3567    the first).
3568
3569  - Fixed some bugs in the handling of group IDs for non-root users: (1) It
3570    properly handles a group that the sender didn't have a name for (it would
3571    previously skip changing the group on any files in that group). (2) If
3572    `--numeric-ids` is used, rsync no longer attempts to set groups that the
3573    user doesn't have the permission to set.
3574
3575  - Fixed the `refuse options` setting in the rsyncd.conf file.
3576
3577  - Improved the `-x` (`--one-file-system`) flag's handling of any mount-point
3578    directories we encounter. It is both more optimal (in that it no longer does
3579    a useless scan of the contents of the mount-point dirs) and also fixes a
3580    bug where a remapped mount of the original filesystem could get discovered
3581    in a subdir we should be ignoring.
3582
3583  - Rsync no longer discards a double-slash at the start of a filename when
3584    trying to open the file. It also no longer constructs names that start with
3585    a double slash (unless the user supplied them).
3586
3587  - Path-specifying options to a daemon should now work the same with or without
3588    chroot turned on. Previously, such a option (such as `--link-dest`) would
3589    get its absolute path munged into a relative one if chroot was not on,
3590    making that setting fairly useless.  Rsync now transforms the path into one
3591    that is based on the module's base dir when chroot is not enabled.
3592
3593  - Fixed a compatibility problem interacting with older rsync versions that
3594    might send us an empty `--suffix` value without telling us that
3595    `--backup-dir` was specified.
3596
3597  - The `hosts allow` option for a daemon-over-remote-shell process now has
3598    improved support for IPv6 addresses and a fix for systems that have a length
3599    field in their socket structs.
3600
3601  - Fixed the ability to request an empty backup `--suffix` when sending files
3602    to an rsync daemon.
3603
3604  - Fixed an option-parsing bug when `--files-from` was sent to a server sender.
3605
3606 ### INTERNAL:
3607
3608  - Most of the I/O is now buffered, which results in a pretty large speedup
3609    when running under MS Windows. (Craig Barratt)
3610
3611  - Optimizations to the name-handling/comparing code have made some significant
3612    reductions in user-CPU time for large file sets.
3613
3614  - Some cleanup of the variable types make the code more consistent.
3615
3616  - Reduced memory requirements of hard link preservation.  (J.W. Schultz)
3617
3618  - Implemented a new algorithm for hard-link handling that speeds up the code
3619    significantly. (J.W. Schultz and Wayne Davison)
3620
3621  - The `--hard-link` option now uses the first existing file in the group of
3622    linked files as the basis for the transfer. This prevents the sub-optimal
3623    transfer of a file's data when a new hardlink is added on the sending side
3624    and it sorts alphabetically earlier in the list than the files that are
3625    already present on the receiving side.
3626
3627  - Dropped support for protocol versions less than 20 (2.3.0 released 15 Mar
3628    1999) and activated warnings for protocols less than 25 (2.5.0 released 23
3629    Aug 2001). (Wayne Davison and J.W. Schultz, severally)
3630
3631  - More optimal data transmission for `--hard-links` (protocol 28).
3632
3633  - More optimal data transmission for `--checksum` (protocol 28).
3634
3635  - Less memory is used when `--checksum` is specified.
3636
3637  - Less memory is used in the file list (a per-file savings).
3638
3639  - The generator is now better about not modifying the file list during the
3640    transfer in order to avoid a copy-on-write memory bifurcation (on systems
3641    where fork() uses shared memory).  Previously, rsync's shared memory would
3642    slowly become unshared, resulting in real memory usage nearly doubling on
3643    the receiving side by the end of the transfer. Now, as long as permissions
3644    are being preserved, the shared memory should remain that way for the entire
3645    transfer.
3646
3647  - Changed hardlink info and `file_struct` + strings to use allocation pools.
3648    This reduces memory use for large file-sets and permits freeing memory to
3649    the OS. (J.W. Schultz)
3650
3651  - The 2 pipes used between the receiver and generator processes (which are
3652    forked on the same machine) were reduced to 1 pipe and the protocol improved
3653    so that (1) it is now impossible to have the `redo` pipe fill up and hang
3654    rsync, and (2) trailing messages from the receiver don't get lost on their
3655    way through the generator over to the sender (which mainly affected
3656    hard-link messages and verbose `--stats` output).
3657
3658  - Improved the internal uid/gid code to be more portable and a little more
3659    optimized.
3660
3661  - The device numbers sent when using `--devices` are now sent as separate
3662    major/minor values with 32-bit accuracy (protocol 28).  Previously, the
3663    copied devices were sent as a single 32-bit number. This will make
3664    inter-operation of 64-bit binaries more compatible with their 32-bit
3665    brethren (with both ends of the connection are using protocol 28). Note that
3666    optimizations in the binary protocol for sending the device numbers often
3667    results in fewer bytes being used than before, even though more precision is
3668    now available.
3669
3670  - Some cleanup of the exclude/include structures and its code made things
3671    clearer (internally), simpler, and more efficient.
3672
3673  - The reading & writing of the file-list in batch-mode is now handled by the
3674    same code that sends & receives the list over the wire. This makes it much
3675    easier to maintain. (Note that the batch code is still considered to be
3676    experimental.)
3677
3678 ### BUILD CHANGES:
3679
3680  - The configure script now accepts `--with-rsyncd-conf=PATH` to override the
3681    default value of the /etc/rsyncd.conf file.
3682
3683  - Fixed configure bug when running `./configure --disable-ipv6`.
3684
3685  - Fixed compilation problem on Tru64 Unix (having to do with `sockaddr.sa_len`
3686    and `sockaddr.sin_len`).
3687
3688 ### DEVELOPER RELATED:
3689
3690  - Fixed `make test` bug when build dir is not the source dir.
3691
3692  - Added a couple extra diffs in the `patches` dir, removed the ones that got
3693    applied, and rebuilt the rest.
3694
3695 ------------------------------------------------------------------------------
3696 <a name="2.6.0"></a>
3697
3698 # NEWS for rsync 2.6.0 (1 Jan 2004)
3699
3700 ## Changes in this version:
3701
3702 ### PROTOCOL NUMBER:
3703
3704  - The protocol number was changed to 27.  The maximum accepted protocol number
3705    was increased from 30 to 40.
3706
3707 ### ENHANCEMENTS:
3708
3709  - `ssh` is now the default remote shell for rsync. If you want to change this,
3710    configure like this: `./configure --with-rsh=rsh`.
3711
3712  - Added `--files-from`, `--no-relative`, `--no-implied-dirs`, and `--from0`.
3713    Note that `--from0` affects the line-ending character for all the files read
3714    by the `--*-from` options. (Wayne Davison)
3715
3716  - Length of csum2 is now per-file starting with protocol version
3717    27. (J.W. Schultz)
3718
3719  - Per-file dynamic block size is now sqrt(file length). The per-file checksum
3720    size is determined according to an algorithm provided by Donovan Baarda
3721    which reduces the probability of rsync algorithm corrupting data and falling
3722    back using the whole md4 checksums. (J.W. Schultz, Donovan Baarda)
3723
3724  - The `--stats` option no longer includes the (debug) malloc summary unless
3725    the verbose option was specified at least twice.
3726
3727  - Added a new error/warning code for when files vanish from the sending side.
3728    Made vanished source files not interfere with the file-deletion pass when
3729    `--delete-after` was specified.
3730
3731  - Various trailing-info sections are now preceded by a newline.
3732
3733 ### BUG FIXES:
3734
3735  - Fixed several exclude/include matching bugs when using wild-cards.  This has
3736    a several user-visible effects, all of which make the matching more
3737    consistent and intuitive. This should hopefully not cause anyone problems
3738    since it makes the matching work more like what people are expecting. (Wayne
3739    Davison)
3740
3741  - A pattern with a `**` no longer causes a `*` to match slashes.  For example,
3742    with `/*/foo/**`, `foo` must be 2 levels deep.  [If your string has BOTH `*`
3743    and `**` wildcards, changing the `*` wildcards to `**` will provide the old
3744    behavior in all versions.]
3745
3746  - `**/foo` now matches at the base of the transfer (like /foo does). [Use
3747    `/**/foo` to get the old behavior in all versions.]
3748
3749  - A non-anchored wildcard term floats to match beyond the base of the
3750    transfer. E.g. `CVS/R*` matches at the end of the path, just like the
3751    non-wildcard term `CVS/Root` does. [Use `/CVS/R*` to get the old behavior in
3752    all versions.]
3753
3754  - Including a `**` in the match term causes it to be matched against the
3755    entire path, not just the name portion, even if there aren't any interior
3756    slashes in the term. E.g. `foo**bar` would exclude `/path/foo-bar` (just
3757    like before) as well as `/foo-path/baz-bar` (unlike before). [Use `foo*bar`
3758    to get the old behavior in all versions.]
3759
3760  - The exclude list specified in the daemon's config file is now properly
3761    applied to the pulled items no matter how deep the user's file-args are in
3762    the source tree. (Wayne Davison)
3763
3764  - For protocol version >= 27, `mdfour_tail()` is called when the block size
3765    (including `checksum_seed`) is a multiple of 64.  Previously it was not
3766    called, giving the wrong MD4 checksum.  (Craig Barratt)
3767
3768  - For protocol version >= 27, a 64 bit bit counter is used in mdfour.c as
3769    required by the RFC. Previously only a 32 bit bit counter was used, causing
3770    incorrect MD4 file checksums for file sizes >= 512MB - 4. (Craig Barratt)
3771
3772  - Fixed a crash bug when interacting with older rsync versions and multiple
3773    files of the same name are destined for the same dir.  (Wayne Davison)
3774
3775  - Keep tmp names from overflowing MAXPATHLEN.
3776
3777  - Make `--link-dest` honor the absence of `-p`, `-o`, and `-g`.
3778
3779  - Made rsync treat a trailing slash in the destination in a more consistent
3780    manner.
3781
3782  - Fixed file I/O error detection. (John Van Essen)
3783
3784  - Fixed bogus `malformed address {hostname}` message in rsyncd log when
3785    checking IP address against hostnames from `hosts allow` and `hosts deny`
3786    parameters in config file.
3787
3788  - Print heap statistics when verbose >= 2 instead of when >= 1.
3789
3790  - Fixed a compression (`-z`) bug when syncing a mostly-matching file that
3791    contains already-compressed data. (Yasuoka Masahiko and Wayne Davison)
3792
3793  - Fixed a bug in the `--backup` code that could cause deleted files to not get
3794    backed up.
3795
3796  - When the backup code makes new directories, create them with mode 0700
3797    instead of 0755 (since the directory permissions in the backup tree are not
3798    yet copied from the main tree).
3799
3800  - Call setgroups() in a more portable manner.
3801
3802  - Improved file-related error messages to better indicate exactly what
3803    pathname failed. (Wayne Davison)
3804
3805  - Fixed some bugs in the handling of `--delete` and `--exclude` when using the
3806    `--relative` (`-R`) option. (Wayne Davison)
3807
3808  - Fixed bug that prevented regular files from replacing special files and
3809    caused a directory in `--link-dest` or `--compare-dest` to block the
3810    creation of a file with the same path. A directory still cannot be replaced
3811    by a regular file unless `--delete` specified. (J.W. Schultz)
3812
3813  - Detect and report when open or opendir succeed but read and readdir fail
3814    caused by network filesystem issues and truncated files. (David Norwood,
3815    Michael Brown, J.W. Schultz)
3816
3817  - Added a fix that should give ssh time to restore the tty settings if the
3818    user presses Ctrl-C at an ssh password prompt.
3819
3820 ### INTERNAL:
3821
3822  - Eliminated vestigial support for old versions that we stopped supporting.
3823    (J.W. Schultz)
3824
3825  - Simplified some of the option-parsing code. (Wayne Davison)
3826
3827  - Some cleanup made to the exclude code, as well as some new defines added to
3828    enhance readability. (Wayne Davison)
3829
3830  - Changed the protocol-version code so that it can interact at a lower
3831    protocol level than the maximum supported by both sides.  Added an
3832    undocumented option, `--protocol=N`, to force the value we advertise to the
3833    other side (primarily for testing purposes).  (Wayne Davison)
3834
3835 ------------------------------------------------------------------------------
3836 <a name="2.5.7"></a>
3837
3838 # NEWS for rsync 2.5.7 (4 Dec 2003)
3839
3840 ## Changes in this version:
3841
3842 ### SECURITY FIXES:
3843
3844  - Fix buffer handling bugs. (Andrew Tridgell, Martin Pool, Paul Russell,
3845    Andrea Barisani)
3846
3847 ------------------------------------------------------------------------------
3848 <a name="2.5.6"></a>
3849
3850 # NEWS for rsync 2.5.6, aka "the dwd-between-jobs release" (26 Jan 2003)
3851
3852 ## Changes in this version:
3853
3854 ### ENHANCEMENTS:
3855
3856  - The `--delete-after` option now implies `--delete`. (Wayne Davison)
3857
3858  - The `--suffix` option can now be used with `--backup-dir`. (Michael
3859    Zimmerman)
3860
3861  - Combining `::` syntax with the `--rsh`/`-e` option now uses the specified
3862    remote-shell as a transport to talk to a (newly-spawned) server-daemon. This
3863    allows someone to use daemon features, such as modules, over a secure
3864    protocol, such as ssh. (JD Paul)
3865
3866  - The rsync:// syntax for daemon connections is now accepted in the
3867    destination field.
3868
3869  - If the file name given to `--include-from` or `--exclude-from` is `-`, rsync
3870    will read from standard input. (J.W. Schultz)
3871
3872  - New option `--link-dest` which is like `--compare-dest` except that
3873    unchanged files are hard-linked in to the destination directory.  (J.W.
3874    Schultz)
3875
3876  - Don't report an error if an excluded file disappears during an rsync run.
3877    (Eugene Chupriyanov and Bo Kersey)
3878
3879  - Added .svn to `--cvs-exclude` list to support subversion. (Jon Middleton)
3880
3881  - Properly support IPv6 addresses in the rsyncd.conf `hosts allow` and `hosts
3882    deny` fields. (Hideaki Yoshifuji)
3883
3884  - Changed exclude file handling to permit DOS or MAC style line terminations.
3885    (J.W. Schultz)
3886
3887  - Ignore errors from chmod when `-p`/`-a`/`--preserve-perms` is not set.
3888    (Dave Dykstra)
3889
3890 ### BUG FIXES:
3891
3892  - Fix `forward name lookup failed` errors on AIX 4.3.3. (John L. Allen, Martin
3893    Pool)
3894
3895  - Generate each file's rolling-checksum data as we send it, not in a separate
3896    (memory-eating) pass before hand. This prevents timeout errors on really
3897    large files. (Stefan Nehlsen)
3898
3899  - Fix compilation on Tru64. (Albert Chin, Zoong Pham)
3900
3901  - Better handling of some client-server errors. (Martin Pool)
3902
3903  - Fixed a crash that would occur when sending a list of files that contains a
3904    duplicate name (if it sorts to the end of the file list) and using
3905    `--delete`. (Wayne Davison)
3906
3907  - Fixed the file-name duplicate-removal code when dealing with multiple dups
3908    in a row. (Wayne Davison)
3909
3910  - Fixed a bug that caused rsync to lose the exit status of its child processes
3911    and sometimes return an exit code of 0 instead of showing an error. (David
3912    R. Staples, Dave Dykstra)
3913
3914  - Fixed bug in `--copy-unsafe-links` that caused it to be completely broken.
3915    (Dave Dykstra)
3916
3917  - Prevent infinite recursion in cleanup code under certain circumstances.
3918    (Sviatoslav Sviridov and Marc Espie)
3919
3920  - Fixed a bug that prevented rsync from creating intervening directories when
3921    `--relative-paths`/`-R` is set. (Craig Barratt)
3922
3923  - Prevent `Connection reset by peer` messages from Cygwin. (Randy O'Meara)
3924
3925 ### INTERNAL:
3926
3927  - Many code cleanups and improved internal documentation. (Martin Pool, Nelson
3928    Beebe)
3929
3930  - Portability fixes. (Dave Dykstra and Wayne Davison)
3931
3932  - More test cases. (Martin Pool)
3933
3934  - Some test-case fixes. (Brian Poole, Wayne Davison)
3935
3936  - Updated included popt to the latest vendor drop, version 1.6.4.  (Jos
3937    Backus)
3938
3939  - Updated config.guess and config.sub to latest versions; this means rsync
3940    should build on more platforms. (Paul Green)
3941
3942 ------------------------------------------------------------------------------
3943 <a name="2.5.5"></a>
3944
3945 # NEWS for rsync 2.5.5, aka Snowy River (2 Apr 2002)
3946
3947 ## Changes in this version:
3948
3949 ### ENHANCEMENTS:
3950
3951  - With `--progress`, when a transfer is complete show the time taken;
3952    otherwise show expected time to complete. (Cameron Simpson)
3953
3954  - Make `make install-strip` works properly, and `make install` accepts a
3955    DESTDIR variable for help in building binary packages.  (Peter
3956    Breitenlohner, Greg Louis)
3957
3958  - If configured with `--enable-maintainer-mode`, then on receipt of a fatal
3959    signal rsync will try to open an xterm running gdb, similarly to Samba's
3960    `panic action` or GNOME's bug-buddy.  (Martin Pool)
3961
3962 ### BUG FIXES:
3963
3964  - Fix situation where failure to fork (e.g. because out of process slots)
3965    would cause rsync to kill all processes owned by the current user. Yes,
3966    really! (Paul Haas, Martin Pool)
3967
3968  - Fix test suite on Solaris. (Jos Backus, Martin Pool)
3969
3970  - Fix minor memory leak in socket code. (Dave Dykstra, Martin Pool.)
3971
3972  - Fix `--whole-file` problem that caused it to be the default even for remote
3973    connections. (Martin Pool, Frank Schulz)
3974
3975  - Work around bug in Mac OS X mkdir(2), which cannot handle trailing slashes.
3976    <http://www.opensource.apple.com/bugs/X/BSD%20Kernel/2734739.html> (Martin
3977    Pool)
3978
3979  - Improved network error handling. (Greg A. Woods)
3980
3981 ------------------------------------------------------------------------------
3982 <a name="2.5.4"></a>
3983
3984 # NEWS for rsync 2.5.4, aka "Imitation lizard skin" (13 Mar 2002)
3985
3986 ## Changes in this version:
3987
3988 ### BUG FIXES:
3989
3990  - Additional fix for zlib double-free bug. (Martin Pool, Andrew Tridgell) (CVE
3991    CAN-2002-0059)
3992
3993 ### ENHANCEMENTS:
3994
3995  - Merge in changes from zlib 1.1.3 to zlib 1.1.4. (Jos Backus) (Note that
3996    rsync still uses a custom version of zlib; you can not just link against a
3997    system library. See zlib/README.rsync)
3998
3999  - Additional test cases for `--compress`. (Martin Pool)
4000
4001 ------------------------------------------------------------------------------
4002 <a name="2.5.3"></a>
4003
4004 # NEWS for rsync 2.5.3, aka "Happy 26" (11 Mar 2002)
4005
4006 ## Changes in this version:
4007
4008 ### SECURITY FIXES:
4009
4010  - Make sure that supplementary groups are removed from a server
4011    process after changing uid and gid. (Ethan Benson) (Debian bug
4012    #132272, CVE CAN-2002-0080)
4013
4014 ### BUG FIXES:
4015
4016  - Fix zlib double-free bug. (Owen Taylor, Mark J Cox) (CVE CAN-2002-0059)
4017
4018  - Fixed problem that in many cases caused the error message unexpected read
4019    size of 0 in `map_ptr` and resulted in the wrong data being copied.
4020
4021  - Fixed compilation errors on some systems caused by the use of `unsigned
4022    int64` in rsync.h.
4023
4024  - Fixed problem on systems such as Sunos4 that do not support realloc on a
4025    NULL pointer; error was 'out of memory in "flist_expand"'.
4026
4027  - Fix for rsync server processes hanging around after the client unexpectedly
4028    disconnects. (Colin Walters) (Debian bug #128632)
4029
4030  - Cope with BSD systems on which mkdir() will not accept a trailing slash.
4031
4032 ### ENHANCEMENTS:
4033
4034  - Merge in changes from zlib 1.1.2 to zlib 1.1.3. (Note that rsync still uses
4035    a custom version of zlib; you can not just link against a system library.
4036    See zlib/README.rsync)
4037
4038  - Command to initiate connections is only shown with `-vv`, rather than `-v`
4039    as in 2.5.2. Output from plain `-v` is more similar to what was historically
4040    used so as not to break scripts that try to parse the output.
4041
4042  - Added `--no-whole-file` and `--no-blocking-io` options (Dave Dykstra)
4043
4044  - Made the `--write-batch` and `--read-batch` options actually work and added
4045    documentation in the man page (Jos Backus)
4046
4047  - If the daemon is unable to fork a child to accept a connection, print an
4048    error message. (Colin Walters)
4049
4050 ------------------------------------------------------------------------------
4051 <a name="2.5.2"></a>
4052
4053 # NEWS for rsync 2.5.2 (26 Jan 2002)
4054
4055 ## Changes in this version:
4056
4057 ### SECURITY FIXES:
4058
4059  - Signedness security patch from Sebastian Krahmer <krahmer@suse.de> -- in
4060    some cases we were not sufficiently careful about reading integers from the
4061    network.
4062
4063 ### PROTOCOL NUMBER:
4064
4065  - The protocol number was changed to 26.
4066
4067 ### BUG FIXES:
4068
4069  - Fix possible string mangling in log files.
4070
4071  - Fix for setting local address of outgoing sockets.
4072
4073  - Better handling of hardlinks and devices on platforms with 64-bit `dev_t` or
4074    `ino_t`.
4075
4076  - Name resolution on machines supporting IPv6 is improved.
4077
4078  - Fix for device nodes. (dann frazier) (Debian #129135)
4079
4080 ### ENHANCEMENTS:
4081
4082  - With `-v`, rsync now shows the command used to initiate an ssh/rsh
4083    connection.
4084
4085  - `--statistics` now shows memory heap usage on platforms that support
4086    mallinfo().
4087
4088  - "The Ted T'so school of program optimization": make progress visible and
4089    people will think it's faster. (With `--progress`, rsync will show you how
4090    many files it has seen as it builds the `file_list`, giving some indication
4091    that it has not hung.)
4092
4093  - Improvements to batch mode support. This is still experimental but testing
4094    would be welcome. (Jos Backus)
4095
4096  - New `--ignore-existing` option, patch previously distributed with Vipul's
4097    Razor. (Debian #124286)
4098
4099 ------------------------------------------------------------------------------
4100 <a name="2.5.1"></a>
4101
4102 # NEWS for rsync 2.5.1 (3 Jan 2002)
4103
4104 ## Changes in this version:
4105
4106 ### BUG FIXES:
4107
4108  - Fix for segfault in `--daemon` mode configuration parser. (Paul Mackerras)
4109
4110  - Correct `string<->address` parsing for both IPv4 and 6.  (YOSHIFUJI Hideaki,
4111    SUMIKAWA Munechika and Jun-ichiro `itojun` Hagino)
4112
4113  - Various fixes for IPv6 support. (Dave Dykstra)
4114
4115  - rsync.1 typo fix. (Matt Kraai)
4116
4117  - Test suite typo fixes. (Tom Schmidt)
4118
4119  - rsync.1 grammar and clarity improvements. (Edward Welbourne)
4120
4121  - Correction to ./configure tests for `inet_ntop`. (Jeff Garzik)
4122
4123 ### ENHANCEMENTS:
4124
4125  - `--progress` and `-P` now show estimated data transfer rate (in a multiple
4126    of bytes/s) and estimated time to completion. (Rik Faith)
4127
4128  - `--no-detach` option, required to run as a W32 service and also useful when
4129    running on Unix under daemontools, AIX's SRC, or a debugger. (Max Bowsher,
4130    Jos Backus)
4131
4132  - Clearer error messages for some conditions.
4133
4134 ------------------------------------------------------------------------------
4135 <a name="2.5.0"></a>
4136
4137 # NEWS for rsync 2.5.0 (30 Nov 2001)
4138
4139 ## Changes in this version:
4140
4141 ### PROTOCOL NUMBER:
4142
4143  - The protocol number was changed to 25.
4144
4145 ### ANNOUNCEMENTS:
4146
4147  - Martin Pool <mbp@samba.org> is now a co-maintainer.
4148
4149 ### NEW FEATURES:
4150
4151  - Support for LSB-compliant packaging <http://www.linuxbase.org/>
4152
4153  - Shell wildcards are allowed in `auth users` lines.
4154
4155  - Merged UNC rsync+ patch to support creation of standalone patch sets. By
4156    Bert J. Dempsey and Debra Weiss, updated by Jos Backus.
4157    <http://www.ils.unc.edu/i2dsi/unc_rsync+.html>
4158
4159  - IPv6 support based on a patch from KAME.net, on systems including modern
4160    versions of Linux, Solaris, and HP-UX. Also includes IPv6 compatibility
4161    functions for old OSs by the Internet Software Consortium, Paul Vixie, the
4162    OpenSSH portability project, and OpenBSD.
4163
4164 ### ENHANCEMENTS:
4165
4166  - Include/exclude cluestick: with `-vv`, print out whether files are included
4167    or excluded and why.
4168
4169  - Many error messages have more friendly explanations and more details.
4170
4171  - Manual page improvements plus scanty protocol documentation.
4172
4173  - When running as `--daemon` in the background and using a `log file`
4174    rsyncd.conf directive, close the log file every time it is open when going
4175    to sleep on the socket. This allows the log file to get cleaned out by
4176    another process.
4177
4178  - Change to using libpopt rather than getopt for processing options. This
4179    makes the code cleaner and the behaviour more consistent across platforms.
4180    popt is included and built if not installed on the platform.
4181
4182  - More details in `--version`, including note about whether 64-bit files,
4183    symlinks and hardlinks are supported.
4184
4185  - MD4 code may use less CPU cycles.
4186
4187  - Use mkstemp on systems where it is secure. If we use mktemp, explain that we
4188    do it in a secure way.
4189
4190  - `--whole-file` is the default when source and target are on the local
4191    machine.
4192
4193 ### BUG FIXES:
4194
4195  - Fix for various bugs causing rsync to hang.
4196
4197  - Attempt to fix Large File Summit support on AIX.
4198
4199  - Attempt to fix error handling lockup bug.
4200
4201  - Give a non-0 exit code if **any** of the files we have been asked to
4202    transfer fail to transfer.
4203
4204  - For log messages containing ridiculously long strings that might overflow a
4205    buffer rsync no longer aborts, but rather prints an ellipsis at the end of
4206    the string. (Patch from Ed Santiago.)
4207
4208 ### PLATFORMS:
4209
4210  - Improved support for UNICOS (tested on Cray T3E and Cray SV1)
4211
4212  - autoconf2.52 (or later) is now required to rebuild the autoconf scripts. It
4213    is not required to simply build rsync.
4214
4215  - Platforms thought to work in this release:
4216
4217    - Cray SV1 UNICOS 10.0.0.8 cc
4218    - Debian Linux 2.2 UltraSparc gcc
4219    - Debian Linux testing/unstable ARM gcc
4220    - FreeBSD 3.3-RELEASE i386 cc
4221    - FreeBSD 4.1.1-RELEASE i386 cc
4222    - FreeBSD 4.3-STABLE i386 cc
4223    - HP PA-RISC HP-UX 10.20 gcc
4224    - HP PA-RISC HP-UX 11.11 cc
4225    - IRIX 6.5 MIPS cc
4226    - IRIX 6.5 MIPS gcc
4227    - Mac OS X PPC (--disable-ipv6) cc
4228    - NetBSD 1.5 i386 gcc
4229    - NetBSD Current i386 cc
4230    - OpenBSD 2.5 Sparc gcc
4231    - OpenBSD 2.9 i386 cc
4232    - OpenBSD Current i386 cc
4233    - RedHat 6.2 i386 gcc
4234    - RedHat 6.2 i386 insure++
4235    - RedHat 7.0 i386 gcc
4236    - RedHat 7.1 i386 (Kernel 2.4.10) gcc
4237    - Slackware 8.0 i686 (Kernel 2.4.10)
4238    - Solaris 8 UltraSparc cc
4239    - Solaris 8 UltraSparc gcc
4240    - Solaris 8 i386 gcc
4241    - SuSE 7.1 i386 gcc2.95.2
4242    - SuSE 7.1 ppc gcc2.95.2
4243    - i386-pc-sco3.2v5.0.5 cc
4244    - i386-pc-sco3.2v5.0.5 gcc
4245    - powerpc-ibm-aix4.3.3.0 cc
4246    - i686-unknown-sysv5UnixWare7.1.0 gcc
4247    - i686-unknown-sysv5UnixWare7.1.0 cc
4248
4249 ### TESTING:
4250
4251  - The existing test.sh script by Phil Hands has been merged into a
4252    test framework that works from both `make check` and the Samba
4253    build farm.
4254
4255 ------------------------------------------------------------------------------
4256
4257 ## Partial Protocol History
4258
4259 | RELEASE DATE | VER.   | DATE OF COMMIT\* | PROTOCOL    |
4260 |--------------|--------|------------------|-------------|
4261 | ?? Sep 2020  | 3.2.4  |                  | 31          |
4262 | 06 Aug 2020  | 3.2.3  |                  | 31          |
4263 | 04 Jul 2020  | 3.2.2  |                  | 31          |
4264 | 22 Jun 2020  | 3.2.1  |                  | 31          |
4265 | 19 Jun 2020  | 3.2.0  |                  | 31          |
4266 | 28 Jan 2018  | 3.1.3  |                  | 31          |
4267 | 21 Dec 2015  | 3.1.2  |                  | 31          |
4268 | 22 Jun 2014  | 3.1.1  |                  | 31          |
4269 | 28 Sep 2013  | 3.1.0  | 31 Aug 2008      | 31          |
4270 | 23 Sep 2011  | 3.0.9  |                  | 30          |
4271 | 26 Mar 2011  | 3.0.8  |                  | 30          |
4272 | 31 Dec 2009  | 3.0.7  |                  | 30          |
4273 | 08 May 2009  | 3.0.6  |                  | 30          |
4274 | 28 Dec 2008  | 3.0.5  |                  | 30          |
4275 | 06 Sep 2008  | 3.0.4  |                  | 30          |
4276 | 29 Jun 2008  | 3.0.3  |                  | 30          |
4277 | 08 Apr 2008  | 3.0.2  |                  | 30          |
4278 | 03 Apr 2008  | 3.0.1  |                  | 30          |
4279 | 01 Mar 2008  | 3.0.0  | 11 Nov 2006      | 30          |
4280 | 06 Nov 2006  | 2.6.9  |                  | 29          |
4281 | 22 Apr 2006  | 2.6.8  |                  | 29          |
4282 | 11 Mar 2006  | 2.6.7  |                  | 29          |
4283 | 28 Jul 2005  | 2.6.6  |                  | 29          |
4284 | 01 Jun 2005  | 2.6.5  |                  | 29          |
4285 | 30 Mar 2005  | 2.6.4  | 17 Jan 2005      | 29          |
4286 | 30 Sep 2004  | 2.6.3  |                  | 28          |
4287 | 30 Apr 2004  | 2.6.2  |                  | 28          |
4288 | 26 Apr 2004  | 2.6.1  | 08 Jan 2004      | 28          |
4289 | 01 Jan 2004  | 2.6.0  | 10 Apr 2003      | 27 (MAX=40) |
4290 | 04 Dec 2003  | 2.5.7  |                  | 26          |
4291 | 26 Jan 2003  | 2.5.6  |                  | 26          |
4292 | 02 Apr 2002  | 2.5.5  |                  | 26          |
4293 | 13 Mar 2002  | 2.5.4  |                  | 26          |
4294 | 11 Mar 2002  | 2.5.3  |                  | 26          |
4295 | 26 Jan 2002  | 2.5.2  | 11 Jan 2002      | 26          |
4296 | 03 Jan 2002  | 2.5.1  |                  | 25          |
4297 | 30 Nov 2001  | 2.5.0  | 23 Aug 2001      | 25          |
4298 | 06 Sep 2000  | 2.4.6  |                  | 24          |
4299 | 19 Aug 2000  | 2.4.5  |                  | 24          |
4300 | 29 Jul 2000  | 2.4.4  |                  | 24          |
4301 | 09 Apr 2000  | 2.4.3  |                  | 24          |
4302 | 30 Mar 2000  | 2.4.2  |                  | 24          |
4303 | 30 Jan 2000  | 2.4.1  | 29 Jan 2000      | 24          |
4304 | 29 Jan 2000  | 2.4.0  | 28 Jan 2000      | 23          |
4305 | 25 Jan 2000  | 2.3.3  | 23 Jan 2000      | 22          |
4306 | 08 Nov 1999  | 2.3.2  | 26 Jun 1999      | 21          |
4307 | 06 Apr 1999  | 2.3.1  |                  | 20          |
4308 | 15 Mar 1999  | 2.3.0  | 15 Mar 1999      | 20          |
4309 | 25 Nov 1998  | 2.2.1  |                  | 19          |
4310 | 03 Nov 1998  | 2.2.0  |                  | 19          |
4311 | 09 Sep 1998  | 2.1.1  |                  | 19          |
4312 | 20 Jul 1998  | 2.1.0  |                  | 19          |
4313 | 17 Jul 1998  | 2.0.19 |                  | 19          |
4314 | 18 Jun 1998  | 2.0.17 |                  | 19          |
4315 | 01 Jun 1998  | 2.0.16 |                  | 19          |
4316 | 27 May 1998  | 2.0.13 | 27 May 1998      | 19          |
4317 | 26 May 1998  | 2.0.12 |                  | 18          |
4318 | 22 May 1998  | 2.0.11 |                  | 18          |
4319 | 18 May 1998  | 2.0.9  | 18 May 1998      | 18          |
4320 | 17 May 1998  | 2.0.8  |                  | 17          |
4321 | 15 May 1998  | 2.0.1  |                  | 17          |
4322 | 14 May 1998  | 2.0.0  |                  | 17          |
4323 | 17 Apr 1998  | 1.7.4  |                  | 17          |
4324 | 13 Apr 1998  | 1.7.3  |                  | 17          |
4325 | 05 Apr 1998  | 1.7.2  |                  | 17          |
4326 | 26 Mar 1998  | 1.7.1  |                  | 17          |
4327 | 26 Mar 1998  | 1.7.0  | 26 Mar 1998      | 17 (MAX=30) |
4328 | 13 Jan 1998  | 1.6.9  | 13 Jan 1998      | 15 (MAX=20) |
4329
4330 \* DATE OF COMMIT is the date the protocol change was committed to version
4331 control.