Life is Rich All the time.

Building a Robust, Modern, Mac-friendly rsync

11 Jan 2014

I use rsync extensively. It's my tool of choice for moving files between both local and remote computers. While the mac ships with an rsync, it's nearly always old and outdated. With Mavericks, the currently shipped version is 2.6.9, protocol version 29 — and does not include full support for ACLs and xattrs (at least they are not listed in the current capabilities list).

The following installs a modern (3.0.8) variant with patches to support the Mac file system:

curl -O http://rsync.samba.org/ftp/rsync/src/rsync-3.0.8.tar.gz
tar -xzvf rsync-3.0.8.tar.gz
rm rsync-3.0.8.tar.gz
curl -O http://rsync.samba.org/ftp/rsync/src/rsync-patches-3.0.8.tar.gz
tar -xzvf rsync-patches-3.0.8.tar.gz
rm rsync-patches-3.0.8.tar.gz
cd rsync-3.0.8
patch -p1 <patches/fileflags.diff
patch -p1 <patches/crtimes.diff
patch -p1 <patches/hfs-compression.diff
./prepare-source
./configure --prefix /usr/local --disable-debug --enable-ipv6
make
sudo make install


Once installed, adjust your path or call it explicitly. You will need to install this version on both source and destination Macs if working between two computers. To ensure rsync uses the correct version of rsync on the destination, you can call rsync with the --rsync-path parameter:

/usr/local/bin/rsync --rsync-path=/usr/local/bin/rsync source dest