./net/rsync, Network file distribution/synchronisation utility

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 3.2.7nb2, Package name: rsync-3.2.7nb2, Maintainer: pkgsrc-users

rsync is a replacement for rcp that has many more features.

rsync uses the "rsync algorithm" which provides a very fast method for
bringing remote files into sync. It does this by sending just the
differences in the files across the link, without requiring that both
sets of files are present at one of the ends of the link beforehand.
This makes rsync a good remote file distribution/synchronisation utility
in a dialup PPP/SLIP environment.

Note: it requires rsync on the destination machine.

There is a Computer Science Technical Report on the rsync algorithm
included in the distribution, and is also available as

Required to run:
[shells/bash] [security/openssl] [devel/popt] [archivers/lz4] [archivers/zstd] [devel/xxhash]

Required to build:

Package options: acl, zstd

Master sites:

Filesize: 1122.839 KB

Version history: (Expand)

CVS history: (Expand)

   2023-11-10 11:01:37 by Nia Alarie | Files touched by this commit (1)
Log message:
rsync: Disable zstd by default on Darwin/powerpc, it doesn't like ld(1)
   2023-10-25 00:11:51 by Thomas Klausner | Files touched by this commit (2298)
Log message:
*: bump for openssl 3
   2022-12-31 10:10:15 by Christopher KOBAYASHI | Files touched by this commit (1)
Log message:
Restore acl option, which was inadvertantly nuked during the pkgsrc branch.

Sorry, adam@
   2022-12-29 01:47:40 by Christopher KOBAYASHI | Files touched by this commit (2)
Log message:
Make zstd an option (enabled by default).

Bump package revision.
   2022-10-24 12:28:22 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
rsync: updated to 3.2.7

rsync 3.2.7 (20 Oct 2022)


- Fixed the client-side validating of the remote sender's filtering behavior.

- More fixes for the "unrequested file-list name" name, including a copy of
  "/" with `--relative` enabled and a copy with a lot of related paths with
  `--relative` enabled (often derived from a `--files-from` list).

- When rsync gets an unpack error on an ACL, mention the filename.

- Avoid over-setting sanitize_paths when a daemon is serving "/" (even if
  "use chroot" is false).


- Added negotiated daemon-auth support that allows a stronger checksum digest
  to be used to validate a user's login to the daemon.  Added SHA512, SHA256,
  and SHA1 digests to MD5 & MD4.  These new digests are at the highest priority
  in the new daemon-auth negotiation list.

