I'd like an option "--acl" that transfers ACLs if both filesystems support them. POSIX ACLs are improved file permissions. ACLs can grant access to users and groups other than the owners of a file, and they can specify default permissions for new files in a folder that take the place of the `umask'. This option should be a matter of getting the ACL on one system using "acl_get_file" and "acl_copy_ext", sending it to the other system, and applying it using "acl_copy_int" and "acl_set_file". It would take a little more work to preserve IDs by name and make this play nicely with "--numeric-ids". The "-a" option should probably include "--acl".
There is the acls.diff file in the patches directory that implements the --acls option. Feel free to give it a try. In the future, support for ACLs will hopefully make it into the main release.
in 2.6.5 the acls.diff does not work. It seems to apply cleanly, but rsync doesn't compile: In file included from rsync.h:679, from rsync.c:23: proto.h:270: error: syntax error before "UNUSED" proto.h:366: error: syntax error before '(' token proto.h:366: error: conflicting types for 'UNUSED' proto.h:366: error: previous declaration of 'UNUSED' was here proto.h:366: error: conflicting types for 'UNUSED' proto.h:366: error: previous declaration of 'UNUSED' was here proto.h:366: error: syntax error before ')' token proto.h:367: error: syntax error before '(' token proto.h:367: error: conflicting types for 'UNUSED' ... etc.
The acls.diff patch included with 2.6.5 builds fine. I assume you neglected to use the -p0 option when using patch. The two new sysacls.[ch] files must be put in the lib dir for things to build correctly (including the building of the proto.h file), and failing to use -p0 causes all the new files to be extracted to the current directory.
Since the ACL support has been added to the main version of rsync in CVS, I consider this fixed.