How to set file/folder permissions using Rsync from Windows to Linux

I want to transfer lots of files/folders from Windows to Linux using Rsync. On linux server(destination), I want the file permission set to 644, and folder permission set to 755. If possible, I want the ownership set to root.root for all the files/folders. I have tried -p option, but it doesn't work. Thank you for any help.


Solution 1:

You can set the perms using the --chmod parameter e.g.

--chmod=Du=rwx,Dgo=rx,Fu=rw,Fog=r 

will force the permissions to be set to 755 for Directories and 644 for Files.

Solution 2:

The --chmod argument syntax mentioned in the above is not quite accurate. When you specify owner, group, or other, and don't precede it with a "D" or a "F", it will apply that to all types of files, and it will apply the last parameter it finds as the default. This would explain why your directories were coming out as 744, since the last parameter in the argument was og=r.

Try this instead:

--chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r