Mention latest changes.
authorWayne Davison <wayne@opencoder.net>
Sun, 2 Oct 2022 16:42:55 +0000 (09:42 -0700)
committerWayne Davison <wayne@opencoder.net>
Sun, 2 Oct 2022 17:03:00 +0000 (10:03 -0700)
NEWS.md
rsync.1.md

diff --git a/NEWS.md b/NEWS.md
index 3b49c2d4da1b92a9f9c7c0b125a42501ce05c714..05476bee5cc952b9e07d16ee1ef1289c660bf8b5 100644 (file)
--- a/NEWS.md
+++ b/NEWS.md
@@ -25,8 +25,8 @@
 - Added support for the SHA1 digest in file checksums.  While this tends to be
   overkill, it is available if someone really needs it.  This overly-long
   checksum is at the lowest priority in the normal checksum negotiation list.
-  See `--checksum-choice` (`--cc`) and the `RSYNC_CHECKSUM_LIST` environment
-  var for how to customize this.
+  See [`--checksum-choice`](rsync.1#opt) (`--cc`) and the `RSYNC_CHECKSUM_LIST`
+  environment var for how to customize this.
 
 - Improved the xattr hash table to use a 64-bit key without slowing down the
   key's computation.  This should make extra sure that a collision doesn't
   converted. Newer rsync versions will provide more complete json info than
   older rsync versions.
 
-- The [`use chroot`](rsyncd.conf.5#use_chroot) daemon parameter now defaults to
-  "unset" so that rsync can use chroot when it works and a sanitized copy when
-  chroot is not supported (e.g., for a non-root daemon).  Explicitly setting
-  the parameter to true or false (on or off) behaves the same way as before.
+- The [`use chroot`](rsyncd.conf.5#) daemon parameter now defaults to "unset"
+  so that rsync can use chroot when it works and a sanitized copy when chroot
+  is not supported (e.g., for a non-root daemon).  Explicitly setting the
+  parameter to true or false (on or off) behaves the same way as before.
 
 - The `--fuzzy` option was optimized a bit to try to cut down on the amount of
   computations when considering a big pool of files. The simple heuristic from
   Kenneth Finnegan resuled in about a 2x speedup.
 
+- If rsync is forced to use protocol 29 or before (perhaps due to talking to an
+  rsync before 3.0.0), the modify time of a file is limited to 4-bytes.  Rsync
+  now interprets this value as an unsigned integer so that a current year past
+  2038 can continue to be represented. This does mean that years prior to 1970
+  cannot be represented in an older protocol, but this trade-off seems like the
+  right choice given that (1) 2038 is very rapidly approaching, and (2) newer
+  protocols support a much wider range of old and new dates.
+
+- The rsync client now treats an empty destination arg as an error, just like
+  it does for an empty source arg. This doesn't affect a `host:` arg (which is
+  treated the same as `host:.`) since the arg is not completely empty.  The use
+  of [`--old-args`](rsync.1#opt) (including via `RSYNC_OLD_ARGS`) allows the
+  prior behavior of treating an empty destination arg as a ".".
+
 ### PACKAGING RELATED:
 
 - The checksum code now uses openssl's EVP methods, which gets rid of various
index 029e4d823cd11e3d66f38db4cd7395f80288e124..7d96eca63a1af1c265676a3cd5c963fa23306b67 100644 (file)
@@ -859,7 +859,7 @@ expand it.
     that until a bunch of recursive copying has finished).  However, these
     early directories don't yet have their completed mode, mtime, or ownership
     set -- they have more restrictive rights until the subdirectory's copying
-    actually begins.  This early-creation idiom can be avoiding by using the
+    actually begins.  This early-creation idiom can be avoided by using the
     [`--omit-dir-times`](#opt) option.
 
     Incremental recursion can be disabled using the
@@ -1560,6 +1560,15 @@ expand it.
     will make the update fairly efficient if the files haven't actually
     changed, you're much better off using `-t`).
 
+    A modern rsync that is using transfer protocol 30 or 31 conveys a modify
+    time using up to 8-bytes. If rsync is forced to speak an older protocol
+    (perhaps due to the remote rsync being older than 3.0.0) a modify time is
+    conveyed using 4-bytes. Prior to 3.2.7, these shorter values could convey
+    a date range of 13-Dec-1901 to 19-Jan-2038.  Beginning with 3.2.7, these
+    4-byte values now convey a date range of 1-Jan-1970 to 7-Feb-2106.  If you
+    have files dated older than 1970, make sure your rsync executables are
+    upgraded so that the full range of dates can be conveyed.
+
 0.  `--atimes`, `-U`
 
     This tells rsync to set the access (use) times of the destination files to
@@ -2388,6 +2397,8 @@ expand it.
 
     This option tells rsync to stop trying to protect the arg values on the
     remote side from unintended word-splitting or other misinterpretation.
+    It also allows the client to treat an empty arg as a "." instead of
+    generating an error.
 
     The default in a modern rsync is for "shell-active" characters (including
     spaces) to be backslash-escaped in the args that are sent to the remote