When you rsync a directory, say `$rsync mydir/ ...` with the trailing slash, the destination directory is changed to the ownership, permissions and timestamp of `mydir`. Consider this simple example $ mkdir test $ cd test $ mkdir a b $ touch -d '01 jan 1980' a/A $ touch -d '15 jun 1985' a $ touch -d '02 feb 1990' b/B $ touch -d '25 aug 1995' b $ mkdir c Note the directory 'c' timestamp: $ ls -ld c drwxr-xr-x 2 john users 4096 Jan 7 20:50 c Now, rsync: $ rsync -a a/ b/ c $ ls -ld c drwxr-xr-x 2 john users 4096 Jun 15 1985 c The directory 'c' now has the timestamp of the file 'a' Furthermore, if the copy is done with root, the ownership and permissions of the file are also propagated to the directory. Note the destination directory gains the properties of the first source directory with a trailing slash. I am using: rsync version 3.1.2 protocol version 31 Linux 4.8.13-1-ARCH #1 SMP PREEMPT Fri Dec 9 07:24:34 CET 2016 x86_64 GNU/Linux Am I using it correctly, or is this a bug or is it expected behaviour ?
Paul Slootman
2017-Jan-20 10:36 UTC
Ownership and permissions when syncing directory contents
On Fri 20 Jan 2017, John Lane wrote:> > When you rsync a directory, say `$rsync mydir/ ...` with the trailing > slash, the destination directory is changed to the ownership, > permissions and timestamp of `mydir`.> $ rsync -a a/ b/ c > $ ls -ld c > drwxr-xr-x 2 john users 4096 Jun 15 1985 c > > The directory 'c' now has the timestamp of the file 'a' > > Furthermore, if the copy is done with root, the ownership and > permissions of the file are also propagated to the directory. Note the > destination directory gains the properties of the first source directory > with a trailing slash.That is as documented. You are requesting that the directory is synced to c, preserving all attributes (due to -a) so rsync does that. Paul
> > That is as documented. You are requesting that the directory is synced > to c, preserving all attributes (due to -a) so rsync does that. >Ah... the attributes of the containing directory are transferred to the containing directory on the destination. I read that but failed to absorb it. I guess it could clarify that, where there are multiple source directories, it's the FIRST containing directory's attributes that are transferred. But thanks, that explains it.