Feature Request: It would be very useful to be able to specify the normal options such as --numeric-ids --owner --group --perms --recursive --existing etc but with --no-transfer or something similar that would allow you to sync the attributes of the files/dirs/etc but not actually transfer anything. (--existing might be implied by --no-transfer, or perhaps not using --existing would transfer missing files only) Reasoning: It would allow for tasks like tightening security on identical systems to be done with a lot more speed. You could go through and painstaikingly adjust permissions on one server and then sync all the other identical servers to match. It would also be useful for cases where you back up an entire server nightly to a backup server which allows access only to a normal user. You can then restore it to a new server from the backup and sync to an existing server to fix the permissions. With the current code I don't expect that it would be that difficult to just skip the file transfer. At the risk of adding bloat, rsync could even create an attributes file that could be stored on the backup server and used to restore the permissions in the event there is no remaining server to sync the perms from. This would allow admins to back up to normal user accounts that can be subject to quota restrictions.
I think this would be best handled by some other application. For instance, it would be simple to write a perl script that would be able to parse the output of "ls -lR" from one system and apply the permissions/ownership/groups to the matching files on another system (skipping those that don't exist).
Created attachment 1575 [details] perl script solution I enjoy coding simple perl scripts like this, so here is a perl script that will parse the output of "ls -lR dir [dir...]" or "ls -nR dir [dir...]" and restore the permissions, owner, and group of all the files it finds. You can feel free to manually edit ls's output to remove unnecessary directories and/or files, and then use the result to apply the listed attrs to another host's files. For instance, assuming the script "file-attr-restore" is somewhere in the $PATH of server "remotehost", this sequence of commands would should update the attrs on remotehost: ls -lR /etc /usr/local/etc >saved-permissions cat saved-permissions | ssh remotehost file-attr-restore