Remove bypassed checksums in --inplace to improve speed.
[rsync.git] / NEWS
1 NEWS for rsync 3.1.0 (UNRELEASED)
2 Protocol: 31 (changed)
3 Changes since 3.0.9:
4
5   OUTPUT CHANGES:
6
7     - Output numbers in 3-digit groups by default (e.g. 1,234,567).  See the
8       --human-readable option for a way to turn it off.  See also the daemon's
9       "log format" parameter and related command-line options (including
10       --out-format) for a modifier that can be used to request digit-grouping
11       or human-readable output in log escapes. (Note that log output is
12       unchanged by default.)
13
14     - The --list-only option is now affected by the --human-readable setting.
15       It will display digit groupings by default, and unit suffixes if higher
16       levels of readability are requested.  Also, the column width for the size
17       output has increased from 11 to 14 characters when human readability is
18       enabled.  Use --no-h to get the old-style output and column size.
19
20     - The output of the --progress option has changed:  the string "xfer" was
21       shortened to "xfr", and the string "to-check" was shortened to "to-chk",
22       both designed to make room for the (by default) wider display of file
23       size numbers without making the total line-length longer.  Also, when
24       incremental recursion is enabled, the string "ir-chk" will be used
25       instead of "to-chk" up until the incremental-recursion scan is done,
26       letting you know that the value to check and the total value will still
27       be increasing as new files are found.
28
29     - Enhanced the --stats output: 1) to mention how many files were created
30       (protocol >= 28), 2) to mention how many files were deleted (a new line
31       for protocol 31, but only output when --delete is in effect), and 3) to
32       follow the file-count, created-count, and deleted-count with a subcount
33       list that shows the counts by type.  The wording of the transferred count
34       has also changed so that it is clearer that it is only a count of regular
35       files.
36
37   BUG FIXES:
38
39     - Fixed a bug in the iconv code when EINVAL or EILSEQ is returned with a
40       full output buffer.
41
42     - Fixed some rare bugs in --iconv processing that might cause a multibyte
43       character to get translated incorrectly.
44
45     - Fixed a bogus "vanished file" error if some files were specified with
46       "./" prefixes and others were not.
47
48     - Changed the way --progress overwrites its prior output in order to make
49       it nearly impossible for the progress to get overwritten by an error.
50
51     - Improved the propagation of abnormal-exit error messages.  This should
52       help the client side to receive errors from the server when it is exiting
53       abnormally, and should also avoid dying with an "connection unexpectedly
54       closed" exit when the closed connection is really expected.
55
56     - The sender now checks each file it plans to remove to ensure that it
57       hasn't changed from the first stat's info.  This helps to avoid losing
58       file data when the user is not using the option in a safe manner.
59
60     - Fixed a data-duplication bug in the compress option that made compression
61       less efficient.  This improves protocol 31 onward, while behaving in a
62       compatible (buggy) manner with older rsync protocols.
63
64     - When creating a temp-file, rsync is now a bit smarter about it dot-char
65       choices, which can fix a problem on OS X with names that start with "..".
66
67     - The reads that map_ptr() now does are aligned on 1K boundaries.  This
68       helps some filesystems and/or files that don't like unaligned reads.
69
70     - Fix an issue in the msleep() function if time jumps backwards.
71
72     - Fix daemon-server module-name splitting bug where an arg would get split
73       even if --protect-args was used.
74
75   ENHANCEMENTS:
76
77     - Added the --remote-option=OPT (-M OPT) command-line option that is useful
78       for things like sending a remote --log-file=FILE or --fake-super option.
79
80     - Added the --info=FLAGS and --debug=FLAGS options to allow finer-grained
81       control over what is output.  Added an extra type of --progress output
82       using --info=progress2.
83
84     - The --msgs2stderr option can help with debugging rsync by allowing the
85       debug messages to get output to stderr rather than travel via the socket
86       protocol.
87
88     - Added the --delete-missing-args and --ignore-missing-args options to
89       either delete or ignore user-specified files on the receiver that are
90       missing on the sender (normally the absence of user-specified files
91       generates an error).
92
93     - Added a "T" (terabyte) category to the --human-readable size suffixes.
94
95     - Added the --usermap/--groupmap/--chown options for manipulating file
96       ownership during the copy.
97
98     - Added the "%C" escape to the log-output handling, which will output the
99       MD5 checksum of any transferred file, or all files if --checksum was
100       specified (when protocol 30 or above is in effect).
101
102     - Added the "reverse lookup" parameter to the rsync daemon config file to
103       allow reverse-DNS lookups to be disabled.
104
105     - Added a forward-DNS lookup for the daemon's hosts allow/deny config.  Can
106       be disabled via "forward lookup" parameter (defaults to enabled).
107
108     - Added a way for more than one group to be specified in the daemon's
109       config file, including a way to specify that you want all of the
110       specified user's groups without having to name them.  Also changed the
111       daemon to complain about an inability to set explicitly-specified uid/gid
112       values, even when not run by a super-user.
113
114     - The daemon now tries to send the user the error messages from the
115       pre-xfer exec script when it fails.
116
117     - Improved the use of alt-dest options into an existing hierarchy of files:
118       If a match is found in an alt-dir, it takes precedence over an existing
119       file.  (We'll need to wait for a future version before attribute-changes
120       on otherwise unchanged files are safe when using an existing hierarchy.)
121
122     - Added per-user authorization options and group-authorization support to
123       the daemon's "auth users" parameter.
124
125     - Added a way to reference environment variables in a daemon's config file
126       (using %VAR% references).
127
128     - When replacing a non-dir with a symlink/hard-link/device/special-file,
129       the update should now be done in an atomic manner.
130
131     - Avoid re-sending xattr info for hard-linked files w/the same xattrs
132       (protocol 31).
133
134     - The backup code was improved to use better logic maintaining the backup
135       directory hierarchy.  Also, when a file is being backed up, rsync tries
136       to hard-link it into place so that the upcoming replacement of the
137       destination file will be atomic (for the normal, non-inplace logic).
138
139     - Added the ability to synchronize nano-second modified times.
140
141     - Added a few more default suffixes for the "dont compress" settings.
142
143     - Added the checking of the RSYNC_PROTECT_ARGS environment variable to allow
144       the default for the --protect-args command-line option to be overridden.
145
146     - Added the --preallocate command-line option.
147
148     - Allow --password-file=- to read the password from stdin (filename "-").
149
150     - Rsync now comes packaged with an rsync-ssl helper script that can be
151       used to contact a remote rsync daemon using a piped-stunnel command.
152       It also includes an stunnel config file to run the server side to
153       support ssl daemon connections.  See the packaging/lsb/rsync.spec
154       file for one way to package the resulting files.  (Suggestions for
155       how to make this even easier to install & use are welcomed.)
156
157     - Improved the speed of some --inplace updates when there are lots of
158       identical checksum blocks that end up being unsuable.
159
160     - Added the --outbuf=N|L|B option for chosing the output buffering.
161
162     - Repating the --fuzzy option now causes the code to look for fuzzy matches
163       inside alt-dest directories too.
164
165     - The --chmod option now supports numeric modes, e.g. --chmod=644,D755
166
167     - Added some Solaris xattr code.
168
169     - Made an rsync daemon (the listening process) exit with a 0 status when
170       it was signalled to die.  This helps launchd.
171
172     - Improved the RSYNC_* environment variables for the pre-xfer exec script:
173       when a daemon is sent multiple request args, they are now joined into a
174       single return value (separated by spaces) so that the RSYNC_REQUEST
175       environment variable is accurate for any "pre-xfer exec".  The values in
176       RSYNC_ARG# vars are no longer truncated at the "." arg (prior to the
177       request dirs/files), so that all the requested values are also listed
178       (separately) in RSYNC_ARG# variables.
179
180   EXTRAS:
181
182     - Added an "instant-rsyncd" script to the support directory, which makes
183       it easy to configure a simple rsync daemon in the current directory.
184
185     - Added the "mapfrom" and "mapto" scripts to the support directory, which
186       makes it easier to do user/group mapping in a local transfer based on
187       passwd/group files from another machine.
188
189     - There's a new, improved version of the lsh script in the support dir:
190       it's written in perl and supports -u without resorting to using sudo
191       (when run as root).  The old shell version is now named lsh.sh.
192
193     - There is a helper script named rsync-slash-strip in the support directory
194       for anyone that wants to change the way rsync handles args with trailing
195       slashes.  (e.g. arg/ would get stripped to arg while arg/. would turn into
196       arg/).
197
198   INTERNAL:
199
200     - The I/O code was rewritten to be simpler and do bigger buffered reads
201       over the socket.  The I/O between the receiver and the generator was
202       changed to be standard multiplexed-I/O (like that over the socket).
203
204     - The sender tries to use any dead time while the generator is looking for
205       files to transfer in order to do sender-side directory scanning in a more
206       parallel manner.
207
208     - A daemon can now inform a client about a daemon-configured timeout value
209       so that the client can assist in the keep-alive activity (protocol 31).
210
211     - The filter code received some refactoring to make it more extendable, to
212       read better, and do better sanity checking.
213
214     - Really big numbers are now output using our own big-num routine rather
215       than casting them to a double and using a %.0f conversion.
216
217     - The pool_alloc library has received some minor improvements in alignment
218       handling.
219
220     - Added init_stat_x() function to avoid duplication of acl/xattr init code.
221
222     - The included zlib was upgraded from 1.2.3 to 1.2.8.
223
224     - Rsync can now be compiled to use an unmodified zlib library instead of
225       the tweaked one that is included with rsync.  This will eventually
226       become the default, at which point we'll start the countdown to removing
227       the included zlib.  Until then, feel free to configure using:
228
229         ./configure --with-included-zlib=no
230
231   DEVELOPER RELATED:
232
233     - Added more conditional debug output.
234
235     - Fixed some build issues for android and minix.