88

Let's say I have a file a.txt in LINUX with permission of 0664. When I use rsync to copy the file to my Mac with rsync -r -t -v LINUX MAC, the file's permission becomes 0644.

How can I keep the permission for a file when using rsync? The -g option doesn't work.

prosseek
  • 8,558

1 Answers1

118

You want the -p flag:

    -p, --perms                 preserve permissions

I tend to always use the -a flag, which is an aggregation of -p and several other useful ones:

    -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

Both taken straight from the rsync manpage.

jmtd
  • 9,305
  • 1
    Thanks for the answer, but I got some errors with -a/-p option - http://unix.stackexchange.com/questions/12203/rsync-failed-to-set-permissions-on-error-with-rsync – prosseek Apr 28 '11 at 14:58
  • 6
    But does it preserve the permissions if the destination machine does not have a username equaling the one who owns the files on the source? (e.g. I have vmail user on source but not on target, does it preserve the username when restoring to source?) – W.M. Apr 22 '19 at 09:20
  • 6
    @W.M. it's been a few years since you asked the question, but I found that the rsync -a switch also includes performs the "preserve owner" and "preserve group" options, which requires super-user. Also, you may want to consider --numeric-ids which won't map username/groupname – ray_voelker Sep 04 '21 at 21:24
  • Make it an answer, @ray_voelker! :) – bomben Oct 03 '21 at 15:53