Why does "rsync -av" always claim (incorrectly?) that it is updating write protected directories?

Matthew Bostrom mb at mb.mbostrom.us
Thu Mar 3 20:32:39 GMT 2005


Hi,

	I usually run "rsync -av" so I can see all the files that have
been modified.

	However, "rsync -av" always claims to be updating write
protected directories, even when they have not been changed.  I do not
understand why.

	Here is an example using rsync version 2.6.3 on FreeBSD 5.3.
I get similar results with rsync 2.6.0 on Gentoo Linux.

--------
$ mkdir dir0
$ touch dir0/file
$ rsync -av dir0 dir1
building file list ... done
created directory dir1
dir0/
dir0/file

sent 127 bytes  received 40 bytes  334.00 bytes/sec
total size is 0  speedup is 0.00
--------

	So I have created dir0 and rsynced it to inside of dir1.  This
is all okay.

--------
$ rsync -av dir0 dir1
building file list ... done

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
--------

	I have rsynced it again.  rsync shows that no files have
changed.  This is all okay.

--------
$ ls -l dir1
total 2
drwxr-xr-x  2 parke  parke  512 Mar  3 12:06 dir0
$ chmod -w dir0
$ rsync -av dir0 dir1
building file list ... done

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
$ ls -l dir1
total 2
dr-xr-xr-x  2 parke  parke  512 Mar  3 12:06 dir0
--------

	We see that dir1/dir0 is writable.  I "chmod -w dir0".  Then I
"rsync -av" and rsync does not report that it has changed any files.
However, we can see that dir1/dir0 is no longer writable.  So rsync
did change the permissions on dir1/dir0 (as it should have), it just
did not report that it changed the permissions.  Why not?

--------
$ rsync -av dir0 dir1
building file list ... done
dir0/

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
--------

	I rsync again.  This time rsync claims that it is changing
"dir0/".  However, as far as I can tell, rsync is NOT changing
anything.  What am I missing here?

--------
$ rsync -av dir0 dir1
building file list ... done
dir0/

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
--------

	We can repeat the "rsync -av" as many times as we want.  rsync
will now always claim (incorrectly?) that it is modifying "dir0/".
Why?

--------
$ chmod u+w dir0
$ rsync -av dir0 dir1
building file list ... done
dir0/

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
--------

	I make dir0 writable again.  I rsync.  rsync makes dir1/dir0
writable, as it should.  rsync reports that it has changed "dir0/", as
it should.  Everything is okay here.

--------
$ rsync -av dir0 dir1
building file list ... done

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
$ rsync -av dir0 dir1
building file list ... done

sent 87 bytes  received 20 bytes  214.00 bytes/sec
total size is 0  speedup is 0.00
--------

	Two more rsyncs with nothing to change and no changes
reported.  This is okay.


	So... to summarize: When I "rsync -av" write protected
directories, rsync always (and incorrectly?) claims that it is
changing those directories, even thought, as far as I can tell, rsync
is not changing the directories.
	Is this a bug?  Is there something I do not understand?

	Thanks!

	Matthew.
______________________________________________________________________
                                                     mb at mb.mbostrom.us



More information about the rsync mailing list