- 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`](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 hash collision doesn't

- If the `--version` option is repeated (e.g. `-VV`) then the information is
  output in a (still readable) JSON format.  Client side only.

- The script `support/json-rsync-version` is available to get the JSON style
  version output from any rsync.  The script accepts either text on stdin
  **or** an arg that specifies an rsync executable to run with a doubled
  `--version` option.  If the text we get isn't already in JSON format, it is
  converted. Newer rsync versions will provide more complete json info than
  older rsync versions. Various tweaks are made to keep the flag names
  consistent across versions.

- The [`use chroot`](rsyncd.conf.5#) daemon parameter now defaults to \ 
  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 ".".


- The checksum code now uses openssl's EVP methods, which gets rid of various
  deprecation warnings and makes it easy to support more digest methods.  On
  newer systems, the MD4 digest is marked as legacy in the openssl code, which
  makes openssl refuse to support it via EVP.  You can choose to ignore this
  and allow rsync's MD4 code to be used for older rsync connections (when
  talking to an rsync prior to 3.0.0) or you can choose to configure rsync to
  tell openssl to enable legacy algorithms (see below).

- A simple openssl config file is supplied that can be installed for rsync to
  use.  If you install packaging/openssl-rsync.cnf to a public spot (such as
  `/etc/ssl/openssl-rsync.cnf`) and then run configure with the option
  `--with-openssl-conf=/path/name.cnf`, this will cause rsync to export the
  configured path in the OPENSSL_CONF environment variable (when the variable
  is not already set).  This will enable openssl's MD4 code for rsync to use.

- The packager may wish to include an explicit "use chroot = true" in \ 
the top
  section of their supplied /etc/rsyncd.conf file if the daemon is being
  installed to run as the root user (though rsync should behave the same even
  with the value unset, a little extra paranoia doesn't hurt).

- I've noticed that some packagers haven't installed support/nameconvert for
  users to use in their chrooted rsync configs.  Even if it is not installed
  as an executable script (to avoid a python3 dependency) it would be good to
  install it with the other rsync-related support scripts.

- It would be good to add support/json-rsync-version to the list of installed
  support scripts.
   2022-09-11 15:52:40 by Thomas Klausner | Files touched by this commit (2) | Package updated
Log message:
rsync: update to 3.2.6.


- More path-cleaning improvements in the file-list validation code to avoid
  rejecting of valid args.

- A file-list validation fix for a [`--files-from`](rsync.1#opt) file that ends
  without a line-terminating character.

- Added a safety check that prevents the sender from removing destination files
  when a local copy using [`--remove-source-files`](rsync.1#opt) has some files
  that are shared between the sending & receiving hierarchies, including the
  case where the source dir & destination dir are identical.

- Fixed a bug in the internal MD4 checksum code that could cause the digest
  to be sporadically incorrect (the openssl version was/is fine).

- A minor tweak to rrsync added "copy-devices" to the list of known \ 
args, but
  left it disabled by default.


- Rename `--protect-args` to [`--secluded-args`](rsync.1#opt) to make it
  clearer how it differs from the default backslash-escaped arg-protecting
  behavior of rsync.  The old option names are still accepted.  The
  environment-variable override did not change its name.
   2022-08-22 13:11:49 by Thomas Klausner | Files touched by this commit (2) | Package updated
Log message:
rsync: update to 3.2.5.

# NEWS for rsync 3.2.5 (14 Aug 2022)

## Changes in this version:


- Added some file-list safety checking that helps to ensure that a rogue
  sending rsync can't add unrequested top-level names and/or include recursive
  names that should have been excluded by the sender.  These extra safety
  checks only require the receiver rsync to be updated.  When dealing with an
  untrusted sending host, it is safest to copy into a dedicated destination
  directory for the remote content (i.e. don't copy into a destination
  directory that contains files that aren't from the remote host unless you
  trust the remote host). Fixes CVE-2022-29154.

 - A fix for CVE-2022-37434 in the bundled zlib (buffer overflow issue).


- Fixed the handling of filenames specified with backslash-quoted wildcards
  when the default remote-arg-escaping is enabled.

- Fixed the configure check for signed char that was causing a host that
  defaults to unsigned characters to generate bogus rolling checksums. This
  made rsync send mostly literal data for a copy instead of finding matching
  data in the receiver's basis file (for a file that contains high-bit

- Lots of manpage improvements, including an attempt to better describe how
  include/exclude filters work.

- If rsync is compiled with an xxhash 0.8 library and then moved to a system
  with a dynamically linked xxhash 0.7 library, we now detect this and disable
  the XX3 hashes (since these routines didn't stabilize until 0.8).


- The [`--trust-sender`](rsync.1#opt) option was added as a way to bypass the
  extra file-list safety checking (should that be required).


- A note to those wanting to patch older rsync versions: the changes in this
  release requires the quoted argument change from 3.2.4. Then, you'll want
  every single code change from 3.2.5 since there is no fluff in this release.

- The build date that goes into the manpages is now based on the developer's
  release date, not on the build's local-timezone interpretation of the date.


- Configure now defaults GETGROUPS_T to gid_t when cross compiling.

- Configure now looks for the bsd/string.h include file in order to fix the
  build on a host that has strlcpy() in the main libc but not defined in the
  main string.h file.
   2022-07-23 08:55:30 by Thomas Klausner | Files touched by this commit (1)
Log message:
rsync: remove reference to non-existent file