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

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

Branch: CURRENT, Version: 3.2.4, Package name: rsync-3.2.4, 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

Master sites:

Filesize: 1088.724 KB

Version history: (Expand)

CVS history: (Expand)

   2022-04-20 22:09:55 by Thomas Klausner | Files touched by this commit (5) | Package updated
Log message:
rsync: update to 3.2.4.

# NEWS for rsync 3.2.4 (15 Apr 2022)

## Changes in this version:


 - A new form of arg protection was added that works similarly to the older
   [`--protect-args`](rsync.1#opt) (`-s`) option but in a way that avoids
   breaking things like rrsync (the restricted rsync script): rsync now uses
   backslash escaping for sending "shell-active" characters to the remote
   shell. This includes spaces, so fetching a remote file via a simple quoted
   filename value now works by default without any extra quoting:

       rsync -aiv host:'a simple file.pdf' .

   Wildcards are not escaped in filename args, but they are escaped in options
   like the [`--suffix`](rsync.1#opt) and [`--usermap`](rsync.1#opt) values.
   If your rsync script depends on the old arg-splitting behavior, either run
   it with the [`--old-args`](rsync.1#opt) option or `export RSYNC_OLD_ARGS=1`
   in the script's environment.  See also the [ADVANCED USAGE](rsync.1#)
   section of rsync's manpage for how to use a more modern arg style.

 - A long-standing bug was preventing rsync from figuring out the current
   locale's decimal point character, which made rsync always output numbers
   using the "C" locale.  Since this is now fixed in 3.2.4, a script that
   parses rsync's decimal numbers (e.g. from the verbose footer) may want to
   setup the environment in a way that the output continues to be in the C
   locale.  For instance, one of the following should work fine:

       export LC_ALL=C.UTF-8

   or if iconv translations are needed:

       if [ "${LC_ALL:-}" ]; then
           export LANG="$LC_ALL"
           export LC_CTYPE="$LC_ALL"
           unset LC_ALL
       export LC_NUMERIC=C.UTF-8


 - A fix for CVE-2018-25032 in the bundled zlib (memory corruption issue).


 - Fixed a bug with [`--inplace`](rsync.1#opt) + [`--sparse`](rsync.1#opt) (and
   a lack of [`--whole-file`](rsync.1#opt)) where the destination file could
   get reconstructed with bogus data.  Since the bug can also be avoided by
   using (the seemingly redundant) [`--no-W`](rsync.1#opt) on the receiving
   side, the latest rsync will now send `--no-W` to a remote receiver when this
   option combination occurs.  If your client rsync is not new enough to do
   this for you (or if you're just paranoid), you can manually specify `--no-W
   -M--no-W` (when not using [`--whole-file`](rsync.1#opt)) to make sure the
   bug is avoided.

 - Fixed a bug with [`--mkpath`](rsync.1#opt) if a single-file copy specifies
   an existing destination dir with a non-existing destination filename.

 - Fixed `--update -vv` to output "is uptodate" instead of "is \ 
newer" messages
   for files that are being skipped due to an identical modify time.  (This was
   a new output quirk in 3.2.3.)

 - When doing an append transfer, the sending side's file must not get shorter
   or it is skipped. Fixes a crash that could occur when the size changes to 0
   in the middle of the send negotiations.

 - When dealing with special files (see [`--specials`](rsync.1#opt)) in an
   alt-dest hierarchy, rsync now checks the non-permission mode bits to ensure
   that the 2 special files are really the same before hard-linking them

 - Fixed a bug where [`--delay-updates`](rsync.1#opt) with stale partial data
   could cause a file to fail to update.

 - Fixed a few places that would output an INFO message with
   [`--info=NAME`](rsync.1#opt) that should only have been output given
   [`--verbose`](rsync.1#opt) or [`--itemize-changes`](rsync.1#opt).

 - Avoid a weird failure if you run a local copy with a (useless)
   [`--rsh`](rsync.1#opt) option that contains a `V` in the command.

 - Fixed a long-standing compression bug where the compression level of the
   first file transferred affected the level for all future files.  Also, the
   per-file compression skipping has apparently never worked, so it is now
   documented as being ineffective.

 - Fixed a truncate error when a `--write-devices` copy wrote a file onto a
   device that was shorter than the device.

 - Made `--write-devices` support both `--checksum` and `--no-whole-file` when
   copying to a device.

 - Improved how the [`--stop-at`](rsync.1#opt), [`--stop-after`](rsync.1#opt),
   and (the deprecated) [`--time-limit`](rsync.1#opt) options check to see if
   the allowed time is over, which should make rsync exit more consistently.

 - Tweak --progress to display "`??:??:??`" when the time-remaining \ 
value is so
   large as to be meaningless.

 - Silence some chmod warnings about symlinks when it looks like we have a
   function to set their permissions but they can't really be set.

 - Fixed a potential issue in git-set-file-times when handling commits with
   high-bit characters in the description & when handling a description that
   might mimick the git raw-commit deliniators.  (See the support dir.)

 - The bundled systemd/rsync.service file now includes `Restart=on-failure`.


 - Use openssl's `-verify_hostname` option in the rsync-ssl script.

 - Added extra info to the "FILENAME exists" output of
   [`--ignore-existing`](rsync.1#opt) when [`--info=skip2`](rsync.1#opt) is
   used.  The skip message becomes "FILENAME exists (INFO)" where the \ 
   one of "type change", "sum change" (requires \ 
   "file change" (based on the quick check), "attr change", \ 
or "uptodate".
   Prior versions only supported `--info=skip1`.

 - Added the [`--fsync`](rsync.1#opt) option (promoted from the patches repo).

 - Added the [`--copy-devices`](rsync.1#opt) option.  Compared to the
   historical version from the rsync-patches repo, this version: properly
   handles `--checksum`; fixes a truncation bug when doing an `--inplace` copy
   onto a longer file; fixes several bugs in the `--itemize` output; and only
   the sending side needs the enhanced rsync for the copy to work.

 - Reduced memory usage for an incremental transfer that has a bunch of small

 - The rsync daemon can now handle a client address with an implied \ 

 - Added support for [`--atimes`](rsync.1#opt) on macOS and fixed a bug where
   it wouldn't work without [`--times`](rsync.1#opt).

 - Rsync can now update the xattrs on a read-only file when your user can
   temporarily add user-write permission to the file. (It always worked for a
   root transfer.)

 - Rsync can now work around an [`--inplace`](rsync.1#opt) update of a file
   that is being refused due to the Linux fs.protected_regular sysctl setting.

 - When [`--chown`](rsync.1#opt), [`--usermap`](rsync.1#opt), or
   [`--groupmap`](rsync.1#opt) is specified, rsync now makes sure that the
   appropriate [`--owner`](rsync.1#opt) and/or [`--group`](rsync.1#opt) options
   are enabled.

 - Added the [`--info=NONREG`](rsync.1#opt) setting to control if rsync should
   warn about non-regular files in the transfer.  This is enabled by default
   (keeping the behavior the same as before), so specifying `--info=nonreg0`
   can be used to turn the warnings off.

 - An optional asm optimization for the rolling checksum from Shark64. Enable
   it with `./configure --enable-roll-asm`.

 - Using `--debug=FILTER` now outputs a caution message if a filter rule
   has trailing whitespace.

 - Transformed rrsync into a python script with improvements:
   - Security has been beefed up.
   - The known rsync options were updated to include recent additions.
   - Make rrsync reject [`--copy-links`](rsync.1#opt) (`-L`),
     [`--copy-dirlinks`](rsync.1#opt) (`-k`), &
     [`--keep-dirlinks`](rsync.1#opt) (`-K`) by default to make it harder to
     exploit any out-of-subdir symlinks.
   - A new rrsync option of [`-munge`](rrsync.1#opt) tells rrsync to always
     enable rsync's [`--munge-links`](rsync.1#opt) option on the server side.
   - A new rrsync option of [`-no-lock`](rrsync.1#opt) disables a new
     single-use locking idiom that is the default when [`-ro`](rrsync.1#opt) is
     not used (useful with [`-munge`](rrsync.1#opt)).
   - A new rrsync option of [`-no-del`](rrsync.1#opt) disables all `--remove*`
     and `--delete*` rsync options on the server side.
   - The log format has been tweaked slightly to add seconds to the timestamp
     and to output the command executed as a tuple (making the args clearer).
   - An rrsync.1 manpage was added (in the support dir with rrsync).

 - Added options to the lsh script to facilitate rrsync testing. (See the
   support dir.)

 - Transformed the atomic-rsync script into a python script and added the
   ability to ignore one or more non-zero exit codes.  By default, it now
   ignores code 24, the file-vanished exit code. (See the support dir.)

 - Transformed the munge-symlinks script into python. (See the support dir.)

 - Improved the rsync-no-vanished script to not join stdout & stderr together.
   (See the support dir.)

 - Work around a glibc bug where lchmod() breaks in a chroot w/o /proc mounted.

 - Try to support a client that sent a remote rsync a wacko stderr file handle
   (such as an older File::RsyncP perl library used by BackupPC).

 - Lots of manpage improvements, including better HTML versions.


 - Give configure the `--with-rrsync` option if you want `make install` to
   install the (now python3) rrsync script and its new manpage.

 - If the rrsync script is installed, its package should be changed to depend
   on python3 and the (suggested but not mandatory) python3 braceexpand lib.

 - When creating a package from a non-release version (w/o a git checkout), the
   packager can elect to create git-version.h and define RSYNC_GITVER to the
   string they want `--version` to output.  (The file is still auto-generated
   using the output of `git describe` when building inside a non-shallow git
   checkout, though.)

 - Renamed configure's `--enable-simd` option to `--enable-roll-simd` and added
   the option `--enable-roll-asm` to use the new asm version of the code.  Both
   are x86_64/amd64 only.

 - Renamed configure's `--enable-asm` option to `--enable-md5-asm` to avoid
   confusion with the asm option for the rolling checksum.  It is also honored
   even when openssl crypto is in use.  This allows: normal MD4 & MD5, normal
   MD4 + asm MD5, openssl MD4 & MD5, or openssl MD4 + asm MD5 depending on the
   configure options selected.

 - Made SIMD & asm configure checks default to "no" on non-Linux \ 
hosts due to
   various reports of problems on NetBSD & macOS hosts.  These were also
   tweaked to allow enabling the feature on a host_cpu of amd64 (was only
   allowed on x86_64 before).

 - Fixed configure to not fail at the SIMD check when cross-compiling.

 - Improved the IPv6 determination in configure.

 - Compile the C files with `-pedantic-errors` (when possible) so that we will
   get warned if a static initialization overflows in the future (among other

 - When linking with an external zlib, rsync renames its `read_buf()` function
   to `read_buf_()` to avoid a symbol clash on an unpatched zlib.

 - Added a SECURITY.md file.
   2022-02-09 12:52:24 by Niclas Rosenvik | Files touched by this commit (1) | Package updated
Log message:
rsync: use pkgsrc zlib
rsync uses its bundled zlib unless
--with-included-zlib is set to no.
bump pkgrevision.
   2022-01-19 21:01:18 by Kimmo Suominen | Files touched by this commit (2)
Log message:
rsync: Add an option for disabling ACL support
   2021-11-30 23:57:02 by Nia Alarie | Files touched by this commit (1)
Log message:
rsync: REPLACE_SH needed on Solaris 10 according to pekdon
   2021-10-26 13:07:15 by Nia Alarie | Files touched by this commit (958)
Log message:
net: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes

Not committed (merge conflicts...):


The following distfiles could not be fetched (fetched conditionally?):

./net/citrix_ica/distinfo citrix_ica-10.6.115659/en.linuxx86.tar.gz
./net/djbdns/distinfo dnscache-1.05-multiple-ip.patch
./net/djbdns/distinfo djbdns-1.05-test28.diff.xz
./net/djbdns/distinfo djbdns-1.05-ignoreip2.patch
./net/djbdns/distinfo djbdns-1.05-multiip.diff
./net/djbdns/distinfo djbdns-cachestats.patch
   2021-10-07 16:43:07 by Nia Alarie | Files touched by this commit (962)
Log message:
net: Remove SHA1 hashes for distfiles
   2021-10-06 10:15:57 by Thomas Klausner | Files touched by this commit (3)
Log message:
rsync: fix CVE-2020-14387 using upstream patch.

   2020-08-07 10:33:37 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
rsync: updated to 3.2.3

NEWS for rsync 3.2.3

Changes in this version:


Fixed a bug in the xattr code that was freeing the wrong object when trying to \ 
cleanup the xattr list.

Fixed a bug in the xattr code that was not leaving room for the \ 
"rsync." prefix in some instances where it needed to be added.

Restored the ability to use ‑‑bwlimit=0 to specify no bandwidth limit. (It \ 
was accidentally broken in 3.2.2.)

Fix a bug when combining ‑‑delete-missing-args with ‑‑no-implied-dirs \ 
& ‑R where rsync might create the destination path of a missing arg. The \ 
code also avoids some superfluous warnings for nested paths of removed args.

Fixed an issue where hard-linked devices could cause the rdev_major value to get \ 
out of sync between the sender and the receiver, which could cause a device to \ 
get created with the wrong major value in its major,minor pair.

Rsync now complains about a missing ‑‑temp-dir before starting any file \ 

A completely empty source arg is now a fatal error. This doesn't change the \ 
handling of implied dot-dir args such as "localhost:" and such.


Allow ‑‑max-alloc=0 to specify no limit to the alloc sanity check.

Allow ‑‑block-size=SIZE to specify the size using units (e.g. "100K").

The name of the id-0 user & group are now sent to the receiver along with \ 
the other user/group names in the transfer (instead of assuming that both sides \ 
have the same id-0 names).

Added the ‑‑stop-after=MINS and ‑‑stop-at=DATE_TIME options (with the \ 
‑‑time-limit=MINS option accepted as an alias for ‑‑stop-after). This is \ 
an enhanced version of the time-limit patch from the patches repo.

Added the name converter daemon parameter to make it easier to convert user \ 
& group names inside a chrooted daemon module. This is based on the \ 
nameconverter patch with some improvements, including a tweak to the request \ 
protocol (so if you used this patch in the past, be sure to update your \ 
converter script to use newlines instead of null chars).

Added ‑‑crtimes (‑N) option for preserving the file's create time (I \ 
believe that this is macOS only at the moment).

Added ‑‑mkpath option to tell rsync that it should create a non-existing \ 
path component of the destination arg.

Added ‑‑stderr=errors|all|client to replace the ‑‑msgs2stderr and \ 
‑‑no-msgs2stderr options (which are still accepted). The default use of \ 
stderr was changed to be ‑‑stderr=errors where all the processes that have \ 
stderr available output directly to stderr, which should help error messages get \ 
to the user more quickly, especially when doing a push (which includes local \ 
copying). This also allows rsync to exit quickly when a receiver failure occurs, \ 
since rsync doesn't need to try to keep the connection alive long enough for the \ 
fatal error to go from the receiver to the generator to the sender. The old \ 
default can be requested via ‑‑stderr=client. Also changed is that a \ 
non-default stderr mode is conveyed to the remote rsync (using the older option \ 
names) instead of requiring the user to use ‑‑remote-option (‑M) to tell \ 
the remote rsync what to do.

Added the ability to specify "@netgroup" names to the hosts allow and \ 
hosts deny daemon parameters. This is a finalized version of the netgroup-auth \ 
patch from the patches repo.

Rsync can now hard-link symlinks on FreeBSD due to it making ues of the linkat() \ 
function when it is available.

Output file+line info on out-of-memory & overflow errors while also avoiding \ 
the output of alternate build-dir path info that is not useful to the user.

Change configure to know that Cygwin supports Linux xattrs.

Improved the testsuite on FreeBSD & Cygwin.

Added some compatibility code for HPE NonStop platforms.

Improved the INSTALL.md info.

Added a few more suffixes to the default skip-compress list.

Improved configure's error handling to notify about several issues at once \ 
instead of one by one (for the newest optional features).


Use a simpler overflow check idiom in a few spots.

Use a C99 Flexible Array for a trailing variable-size filename in a struct (with \ 
a fallback to the old 1-char string kluge for older compilers).