Arvid Requate
2014-Jan-15 16:45 UTC
rsync -a --update resets status of newer target directories
Hi, this is a question regarding the behavior of the --update option for the recursive replication of directories. rsync 3.0.7-2 shows the following behavior on a Debian squeeze system (ext4): After running the following commands the adjusted ownership of the subdirectory /tmp/dst/sub below the target directory is overwritten and its newer modification time is reset to that of the older corresponding source directory: #################### mkdir -p /tmp/src/sub rsync -auAX /tmp/src/ /tmp/dst # now adjust target and update it's mtime chown nobody /tmp/dst/sub touch /tmp/dst/sub # mtime and ownership gets reset to root during next rsync: rsync -auAX /tmp/src/ /tmp/dst #################### This cought me by surprise, as I expected the --update option to cause rsync to consider the modification timestamp of the target subdir as newer and skip it. This works for files, but doesn't seem to apply to directories. Is this behavior intended? If so, is there a combination of options or a workaround to avoid changing the status of the target subdirectory (while still synchronizing its content)? Cheers, Arvid -- Arvid Requate Open Source Software Engineer Univention GmbH
Matthias Schniedermeyer
2014-Jan-15 17:18 UTC
rsync -a --update resets status of newer target directories
On 15.01.2014 17:45, Arvid Requate wrote:> Hi, > > this is a question regarding the behavior of the --update option for the > recursive replication of directories. rsync 3.0.7-2 shows the following > behavior on a Debian squeeze system (ext4): > > After running the following commands the adjusted ownership of the > subdirectory /tmp/dst/sub below the target directory is overwritten and its > newer modification time is reset to that of the older corresponding source > directory: > > #################### > mkdir -p /tmp/src/sub > rsync -auAX /tmp/src/ /tmp/dst > > # now adjust target and update it's mtime > chown nobody /tmp/dst/sub > touch /tmp/dst/sub > > # mtime and ownership gets reset to root during next rsync: > rsync -auAX /tmp/src/ /tmp/dst > #################### > > This cought me by surprise, as I expected the --update option to cause rsync > to consider the modification timestamp of the target subdir as newer and skip > it. This works for files, but doesn't seem to apply to directories. > > Is this behavior intended? If so, is there a combination of options or a > workaround to avoid changing the status of the target subdirectory (while > still synchronizing its content)?As rsync is a tool for unidirectional(!) synchronization of differences between file-trees. I would think: Yes. That is intended behaviour. I don't seen an option to only exclude directories if newer, but there is an option to ignore directory-times completely: --omit-dir-times -- Matthias