-H option causes unneccessary transfers

Albert Berger nbdspcl at gmail.com
Mon Mar 28 12:44:32 UTC 2016

On Mon, Mar 28, 2016 at 08:11:07AM -0400, Kevin Korb wrote:
> Hash: SHA1
> What does --itemize-changes say about these files?
> Also, what is --atimes?  Is this the Apple modified rsync for OSX?
> On 03/28/2016 07:51 AM, Albert Berger wrote:
> > Greetings,
> > 
> > when the daily system backup with rsync is performed, thousands of
> > files (e.g. from /usr directory), which are not modified are
> > uselessly transferrred to the backup storage every day. The rsync
> > command is the following:
> > 
> > rsync --update -DHAErlptgo --relative --atimes --delete-during
> > 
> > Quick investigation shown, that these files are hard links, and the
> > command option related to this behaviour is -H: without it the
> > unmodified files are not copied. Seemingly this situation is
> > described in the rsync manual:
> > 
> > "If  incremental recursion is active (see --recursive), rsync may
> > transfer a missing hard-linked file before it finds that another
> > link for that contents  exists  else‐ where  in  the  hierarchy....
> > One way to avoid this inefficiency  is  to  disable incremental
> > recursion  using the --no-inc-recursive option."
> > 
> > Adding --no-inc-recursive to the aforementioned command line
> > doesn't help (are --recursive and --no-inc-recursive supposed to be
> > used in one option set?). And I use --recursive to copy entire 
> > directory tree, including subdirectories. Could someone advise
> > please how one can prevent copying unmodified hard-linked files?
> > 
> > Thanks, A. Berger.
> > 

As an example of copying hard-linked files, the /usr/bin contains the following 
two hard-linked sets for two inodes:

inode 1:

inode 2:

Below is the --itemized-changes output for those two sets which is produced when 
/usr/bin doesn't have any modifications and is synced with the aforementioned command 
to its backup copy:

hf......u.. /usr/bin/ld.bfd
hf......u.. /usr/bin/i686-pc-linux-gnu-c++
hf......u.. /usr/bin/i686-pc-linux-gnu-g++
hf......u.. /usr/bin/g++

As can bee seen, one file in each set is not listed at all, and all other hard-linked 
files are marked for updating. Is this behaviour normal?

--atimes is an option for preserving access times. This option is added by patching 
rsync source with a patch from rsync-patches-3.1.1.tar.gz file from rsync download page. 

The system is ArchLinux, kernel 4.4.5.


More information about the rsync mailing list